From cd0b49c72aee33b3e44a9c589fcd93b9e1c7a64f Mon Sep 17 00:00:00 2001 From: Sean Finney Date: Fri, 10 Apr 2009 14:09:48 +0200 Subject: Imported Upstream version 5.2.9.dfsg.1 --- ext/bcmath/bcmath.c | 4 +- ext/bcmath/php_bcmath.h | 4 +- ext/bz2/bz2.c | 5 +- ext/bz2/bz2_filter.c | 62 +- ext/bz2/php_bz2.h | 4 +- ext/calendar/cal_unix.c | 2 +- ext/calendar/calendar.c | 4 +- ext/calendar/easter.c | 2 +- ext/com_dotnet/com_com.c | 4 +- ext/com_dotnet/com_dotnet.c | 4 +- ext/com_dotnet/com_extension.c | 4 +- ext/com_dotnet/com_handlers.c | 4 +- ext/com_dotnet/com_iterator.c | 4 +- ext/com_dotnet/com_misc.c | 4 +- ext/com_dotnet/com_olechar.c | 4 +- ext/com_dotnet/com_persist.c | 4 +- ext/com_dotnet/com_saproxy.c | 4 +- ext/com_dotnet/com_typeinfo.c | 4 +- ext/com_dotnet/com_variant.c | 4 +- ext/com_dotnet/com_wrapper.c | 4 +- ext/com_dotnet/php_com_dotnet.h | 4 +- ext/com_dotnet/php_com_dotnet_internal.h | 4 +- ext/ctype/ctype.c | 2 +- ext/ctype/php_ctype.h | 2 +- ext/curl/config.m4 | 4 +- ext/curl/interface.c | 81 +- ext/curl/multi.c | 4 +- ext/curl/php_curl.h | 6 +- ext/curl/streams.c | 4 +- ext/curl/tests/bug45161.phpt | 36 + ext/curl/tests/bug46739.phpt | 13 + ext/date/lib/astro.c | 4 +- ext/date/lib/dow.c | 4 +- ext/date/lib/parse_date.c | 36413 +++++++++--------- ext/date/lib/parse_date.c.orig | 36557 ++++++++++--------- ext/date/lib/parse_date.re | 21 +- ext/date/lib/parse_tz.c | 78 +- ext/date/lib/timelib.c | 4 +- ext/date/lib/timelib.h | 5 +- ext/date/lib/timelib_structs.h | 6 +- ext/date/lib/timezonedb.h | 6063 +-- ext/date/lib/tm2unixtime.c | 57 +- ext/date/lib/unixtime2tm.c | 20 +- ext/date/php_date.c | 61 +- ext/date/php_date.h | 4 +- ext/date/tests/bug43452.phpt | 71 + ext/date/tests/bug46268.phpt | 23 + .../tests/date_default_timezone_get_error.phpt | 27 + .../tests/date_default_timezone_set_error.phpt | 41 + .../date_default_timezone_set_variation1.phpt | 200 + ext/date/tests/date_parse_001.phpt | 4 +- ext/date/tests/date_sun_info_error.phpt | 46 + ext/date/tests/date_sun_info_variation1.phpt | 491 + ext/date/tests/date_sun_info_variation2.phpt | 492 + ext/date/tests/date_sun_info_variation3.phpt | 493 + ext/date/tests/date_sunrise_and_sunset_basic.phpt | 28 + ext/date/tests/date_sunrise_error.phpt | 41 + ext/date/tests/date_sunrise_variation1.phpt | 315 + ext/date/tests/date_sunrise_variation2.phpt | 212 + ext/date/tests/date_sunrise_variation3.phpt | 294 + ext/date/tests/date_sunrise_variation4.phpt | 296 + ext/date/tests/date_sunrise_variation5.phpt | 296 + ext/date/tests/date_sunrise_variation6.phpt | 295 + ext/date/tests/date_sunrise_variation7.phpt | 57 + ext/date/tests/date_sunrise_variation8.phpt | 73 + ext/date/tests/date_sunrise_variation9.phpt | 47 + ext/date/tests/date_sunset_error.phpt | 50 + ext/date/tests/date_sunset_variation1.phpt | 316 + ext/date/tests/date_sunset_variation2.phpt | 211 + ext/date/tests/date_sunset_variation3.phpt | 297 + ext/date/tests/date_sunset_variation4.phpt | 296 + ext/date/tests/date_sunset_variation5.phpt | 296 + ext/date/tests/date_sunset_variation6.phpt | 296 + ext/date/tests/date_sunset_variation7.phpt | 75 + ext/date/tests/date_sunset_variation8.phpt | 55 + ext/date/tests/date_sunset_variation9.phpt | 47 + ext/date/tests/getdate_basic.phpt | 76 + ext/date/tests/getdate_error.phpt | 31 + ext/date/tests/getdate_variation1.phpt | 444 + ext/date/tests/getdate_variation2.phpt | 114 + ext/date/tests/getdate_variation3.phpt | 114 + ext/date/tests/getdate_variation4.phpt | 141 + ext/date/tests/getdate_variation5.phpt | 223 + ext/date/tests/getdate_variation6.phpt | 109 + ext/date/tests/getdate_variation7.phpt | 78 + ext/date/tests/gettimeofday_basic.phpt | 55 + ext/date/tests/gettimeofday_error.phpt | 29 + ext/date/tests/gettimeofday_variation1.phpt | 284 + ext/date/tests/gmdate_basic.phpt | 30 + ext/date/tests/gmdate_error.phpt | 41 + ext/date/tests/gmdate_variation1.phpt | 221 + ext/date/tests/gmdate_variation10.phpt | 69 + ext/date/tests/gmdate_variation11.phpt | 45 + ext/date/tests/gmdate_variation12.phpt | 48 + ext/date/tests/gmdate_variation13.phpt | 82 + ext/date/tests/gmdate_variation14.phpt | 34 + ext/date/tests/gmdate_variation2.phpt | 210 + ext/date/tests/gmdate_variation3.phpt | 59 + ext/date/tests/gmdate_variation4.phpt | 45 + ext/date/tests/gmdate_variation5.phpt | 29 + ext/date/tests/gmdate_variation6.phpt | 61 + ext/date/tests/gmdate_variation7.phpt | 60 + ext/date/tests/gmdate_variation8.phpt | 60 + ext/date/tests/gmdate_variation9.phpt | 81 + ext/date/tests/gmmktime_basic.phpt | 35 + ext/date/tests/gmmktime_error.phpt | 39 + ext/date/tests/gmmktime_variation1.phpt | 194 + ext/date/tests/gmmktime_variation2.phpt | 194 + ext/date/tests/gmmktime_variation3.phpt | 194 + ext/date/tests/gmmktime_variation4.phpt | 194 + ext/date/tests/gmmktime_variation5.phpt | 194 + ext/date/tests/gmmktime_variation6.phpt | 190 + ext/date/tests/gmmktime_variation7.phpt | 54 + ext/date/tests/gmmktime_variation8.phpt | 44 + ext/date/tests/gmmktime_variation9.phpt | 62 + ext/date/tests/gmstrftime_basic.phpt | 29 + ext/date/tests/gmstrftime_error.phpt | 38 + ext/date/tests/gmstrftime_variation1.phpt | 220 + ext/date/tests/gmstrftime_variation10.phpt | 50 + ext/date/tests/gmstrftime_variation11.phpt | 37 + ext/date/tests/gmstrftime_variation12.phpt | 37 + ext/date/tests/gmstrftime_variation13.phpt | 60 + ext/date/tests/gmstrftime_variation14.phpt | 60 + ext/date/tests/gmstrftime_variation15.phpt | 55 + ext/date/tests/gmstrftime_variation16.phpt | 55 + ext/date/tests/gmstrftime_variation17.phpt | 37 + ext/date/tests/gmstrftime_variation18.phpt | 37 + ext/date/tests/gmstrftime_variation19.phpt | 50 + ext/date/tests/gmstrftime_variation2.phpt | 202 + ext/date/tests/gmstrftime_variation20.phpt | 52 + ext/date/tests/gmstrftime_variation21.phpt | 55 + ext/date/tests/gmstrftime_variation22.phpt | 55 + ext/date/tests/gmstrftime_variation3.phpt | 52 + ext/date/tests/gmstrftime_variation4.phpt | 47 + ext/date/tests/gmstrftime_variation5.phpt | 51 + ext/date/tests/gmstrftime_variation6.phpt | 59 + ext/date/tests/gmstrftime_variation7.phpt | 49 + ext/date/tests/gmstrftime_variation8.phpt | 39 + ext/date/tests/gmstrftime_variation9.phpt | 50 + ext/date/tests/idate_basic.phpt | 24 + ext/date/tests/idate_variation1.phpt | 301 + ext/date/tests/idate_variation2.phpt | 191 + ext/date/tests/idate_variation3.phpt | 35 + ext/date/tests/idate_variation4.phpt | 66 + ext/date/tests/idate_variation5.phpt | 62 + ext/date/tests/idate_variation6.phpt | 34 + ext/date/tests/localtime_basic.phpt | 93 + ext/date/tests/localtime_variation1.phpt | 658 + ext/date/tests/localtime_variation2.phpt | 643 + ext/date/tests/localtime_variation3.phpt | 116 + ext/date/tests/localtime_variation4.phpt | 162 + ext/date/tests/localtime_variation5.phpt | 162 + ext/date/tests/microtime_basic.phpt | 20 + ext/date/tests/microtime_error.phpt | 72 + ext/date/tests/mktime-3-64bit.phpt | 10 +- ext/date/tests/mktime-3.phpt | 7 +- ext/date/tests/strftime_basic.phpt | 30 + ext/date/tests/strftime_error.phpt | 30 + ext/date/tests/strftime_variation1.phpt | 222 + ext/date/tests/strftime_variation10.phpt | 50 + ext/date/tests/strftime_variation11.phpt | 37 + ext/date/tests/strftime_variation12.phpt | 37 + ext/date/tests/strftime_variation13.phpt | 60 + ext/date/tests/strftime_variation14.phpt | 60 + ext/date/tests/strftime_variation15.phpt | 55 + ext/date/tests/strftime_variation16.phpt | 55 + ext/date/tests/strftime_variation17.phpt | 36 + ext/date/tests/strftime_variation18.phpt | 36 + ext/date/tests/strftime_variation19.phpt | 50 + ext/date/tests/strftime_variation2.phpt | 191 + ext/date/tests/strftime_variation20.phpt | 52 + ext/date/tests/strftime_variation21.phpt | 55 + ext/date/tests/strftime_variation22.phpt | 55 + ext/date/tests/strftime_variation23.phpt | 36 + ext/date/tests/strftime_variation3.phpt | 52 + ext/date/tests/strftime_variation4.phpt | 48 + ext/date/tests/strftime_variation5.phpt | 50 + ext/date/tests/strftime_variation6.phpt | 60 + ext/date/tests/strftime_variation7.phpt | 50 + ext/date/tests/strftime_variation8.phpt | 31 + ext/date/tests/strftime_variation9.phpt | 50 + ext/date/tests/strtotime_basic.phpt | 47 + ext/date/tests/time_basic.phpt | 16 + ext/date/tests/time_error.phpt | 20 + ext/dba/dba.c | 6 +- ext/dba/dba_cdb.c | 4 +- ext/dba/dba_db1.c | 394 +- ext/dba/dba_db2.c | 4 +- ext/dba/dba_db3.c | 4 +- ext/dba/dba_db4.c | 15 +- ext/dba/dba_dbm.c | 4 +- ext/dba/dba_flatfile.c | 4 +- ext/dba/dba_gdbm.c | 4 +- ext/dba/dba_inifile.c | 4 +- ext/dba/dba_ndbm.c | 4 +- ext/dba/dba_qdbm.c | 4 +- ext/dba/libcdb/cdb.c | 6 +- ext/dba/libcdb/cdb.h | 4 +- ext/dba/libcdb/cdb_make.c | 6 +- ext/dba/libcdb/cdb_make.h | 4 +- ext/dba/libcdb/uint32.c | 4 +- ext/dba/libcdb/uint32.h | 4 +- ext/dba/libflatfile/flatfile.c | 6 +- ext/dba/libflatfile/flatfile.h | 4 +- ext/dba/libinifile/inifile.c | 10 +- ext/dba/libinifile/inifile.h | 4 +- ext/dba/php_dba.h | 4 +- ext/dba/tests/dba_db4.phpt | 18 +- ext/dom/attr.c | 4 +- ext/dom/cdatasection.c | 6 +- ext/dom/characterdata.c | 4 +- ext/dom/comment.c | 6 +- ext/dom/document.c | 8 +- ext/dom/documentfragment.c | 6 +- ext/dom/documenttype.c | 4 +- ext/dom/dom_ce.h | 4 +- ext/dom/dom_fe.h | 4 +- ext/dom/dom_iterators.c | 4 +- ext/dom/dom_properties.h | 4 +- ext/dom/domconfiguration.c | 8 +- ext/dom/domerror.c | 4 +- ext/dom/domerrorhandler.c | 4 +- ext/dom/domexception.c | 4 +- ext/dom/domimplementation.c | 4 +- ext/dom/domimplementationlist.c | 4 +- ext/dom/domimplementationsource.c | 4 +- ext/dom/domlocator.c | 4 +- ext/dom/domstringlist.c | 4 +- ext/dom/element.c | 12 +- ext/dom/entity.c | 4 +- ext/dom/entityreference.c | 4 +- ext/dom/namednodemap.c | 4 +- ext/dom/namelist.c | 4 +- ext/dom/node.c | 6 +- ext/dom/nodelist.c | 4 +- ext/dom/notation.c | 4 +- ext/dom/php_dom.c | 6 +- ext/dom/php_dom.h | 4 +- ext/dom/processinginstruction.c | 6 +- ext/dom/string_extend.c | 4 +- .../tests/DOMCharacterData_appendData_basic.phpt | 35 + ext/dom/tests/DOMComment_appendData_basic.phpt | 21 + .../DOMComment_appendData_basic_Sullivan.phpt | 37 + ext/dom/tests/DOMComment_insertData_basic.phpt | 21 + ext/dom/tests/DOMComment_insertData_error1.phpt | 24 + ext/dom/tests/DOMComment_insertData_error2.phpt | 24 + ext/dom/tests/DOMComment_replaceData_basic.phpt | 29 + ext/dom/tests/DOMComment_replaceData_error1.phpt | 24 + ext/dom/tests/DOMComment_replaceData_error2.phpt | 24 + ...mentFragment_appendXML_hasChildNodes_basic.phpt | 23 + .../tests/DOMDocument_createAttribute_basic.phpt | 26 + .../tests/DOMDocument_createAttribute_error.phpt | 27 + .../tests/DOMDocument_createAttribute_error1.phpt | 29 + .../DOMDocument_createAttribute_variation.phpt | 14 + ...Document_createProcessingInstruction_basic.phpt | 30 + ...Document_createProcessingInstruction_error.phpt | 31 + ext/dom/tests/DOMDocument_loadHTML_basic.phpt | 18 + ext/dom/tests/DOMDocument_save_basic.phpt | 33 + ext/dom/tests/DOMElement_hasAttributes_basic.phpt | 51 + ext/dom/tests/DOMNode_cloneNode_basic.phpt | 111 + ext/dom/tests/DOMNode_hasChildNodes_basic.phpt | 43 + ext/dom/tests/DOMNode_issamenode_basic.phpt | 37 + ext/dom/tests/DOMNode_normalize_basic.phpt | 64 + ext/dom/tests/DOMNode_removeChild_basic.phpt | 113 + ext/dom/tests/DOMNode_replaceChild_basic.phpt | 44 + ext/dom/tests/DOMText_appendData_basic.phpt | 35 + ext/dom/tests/bug34276.phpt | 2 +- ext/dom/tests/bug35342.phpt | 2 +- ext/dom/tests/bug42082.phpt | 4 +- ext/dom/tests/bug45251.phpt | 30 + ext/dom/tests/bug46335.phpt | 35 + ext/dom/tests/dom_comment_basic.phpt | 46 + ext/dom/tests/dom_comment_variation.phpt | 33 + ext/dom/text.c | 14 +- ext/dom/typeinfo.c | 4 +- ext/dom/userdatahandler.c | 4 +- ext/dom/xml_common.h | 4 +- ext/dom/xpath.c | 4 +- ext/exif/exif.c | 26 +- ext/exif/php_exif.h | 4 +- ext/exif/tests/exif007.phpt | 39 + ext/exif/tests/exif008.phpt | 65 + ext/exif/tests/exif009.phpt | 65 + ext/exif/tests/exif010.phpt | 91 + ext/exif/tests/exif011.phpt | 91 + ext/exif/tests/exif012.phpt | Bin 0 -> 2003 bytes ext/exif/tests/exif013.phpt | Bin 0 -> 2006 bytes ext/exif/tests/exif014.phpt | Bin 0 -> 2515 bytes ext/exif/tests/exif015.phpt | Bin 0 -> 2518 bytes ext/exif/tests/exif016.phpt | 1622 + ext/exif/tests/exif017.phpt | 1622 + ext/exif/tests/exif018.phpt | 1646 + ext/exif/tests/exif020.phpt | 1659 + ext/exif/tests/exif021.phpt | 1659 + ext/exif/tests/exif022.phpt | 1683 + ext/exif/tests/exif023.phpt | 1683 + ext/exif/tests/exif024.phpt | 55 + ext/exif/tests/exif025.phpt | 55 + ext/exif/tests/exif026.phpt | 1632 + ext/exif/tests/exif027.phpt | 1632 + ext/exif/tests/exif_imagetype_basic.phpt | 23 + ext/exif/tests/exif_imagetype_error.phpt | 45 + ext/exif/tests/exif_imagetype_variation1.phpt | 224 + ext/exif/tests/exif_read_exif_data_basic.phpt | 62 + ext/exif/tests/exif_tagname_basic.phpt | 29 + ext/exif/tests/exif_tagname_error.phpt | 36 + ext/exif/tests/exif_tagname_variation1.phpt | 164 + ext/exif/tests/image007.jpg | Bin 0 -> 283 bytes ext/exif/tests/image008.jpg | Bin 0 -> 527 bytes ext/exif/tests/image009.jpg | Bin 0 -> 527 bytes ext/exif/tests/image010.jpg | Bin 0 -> 741 bytes ext/exif/tests/image011.jpg | Bin 0 -> 741 bytes ext/exif/tests/image012.jpg | Bin 0 -> 721 bytes ext/exif/tests/image013.jpg | Bin 0 -> 721 bytes ext/exif/tests/image014.jpg | Bin 0 -> 935 bytes ext/exif/tests/image015.jpg | Bin 0 -> 935 bytes ext/exif/tests/image016.tiff | Bin 0 -> 1874 bytes ext/exif/tests/image017.tiff | Bin 0 -> 1874 bytes ext/exif/tests/image018.tiff | Bin 0 -> 2088 bytes ext/exif/tests/image020.tiff | Bin 0 -> 2068 bytes ext/exif/tests/image021.tiff | Bin 0 -> 2068 bytes ext/exif/tests/image022.tiff | Bin 0 -> 2282 bytes ext/exif/tests/image023.tiff | Bin 0 -> 2282 bytes ext/exif/tests/image024.jpg | Bin 0 -> 417 bytes ext/exif/tests/image025.jpg | Bin 0 -> 417 bytes ext/exif/tests/image026.tiff | Bin 0 -> 1984 bytes ext/exif/tests/image027.tiff | Bin 0 -> 1984 bytes ext/fbsql/php_fbsql.c | 4 +- ext/fbsql/php_fbsql.h | 4 +- ext/fdf/fdf.c | 4 +- ext/fdf/php_fdf.h | 4 +- ext/filter/callback_filter.c | 4 +- ext/filter/filter.c | 8 +- ext/filter/filter_private.h | 4 +- ext/filter/logical_filters.c | 23 +- ext/filter/php_filter.h | 4 +- ext/filter/sanitizing_filters.c | 4 +- ext/filter/tests/016.phpt | 8 +- ext/filter/tests/bug42718-2.phpt | 20 + ext/filter/tests/bug42718.phpt | 23 + ext/filter/tests/bug46973.phpt | 14 + ext/ftp/ftp.c | 4 +- ext/ftp/ftp.h | 4 +- ext/ftp/php_ftp.c | 4 +- ext/ftp/php_ftp.h | 4 +- ext/ftp/tests/ftp_fget_basic.phpt | 43 + ext/ftp/tests/ftp_get_basic.phpt | 40 + ext/ftp/tests/ftp_mdtm_basic.phpt | 48 + ext/ftp/tests/server.inc | 44 +- ext/gd/gd.c | 23 +- ext/gd/gd_ctx.c | 4 +- ext/gd/libgd/gd.c | 3 +- ext/gd/libgd/gd_png.c | 7 +- ext/gd/libgd/xbm.c | 4 +- ext/gd/php_gd.h | 4 +- ext/gd/tests/gd_info_error.phpt | 38 + ext/gd/tests/gd_info_variation1.phpt | 50 + ext/gd/tests/image_type_to_mime_type_error.phpt | 35 + .../tests/image_type_to_mime_type_variation1.phpt | 138 + .../tests/image_type_to_mime_type_variation2.phpt | 80 + .../tests/image_type_to_mime_type_variation3.phpt | 76 + .../tests/image_type_to_mime_type_variation4.phpt | 23 + ext/gd/tests/imagecolorallocate_basic.phpt | 35 + ext/gd/tests/imagecolorallocate_error.phpt | 51 + ext/gd/tests/imagecolorallocate_variation1.phpt | 267 + ext/gd/tests/imagecolorallocate_variation2.phpt | 192 + ext/gd/tests/imagecolorallocate_variation3.phpt | 192 + ext/gd/tests/imagecolorallocate_variation4.phpt | 191 + ext/gd/tests/imagecolorallocate_variation5.phpt | 90 + ext/gd/tests/imagecolorallocate_variation6.phpt | 56 + ext/gd/tests/imagecolorstotal_basic.phpt | 36 + ext/gd/tests/imagecolorstotal_error.phpt | 54 + ext/gd/tests/imageloadfont_invalid.phpt | 26 + ext/gd/tests/imagerotate_overflow.phpt | 32 + ext/gd/tests/php.gif | Bin 0 -> 2523 bytes ext/gettext/gettext.c | 211 +- ext/gettext/php_gettext.h | 4 +- ext/gettext/tests/44938.phpt | 85 + ext/gettext/tests/dcngettext.phpt | 2 +- ext/gmp/gmp.c | 2 +- ext/gmp/php_gmp.h | 2 +- ext/hash/hash.c | 4 +- ext/hash/hash_adler32.c | 4 +- ext/hash/hash_crc32.c | 16 +- ext/hash/hash_gost.c | 4 +- ext/hash/hash_haval.c | 4 +- ext/hash/hash_md.c | 4 +- ext/hash/hash_ripemd.c | 4 +- ext/hash/hash_salsa.c | 4 +- ext/hash/hash_sha.c | 4 +- ext/hash/hash_snefru.c | 4 +- ext/hash/hash_tiger.c | 4 +- ext/hash/hash_whirlpool.c | 4 +- ext/hash/php_hash.h | 4 +- ext/hash/php_hash_adler32.h | 4 +- ext/hash/php_hash_crc32.h | 4 +- ext/hash/php_hash_crc32_tables.h | 4 +- ext/hash/php_hash_gost.h | 4 +- ext/hash/php_hash_haval.h | 4 +- ext/hash/php_hash_md.h | 4 +- ext/hash/php_hash_ripemd.h | 4 +- ext/hash/php_hash_salsa.h | 4 +- ext/hash/php_hash_sha.h | 4 +- ext/hash/php_hash_snefru.h | 4 +- ext/hash/php_hash_snefru_tables.h | 4 +- ext/hash/php_hash_tiger.h | 4 +- ext/hash/php_hash_tiger_tables.h | 4 +- ext/hash/php_hash_types.h | 4 +- ext/hash/php_hash_whirlpool.h | 4 +- ext/hash/php_hash_whirlpool_tables.h | 4 +- ext/hash/tests/crc32.phpt | 12 +- ext/hash/tests/hash_algos.phpt | 101 + ext/hash/tests/hash_error.phpt | 48 + ext/hash/tests/hash_file_basic1.phpt | 87 + ext/hash/tests/hash_file_error1.phpt | 52 + ext/hash/tests/hash_hmac_basic.phpt | 68 + ext/hash/tests/hash_hmac_error.phpt | 55 + ext/hash/tests/hash_hmac_file_basic.phpt | 103 + ext/hash/tests/hash_hmac_file_error.phpt | 56 + ext/iconv/iconv.c | 4 +- ext/iconv/php_iconv.h | 4 +- ext/imap/config.m4 | 32 +- ext/imap/config.w32 | 3 +- ext/imap/php_imap.c | 304 +- ext/imap/php_imap.h | 4 +- ext/imap/tests/README | 45 + ext/imap/tests/bug45705_1.phpt | 20 + ext/imap/tests/bug45705_2.phpt | 53 + ext/imap/tests/bug46918.phpt | 69 + ext/imap/tests/clean.inc | 25 + ext/imap/tests/imap_8bit_basic.phpt | 33 + ext/imap/tests/imap_alerts_error.phpt | 31 + ext/imap/tests/imap_append_basic.phpt | 72 + ext/imap/tests/imap_base64_basic.phpt | 47 + ext/imap/tests/imap_binary_basic.phpt | 48 + ext/imap/tests/imap_body_basic.phpt | 44 + ext/imap/tests/imap_bodystruct_basic.phpt | 93 + ext/imap/tests/imap_clearflag_full_basic.phpt | 127 + ext/imap/tests/imap_close_basic.phpt | 56 + ext/imap/tests/imap_close_error.phpt | 45 + ext/imap/tests/imap_close_variation1.phpt | 214 + ext/imap/tests/imap_close_variation2.phpt | 221 + ext/imap/tests/imap_close_variation3.phpt | 47 + ext/imap/tests/imap_close_variation4.phpt | 93 + ext/imap/tests/imap_createmailbox_basic.phpt | 69 + ext/imap/tests/imap_errors_basic.phpt | 55 + ext/imap/tests/imap_fetch_overview_basic.phpt | 118 + ext/imap/tests/imap_fetch_overview_error.phpt | 54 + ext/imap/tests/imap_fetch_overview_variation1.phpt | 221 + ext/imap/tests/imap_fetch_overview_variation2.phpt | 243 + ext/imap/tests/imap_fetch_overview_variation3.phpt | 79 + ext/imap/tests/imap_fetch_overview_variation4.phpt | 46 + ext/imap/tests/imap_fetch_overview_variation5.phpt | 149 + ext/imap/tests/imap_fetch_overview_variation6.phpt | 125 + ext/imap/tests/imap_fetchbody_basic.phpt | 70 + ext/imap/tests/imap_fetchbody_error.phpt | 57 + ext/imap/tests/imap_fetchbody_variation1.phpt | 219 + ext/imap/tests/imap_fetchbody_variation2.phpt | 221 + ext/imap/tests/imap_fetchbody_variation3.phpt | 217 + ext/imap/tests/imap_fetchbody_variation4.phpt | 79 + ext/imap/tests/imap_fetchbody_variation5.phpt | 46 + ext/imap/tests/imap_fetchbody_variation6.phpt | 66 + ext/imap/tests/imap_fetchheader_basic.phpt | 83 + ext/imap/tests/imap_fetchheader_error.phpt | 49 + ext/imap/tests/imap_fetchheader_variation1.phpt | 245 + ext/imap/tests/imap_fetchheader_variation2.phpt | 292 + ext/imap/tests/imap_fetchheader_variation3.phpt | 77 + ext/imap/tests/imap_fetchheader_variation4.phpt | 45 + ext/imap/tests/imap_fetchheader_variation5.phpt | 79 + ext/imap/tests/imap_include.inc | 150 + ext/imap/tests/skipif.inc | 16 + ext/interbase/ibase_blobs.c | 4 +- ext/interbase/ibase_events.c | 29 +- ext/interbase/ibase_query.c | 17 +- ext/interbase/ibase_service.c | 13 +- ext/interbase/interbase.c | 19 +- ext/interbase/php_ibase_includes.h | 4 +- ext/interbase/php_ibase_udf.c | 4 +- ext/interbase/php_interbase.h | 4 +- ext/interbase/tests/bug45373.phpt | 49 + ext/interbase/tests/bug45575.phpt | 22 + ext/interbase/tests/bug46247.phpt | 36 + ext/interbase/tests/bug46543.phpt | 28 + ext/interbase/tests/ibase_affected_rows_001.phpt | 32 + ext/interbase/tests/ibase_close_001.phpt | 25 + ext/interbase/tests/ibase_drop_db_001.phpt | 31 + ext/interbase/tests/ibase_errmsg_001.phpt | 22 + ext/interbase/tests/ibase_free_query_001.phpt | 28 + ext/interbase/tests/ibase_num_fields_001.phpt | 25 + ext/interbase/tests/ibase_num_params_001.phpt | 32 + ext/interbase/tests/ibase_param_info_001.phpt | 55 + ext/interbase/tests/ibase_rollback_001.phpt | 41 + ext/interbase/tests/ibase_trans_001.phpt | 21 + ext/interbase/tests/ibase_trans_002.phpt | 34 + ext/interbase/tests/interbase.inc | 5 +- ext/json/JSON_parser.c | 12 +- ext/json/json.c | 31 +- ext/json/php_json.h | 4 +- ext/json/tests/001.phpt | 32 +- ext/json/tests/bug41567.phpt | 4 +- ext/json/tests/bug42090.phpt | 9 +- ext/json/tests/bug43941.phpt | 21 + ext/json/tests/bug46215.phpt | 29 + ext/json/tests/bug46944.phpt | 35 + ext/json/tests/fail001.phpt | 4 +- ext/json/utf8_decode.c | 2 +- ext/json/utf8_to_utf16.c | 4 +- ext/ldap/ldap.c | 10 +- ext/ldap/php_ldap.h | 4 +- ext/libxml/libxml.c | 4 +- ext/libxml/php_libxml.h | 4 +- ext/mbstring/config.m4 | 27 +- ext/mbstring/libmbfl/filters/mbfilter_cp932.c | 2 +- ext/mbstring/libmbfl/filters/mbfilter_cp936.c | 2 +- ext/mbstring/libmbfl/filters/mbfilter_htmlent.c | 17 +- ext/mbstring/libmbfl/filters/mbfilter_sjis.c | 2 +- ext/mbstring/libmbfl/mbfl/mbfilter.c | 253 +- ext/mbstring/libmbfl/mbfl/mbfl_convert.c | 60 +- ext/mbstring/mb_gpc.c | 4 +- ext/mbstring/mbstring.c | 540 +- ext/mbstring/mbstring.h | 7 +- ext/mbstring/oniguruma/enc/utf16_be.c | 2 +- ext/mbstring/oniguruma/enc/utf16_le.c | 2 +- ext/mbstring/oniguruma/enc/utf32_be.c | 2 +- ext/mbstring/oniguruma/enc/utf32_le.c | 2 +- ext/mbstring/oniguruma/enc/utf8.c | 2 +- ext/mbstring/oniguruma/oniguruma.h | 2 +- ext/mbstring/oniguruma/regcomp.c | 2 +- ext/mbstring/oniguruma/regenc.h | 2 +- ext/mbstring/oniguruma/regerror.c | 2 +- ext/mbstring/oniguruma/regexec.c | 2 +- ext/mbstring/oniguruma/regext.c | 2 +- ext/mbstring/oniguruma/reggnu.c | 2 +- ext/mbstring/oniguruma/regint.h | 2 +- ext/mbstring/oniguruma/regparse.c | 2 +- ext/mbstring/oniguruma/regparse.h | 2 +- ext/mbstring/oniguruma/regposix.c | 2 +- ext/mbstring/oniguruma/regsyntax.c | 2 +- ext/mbstring/oniguruma/regversion.c | 4 +- ext/mbstring/php_mbregex.c | 6 +- ext/mbstring/php_mbregex.h | 4 +- ext/mbstring/php_unicode.c | 4 +- ext/mbstring/php_unicode.h | 2 +- ext/mbstring/tests/bug43840.phpt | 75 + ext/mbstring/tests/bug43841.phpt | 85 + ext/mbstring/tests/bug43993.phpt | 26 + ext/mbstring/tests/bug43994.phpt | 129 + ext/mbstring/tests/bug43998.phpt | 71 + ext/mbstring/tests/bug45239.phpt | 18 + ext/mbstring/tests/bug45722.phpt | 8 + ext/mbstring/tests/bug45923.phpt | 202 + ext/mbstring/tests/bug46843.phpt | 12 + ext/mbstring/tests/bug47399.phpt | 523 + .../tests/mb_convert_encoding_variation1.phpt | 206 + ext/mbstring/tests/mb_decode_mimeheader_basic.phpt | 35 + ext/mbstring/tests/mb_decode_mimeheader_error.phpt | 42 + .../tests/mb_decode_mimeheader_variation1.phpt | 209 + .../tests/mb_decode_mimeheader_variation2.phpt | 51 + .../tests/mb_decode_mimeheader_variation3.phpt | 29 + ext/mbstring/tests/mb_encode_mimeheader_basic.phpt | 17 +- .../tests/mb_encode_mimeheader_basic2.phpt | 73 + .../tests/mb_encode_mimeheader_basic3.phpt | 69 + .../tests/mb_encode_mimeheader_indent.phpt | 901 + .../tests/mb_encode_mimeheader_variation1.phpt | 2 - ext/mbstring/tests/mb_ereg.phpt | 35 +- ext/mbstring/tests/mb_ereg_basic.phpt | 18 +- ext/mbstring/tests/mb_ereg_error.phpt | 6 +- ext/mbstring/tests/mb_ereg_match_basic.phpt | 59 + ext/mbstring/tests/mb_ereg_match_error1.phpt | 58 + ext/mbstring/tests/mb_ereg_replace_basic.phpt | 62 + ext/mbstring/tests/mb_ereg_replace_error.phpt | 48 + ext/mbstring/tests/mb_ereg_replace_variation1.phpt | 170 + ext/mbstring/tests/mb_ereg_replace_variation2.phpt | 178 + ext/mbstring/tests/mb_ereg_replace_variation3.phpt | 179 + ext/mbstring/tests/mb_ereg_replace_variation4.phpt | 179 + ext/mbstring/tests/mb_ereg_variation3.phpt | 52 +- ext/mbstring/tests/mb_ereg_variation4.phpt | 26 +- ext/mbstring/tests/mb_ereg_variation5.phpt | 8 +- ext/mbstring/tests/mb_ereg_variation6.phpt | 33 +- ext/mbstring/tests/mb_ereg_variation7.phpt | 18 +- .../tests/mb_internal_encoding_ini_basic2.phpt | 29 + .../tests/mb_regex_encoding_variation2.phpt | 420 + ext/mbstring/tests/mb_split.phpt | 8 +- ext/mbstring/tests/mb_split_error.phpt | 50 + ext/mbstring/tests/mb_split_variation1.phpt | 262 + ext/mbstring/tests/mb_split_variation2.phpt | 248 + ext/mbstring/tests/mb_split_variation3.phpt | 331 + ext/mbstring/tests/mb_stripos.phpt | 178 + ext/mbstring/tests/mb_stripos_basic.phpt | 158 + ext/mbstring/tests/mb_stripos_basic2.phpt | 129 + ext/mbstring/tests/mb_stripos_error1.phpt | 51 + ext/mbstring/tests/mb_stripos_error2.phpt | 35 + ext/mbstring/tests/mb_stripos_variation1.phpt | 183 + ext/mbstring/tests/mb_stripos_variation2.phpt | 183 + ext/mbstring/tests/mb_stripos_variation3.phpt | 203 + ext/mbstring/tests/mb_stripos_variation4.phpt | 223 + .../tests/mb_stripos_variation5_Bug45923.phpt | 119 + ext/mbstring/tests/mb_stristr_basic.phpt | 70 + ext/mbstring/tests/mb_stristr_error1.phpt | 47 + ext/mbstring/tests/mb_stristr_error2.phpt | 35 + ext/mbstring/tests/mb_stristr_variation1.phpt | 207 + ext/mbstring/tests/mb_stristr_variation2.phpt | 215 + ext/mbstring/tests/mb_stristr_variation3.phpt | 232 + ext/mbstring/tests/mb_stristr_variation4.phpt | 227 + ext/mbstring/tests/mb_stristr_variation5.phpt | 69 + ext/mbstring/tests/mb_strlen_basic.phpt | 2 +- ext/mbstring/tests/mb_strlen_variation1.phpt | 8 +- ext/mbstring/tests/mb_strpos.phpt | 42 +- ext/mbstring/tests/mb_strpos_basic.phpt | 6 +- ext/mbstring/tests/mb_strpos_variation2.phpt | 28 +- ext/mbstring/tests/mb_strpos_variation3.phpt | 14 +- ext/mbstring/tests/mb_strpos_variation4.phpt | 4 +- ext/mbstring/tests/mb_strpos_variation5.phpt | 117 + ext/mbstring/tests/mb_strrchr_basic.phpt | 64 + ext/mbstring/tests/mb_strrchr_error1.phpt | 47 + ext/mbstring/tests/mb_strrchr_error2.phpt | 35 + ext/mbstring/tests/mb_strrchr_variation1.phpt | 207 + ext/mbstring/tests/mb_strrchr_variation2.phpt | 207 + ext/mbstring/tests/mb_strrchr_variation3.phpt | 232 + ext/mbstring/tests/mb_strrchr_variation4.phpt | 227 + ext/mbstring/tests/mb_strrchr_variation5.phpt | 59 + ext/mbstring/tests/mb_strrchr_variation6.phpt | 65 + ext/mbstring/tests/mb_strrichr_basic.phpt | 70 + ext/mbstring/tests/mb_strrichr_error1.phpt | 47 + ext/mbstring/tests/mb_strrichr_error2.phpt | 35 + ext/mbstring/tests/mb_strrichr_variation1.phpt | 207 + ext/mbstring/tests/mb_strrichr_variation2.phpt | 207 + ext/mbstring/tests/mb_strrichr_variation3.phpt | 232 + ext/mbstring/tests/mb_strrichr_variation4.phpt | 227 + ext/mbstring/tests/mb_strrichr_variation5.phpt | 69 + ext/mbstring/tests/mb_strripos_basic.phpt | 158 + ext/mbstring/tests/mb_strripos_basic2.phpt | 128 + ext/mbstring/tests/mb_strripos_error1.phpt | 51 + ext/mbstring/tests/mb_strripos_error2.phpt | 35 + ext/mbstring/tests/mb_strripos_variation1.phpt | 183 + ext/mbstring/tests/mb_strripos_variation2.phpt | 183 + .../tests/mb_strripos_variation3_Bug45923.phpt | 206 + ext/mbstring/tests/mb_strripos_variation4.phpt | 223 + .../tests/mb_strripos_variation5_Bug45923.phpt | 115 + ext/mbstring/tests/mb_strrpos_basic.phpt | 6 +- ext/mbstring/tests/mb_strrpos_variation1.phpt | 10 +- ext/mbstring/tests/mb_strrpos_variation3.phpt | 16 +- ext/mbstring/tests/mb_strrpos_variation4.phpt | 4 +- ext/mbstring/tests/mb_strstr_basic.phpt | 64 + ext/mbstring/tests/mb_strstr_error1.phpt | 47 + ext/mbstring/tests/mb_strstr_error2.phpt | 35 + ext/mbstring/tests/mb_strstr_variation1.phpt | 207 + ext/mbstring/tests/mb_strstr_variation2.phpt | 215 + ext/mbstring/tests/mb_strstr_variation3.phpt | 232 + ext/mbstring/tests/mb_strstr_variation4.phpt | 227 + ext/mbstring/tests/mb_strstr_variation5.phpt | 59 + ext/mbstring/tests/mb_strstr_variation6.phpt | 65 + ext/mbstring/tests/mb_strtolower_variation1.phpt | 4 +- ext/mbstring/tests/mb_strtolower_variation2.phpt | 18 +- ext/mbstring/tests/mb_strtolower_variation4.phpt | 4 +- ext/mbstring/tests/mb_strtoupper_basic.phpt | 10 +- ext/mbstring/tests/mb_strtoupper_variation1.phpt | 3 +- ext/mbstring/tests/mb_strtoupper_variation2.phpt | 18 +- ext/mbstring/tests/mb_strtoupper_variation4.phpt | 4 +- ext/mbstring/tests/mb_substitute_character.phpt | 56 +- .../tests/mb_substitute_character_basic.phpt | 43 + .../tests/mb_substitute_character_error.phpt | 34 + .../tests/mb_substitute_character_variation1.phpt | 238 + .../tests/mb_substitute_character_variation2.phpt | 39 + ext/mbstring/tests/mb_substr.phpt | 16 +- ext/mbstring/tests/mb_substr_basic.phpt | 4 +- ext/mbstring/tests/mb_substr_count_variation1.phpt | 3 +- ext/mbstring/tests/mb_substr_count_variation2.phpt | 21 +- ext/mbstring/tests/mb_substr_count_variation3.phpt | 4 +- ext/mbstring/tests/mb_substr_count_variation4.phpt | 44 + ext/mbstring/tests/mb_substr_variation1.phpt | 3 +- ext/mbstring/tests/mb_substr_variation2.phpt | 18 +- ext/mbstring/tests/mb_substr_variation4.phpt | 25 +- ext/mbstring/tests/mb_substr_variation5.phpt | 23 +- ext/mbstring/tests/mb_substr_variation6.phpt | 137 + ext/mbstring/tests/mb_substr_variation7.phpt | 138 + ext/mcrypt/mcrypt.c | 24 +- ext/mcrypt/php_mcrypt.h | 4 +- ext/mcrypt/tests/bug46010.phpt | 14 + ext/mcrypt/tests/mcrypt_cbc.phpt | 23 + ext/mcrypt/tests/mcrypt_cbc_3des_decrypt.phpt | 102 + ext/mcrypt/tests/mcrypt_cbc_3des_encrypt.phpt | 85 + ext/mcrypt/tests/mcrypt_cbc_error.phpt | 51 + ext/mcrypt/tests/mcrypt_cbc_variation1.phpt | 235 + ext/mcrypt/tests/mcrypt_cbc_variation2.phpt | 209 + ext/mcrypt/tests/mcrypt_cbc_variation3.phpt | 209 + ext/mcrypt/tests/mcrypt_cbc_variation4.phpt | 205 + ext/mcrypt/tests/mcrypt_cbc_variation5.phpt | 235 + ext/mcrypt/tests/mcrypt_cbf.phpt | 23 + ext/mcrypt/tests/mcrypt_create_iv.phpt | 17 + ext/mcrypt/tests/mcrypt_decrypt.phpt | 28 + ext/mcrypt/tests/mcrypt_decrypt_3des_cbc.phpt | 101 + ext/mcrypt/tests/mcrypt_decrypt_3des_ecb.phpt | 96 + ext/mcrypt/tests/mcrypt_decrypt_error.phpt | 51 + ext/mcrypt/tests/mcrypt_decrypt_variation1.phpt | 235 + ext/mcrypt/tests/mcrypt_decrypt_variation2.phpt | 209 + ext/mcrypt/tests/mcrypt_decrypt_variation3.phpt | 209 + ext/mcrypt/tests/mcrypt_decrypt_variation4.phpt | 235 + ext/mcrypt/tests/mcrypt_decrypt_variation5.phpt | 235 + ext/mcrypt/tests/mcrypt_ecb.phpt | 23 + ext/mcrypt/tests/mcrypt_ecb_3des_decrypt.phpt | 97 + ext/mcrypt/tests/mcrypt_ecb_3des_encrypt.phpt | 82 + ext/mcrypt/tests/mcrypt_ecb_error.phpt | 51 + ext/mcrypt/tests/mcrypt_ecb_variation1.phpt | 235 + ext/mcrypt/tests/mcrypt_ecb_variation2.phpt | 209 + ext/mcrypt/tests/mcrypt_ecb_variation3.phpt | 209 + ext/mcrypt/tests/mcrypt_ecb_variation4.phpt | 205 + ext/mcrypt/tests/mcrypt_ecb_variation5.phpt | 209 + .../tests/mcrypt_enc_get_algorithms_name.phpt | 22 + ext/mcrypt/tests/mcrypt_enc_get_block_size.phpt | 16 + ext/mcrypt/tests/mcrypt_enc_get_iv_size.phpt | 16 + ext/mcrypt/tests/mcrypt_enc_get_key_size.phpt | 16 + ext/mcrypt/tests/mcrypt_enc_get_mode_name.phpt | 25 + .../tests/mcrypt_enc_get_supported_key_sizes.phpt | 18 + .../tests/mcrypt_enc_is_block_algorithm.phpt | 16 + .../tests/mcrypt_enc_is_block_algorithm_mode.phpt | 16 + ext/mcrypt/tests/mcrypt_enc_is_block_mode.phpt | 19 + ext/mcrypt/tests/mcrypt_enc_self_test.phpt | 10 + ext/mcrypt/tests/mcrypt_encrypt_3des_cbc.phpt | 94 + ext/mcrypt/tests/mcrypt_encrypt_3des_ecb.phpt | 82 + ext/mcrypt/tests/mcrypt_encrypt_error.phpt | 51 + ext/mcrypt/tests/mcrypt_encrypt_variation1.phpt | 235 + ext/mcrypt/tests/mcrypt_encrypt_variation2.phpt | 209 + ext/mcrypt/tests/mcrypt_encrypt_variation3.phpt | 209 + ext/mcrypt/tests/mcrypt_encrypt_variation4.phpt | 235 + ext/mcrypt/tests/mcrypt_encrypt_variation5.phpt | 236 + ext/mcrypt/tests/mcrypt_get_block_size.phpt | 13 + ext/mcrypt/tests/mcrypt_get_cipher_name.phpt | 15 + ext/mcrypt/tests/mcrypt_get_iv_size.phpt | 17 + ext/mcrypt/tests/mcrypt_get_key_size.phpt | 13 + ext/mcrypt/tests/mcrypt_list_algorithms.phpt | 16 + ext/mcrypt/tests/mcrypt_list_modes.phpt | 26 + .../tests/mcrypt_module_get_algo_block_size.phpt | 19 + .../tests/mcrypt_module_get_algo_key_size.phpt | 19 + .../mcrypt_module_get_supported_key_sizes.phpt | 19 + .../tests/mcrypt_module_is_block_algorithm.phpt | 15 + .../mcrypt_module_is_block_algorithm_mode.phpt | 15 + ext/mcrypt/tests/mcrypt_module_is_block_mode.phpt | 17 + ext/mcrypt/tests/mcrypt_module_open.phpt | 14 + ext/mcrypt/tests/mcrypt_module_self_test.phpt | 13 + ext/mcrypt/tests/mcrypt_ofb.phpt | 21 + ext/mcrypt/tests/mcrypt_rijndael128_128BitKey.phpt | 130 + ext/mcrypt/tests/mcrypt_rijndael128_256BitKey.phpt | 87 + ext/mhash/mhash.c | 4 +- ext/mhash/php_mhash.h | 4 +- ext/mime_magic/mime_magic.c | 4 +- ext/mime_magic/php_mime_magic.h | 4 +- ext/mime_magic/phpmimemagic.h | 4 +- ext/mime_magic/tests/magic.mime | 590 + ext/mime_magic/tests/mime_content_type_basic.phpt | 69 + ext/mime_magic/tests/mime_content_type_error.phpt | 40 + .../tests/mime_content_type_variation.phpt | 35 + .../tests/mime_content_type_variation1.phpt | 238 + ext/mime_magic/tests/mime_test.bmp | Bin 0 -> 196662 bytes ext/mime_magic/tests/mime_test.class | Bin 0 -> 99 bytes ext/mime_magic/tests/mime_test.gif | Bin 0 -> 4998 bytes ext/mime_magic/tests/mime_test.html | 10 + ext/mime_magic/tests/mime_test.jpeg | Bin 0 -> 2317 bytes ext/mime_magic/tests/mime_test.png | Bin 0 -> 4053 bytes ext/mime_magic/tests/mime_test.wav | Bin 0 -> 2060 bytes ext/mime_magic/tests/mime_test.zip | Bin 0 -> 64609 bytes ext/ming/ming.c | 4 +- ext/ming/php_ming.h | 4 +- ext/msql/php_msql.c | 4 +- ext/msql/php_msql.h | 4 +- ext/mssql/config.m4 | 14 +- ext/mssql/php_mssql.c | 34 +- ext/mssql/php_mssql.h | 4 +- ext/mysql/php_mysql.c | 4 +- ext/mysql/php_mysql.h | 4 +- ext/mysql/php_mysql_structs.h | 4 +- ext/mysqli/mysqli.c | 15 +- ext/mysqli/mysqli_api.c | 22 +- ext/mysqli/mysqli_driver.c | 2 +- ext/mysqli/mysqli_embedded.c | 2 +- ext/mysqli/mysqli_exception.c | 2 +- ext/mysqli/mysqli_fe.c | 25 +- ext/mysqli/mysqli_nonapi.c | 22 +- ext/mysqli/mysqli_prop.c | 14 +- ext/mysqli/mysqli_repl.c | 7 +- ext/mysqli/mysqli_report.c | 4 +- ext/mysqli/mysqli_report.h | 4 +- ext/mysqli/mysqli_warning.c | 2 +- ext/mysqli/php_mysqli.h | 9 +- ext/mysqli/tests/010.phpt | 2 +- ext/mysqli/tests/bug42548.phpt | 9 +- ext/mysqli/tests/bug45940.phpt | 18 + ext/ncurses/ncurses.c | 2 +- ext/ncurses/ncurses_fe.c | 2 +- ext/ncurses/ncurses_functions.c | 2 +- ext/ncurses/php_ncurses.h | 2 +- ext/ncurses/php_ncurses_fe.h | 2 +- ext/oci8/config.m4 | 4 +- ext/oci8/oci8.c | 6 +- ext/oci8/oci8_collection.c | 4 +- ext/oci8/oci8_interface.c | 4 +- ext/oci8/oci8_lob.c | 9 +- ext/oci8/oci8_statement.c | 4 +- ext/oci8/package2.xml | 104 +- ext/oci8/php_oci8.h | 4 +- ext/oci8/php_oci8_int.h | 4 +- ext/oci8/tests/bug37220.phpt | 68 + ext/oci8/tests/bug43497.phpt | 11 +- ext/oci8/tests/bug43497_92.phpt | 303 + ext/oci8/tests/bug44113.phpt | 5 +- ext/oci8/tests/bug44206.phpt | 24 +- ext/oci8/tests/connect_scope1.phpt | 93 + ext/oci8/tests/connect_scope2.phpt | 93 + ext/oci8/tests/connect_scope_try1.phpt | 100 + ext/oci8/tests/connect_scope_try2.phpt | 100 + ext/oci8/tests/connect_scope_try3.phpt | 100 + ext/oci8/tests/connect_scope_try4.phpt | 100 + ext/oci8/tests/connect_scope_try5.phpt | 100 + ext/oci8/tests/connect_scope_try6.phpt | 100 + ext/oci8/tests/drcp_characterset.phpt | 61 + ext/oci8/tests/drcp_conn_close1.phpt | 45 + ext/oci8/tests/drcp_conn_close2.phpt | 46 + ext/oci8/tests/drcp_connect1.phpt | 86 + ext/oci8/tests/drcp_functions.inc | 93 + ext/oci8/tests/drcp_newconnect.phpt | 43 + ext/oci8/tests/drcp_pconn_close1.phpt | 44 + ext/oci8/tests/drcp_pconn_close2.phpt | 46 + ext/oci8/tests/drcp_privileged.phpt | 47 + ext/oci8/tests/drcp_scope1.phpt | 92 + ext/oci8/tests/drcp_scope2.phpt | 91 + ext/oci8/tests/drcp_scope3.phpt | 61 + ext/oci8/tests/drcp_scope4.phpt | 62 + ext/oci8/tests/drcp_scope5.phpt | 63 + ext/oci8/tests/lob_042.phpt | 2 - ext/oci8/tests/minfo.phpt | 19 + ext/oci8/tests/password.phpt | 70 +- ext/oci8/tests/password_2.phpt | 32 +- ext/oci8/tests/password_new.phpt | 20 +- ext/oci8/tests/password_old.phpt | 28 +- ext/oci8/tests/pecl_bug10194_blob.phpt | 21 +- ext/oci8/tests/pecl_bug10194_blob_64.phpt | 54 + ext/oci8/tests/testping.phpt | 25 + ext/odbc/birdstep.c | 4 +- ext/odbc/php_birdstep.h | 4 +- ext/odbc/php_odbc.c | 201 +- ext/odbc/php_odbc.h | 6 +- ext/odbc/php_odbc_includes.h | 41 +- ext/openssl/openssl.c | 72 +- ext/openssl/php_openssl.h | 4 +- ext/openssl/tests/bug41033.pem | 12 + ext/openssl/tests/bug41033.phpt | 27 + ext/openssl/tests/bug41033pub.pem | 12 + ext/openssl/tests/bug46127.pem | 33 + ext/openssl/tests/bug46127.phpt | 58 + ext/openssl/xp_ssl.c | 29 +- ext/pcntl/EXPERIMENTAL | 5 - ext/pcntl/config.m4 | 7 +- ext/pcntl/pcntl.c | 4 +- ext/pcntl/php_pcntl.h | 4 +- ext/pcntl/php_signal.c | 4 +- ext/pcntl/php_signal.h | 4 +- ext/pcre/config.w32 | 19 +- ext/pcre/config0.m4 | 4 +- ext/pcre/pcrelib/ChangeLog | 186 + ext/pcre/pcrelib/HACKING | 14 +- ext/pcre/pcrelib/NEWS | 15 + ext/pcre/pcrelib/NON-UNIX-USE | 17 +- ext/pcre/pcrelib/README | 25 +- ext/pcre/pcrelib/config.h | 10 +- ext/pcre/pcrelib/dftables.c | 2 +- ext/pcre/pcrelib/doc/pcre.txt | 1764 +- ext/pcre/pcrelib/pcre.h | 7 +- ext/pcre/pcrelib/pcre_compile.c | 319 +- ext/pcre/pcrelib/pcre_config.c | 4 +- ext/pcre/pcrelib/pcre_exec.c | 303 +- ext/pcre/pcrelib/pcre_fullinfo.c | 4 +- ext/pcre/pcrelib/pcre_get.c | 20 +- ext/pcre/pcrelib/pcre_globals.c | 2 +- ext/pcre/pcrelib/pcre_info.c | 4 +- ext/pcre/pcrelib/pcre_internal.h | 322 +- ext/pcre/pcrelib/pcre_maketables.c | 2 +- ext/pcre/pcrelib/pcre_newline.c | 2 +- ext/pcre/pcrelib/pcre_ord2utf8.c | 8 +- ext/pcre/pcrelib/pcre_refcount.c | 4 +- ext/pcre/pcrelib/pcre_study.c | 13 +- ext/pcre/pcrelib/pcre_tables.c | 252 +- ext/pcre/pcrelib/pcre_try_flipped.c | 2 +- ext/pcre/pcrelib/pcre_ucd.c | 2608 ++ ext/pcre/pcrelib/pcre_ucp_searchfuncs.c | 177 - ext/pcre/pcrelib/pcre_valid_utf8.c | 5 +- ext/pcre/pcrelib/pcre_version.c | 4 +- ext/pcre/pcrelib/pcre_xclass.c | 13 +- ext/pcre/pcrelib/pcregrep.c | 90 +- ext/pcre/pcrelib/pcreposix.c | 33 +- ext/pcre/pcrelib/pcreposix.h | 3 +- ext/pcre/pcrelib/testdata/testinput1 | 3 + ext/pcre/pcrelib/testdata/testinput2 | 143 +- ext/pcre/pcrelib/testdata/testinput4 | 14 + ext/pcre/pcrelib/testdata/testinput5 | 19 + ext/pcre/pcrelib/testdata/testinput6 | 38 +- ext/pcre/pcrelib/testdata/testinput7 | 31 +- ext/pcre/pcrelib/testdata/testinput8 | 3 + ext/pcre/pcrelib/testdata/testinput9 | 18 + ext/pcre/pcrelib/testdata/testoutput1 | 4 + ext/pcre/pcrelib/testdata/testoutput10 | 4 +- ext/pcre/pcrelib/testdata/testoutput2 | 281 +- ext/pcre/pcrelib/testdata/testoutput4 | 18 + ext/pcre/pcrelib/testdata/testoutput5 | 33 + ext/pcre/pcrelib/testdata/testoutput6 | 70 +- ext/pcre/pcrelib/testdata/testoutput7 | 46 +- ext/pcre/pcrelib/testdata/testoutput8 | 4 + ext/pcre/pcrelib/testdata/testoutput9 | 30 + ext/pcre/pcrelib/ucp.h | 23 +- ext/pcre/pcrelib/ucpinternal.h | 92 - ext/pcre/pcrelib/ucptable.h | 3088 -- ext/pcre/php_pcre.c | 169 +- ext/pcre/php_pcre.h | 4 +- ext/pcre/tests/bug37911.phpt | 41 + ext/pcre/tests/bug42737.phpt | 19 + ext/pcre/tests/bug44925.phpt | 107 + ext/pcre/tests/pcre.constants.phpt | 35 + ext/pcre/tests/preg_last_error_error.phpt | 30 + ext/pcre/tests/preg_match_basic_002.phpt | 23 + ext/pcre/tests/preg_match_variation1.phpt | 22 + ext/pcre/tests/preg_replace_callback_error1.phpt | 59 + ext/pcre/upgrade-pcre.php | 1 + ext/pdo/pdo.c | 4 +- ext/pdo/pdo_dbh.c | 17 +- ext/pdo/pdo_sql_parser.c | 84 +- ext/pdo/pdo_sql_parser.c.orig | 98 +- ext/pdo/pdo_sql_parser.re | 24 +- ext/pdo/pdo_sqlstate.c | 4 +- ext/pdo/pdo_stmt.c | 115 +- ext/pdo/php_pdo.h | 4 +- ext/pdo/php_pdo_driver.h | 4 +- ext/pdo/php_pdo_int.h | 4 +- ext/pdo/tests/bug_44159.phpt | 5 +- ext/pdo/tests/pdo_033.phpt | 7 +- ext/pdo/tests/pdorow.phpt | 10 + ext/pdo_dblib/config.m4 | 14 +- ext/pdo_dblib/dblib_driver.c | 4 +- ext/pdo_dblib/dblib_stmt.c | 4 +- ext/pdo_dblib/pdo_dblib.c | 4 +- ext/pdo_dblib/php_pdo_dblib.h | 4 +- ext/pdo_dblib/php_pdo_dblib_int.h | 4 +- ext/pdo_firebird/firebird_driver.c | 4 +- ext/pdo_firebird/firebird_statement.c | 7 +- ext/pdo_firebird/pdo_firebird.c | 4 +- ext/pdo_firebird/php_pdo_firebird.h | 4 +- ext/pdo_firebird/php_pdo_firebird_int.h | 4 +- ext/pdo_firebird/tests/ddl.phpt | 6 +- ext/pdo_firebird/tests/execute.phpt | 14 +- ext/pdo_mysql/mysql_driver.c | 8 +- ext/pdo_mysql/mysql_statement.c | 4 +- ext/pdo_mysql/pdo_mysql.c | 4 +- ext/pdo_mysql/php_pdo_mysql.h | 4 +- ext/pdo_mysql/php_pdo_mysql_int.h | 4 +- ext/pdo_mysql/tests/bug41125.phpt | 162 + ext/pdo_mysql/tests/bug44327.phpt | 64 + ext/pdo_mysql/tests/bug46292.phpt | 80 + ext/pdo_oci/oci_driver.c | 4 +- ext/pdo_oci/oci_statement.c | 4 +- ext/pdo_oci/pdo_oci.c | 4 +- ext/pdo_oci/php_pdo_oci.h | 4 +- ext/pdo_oci/php_pdo_oci_int.h | 4 +- ext/pdo_odbc/odbc_driver.c | 946 +- ext/pdo_odbc/odbc_stmt.c | 1298 +- ext/pdo_odbc/pdo_odbc.c | 4 +- ext/pdo_odbc/php_pdo_odbc.h | 4 +- ext/pdo_odbc/php_pdo_odbc_int.h | 370 +- ext/pdo_pgsql/pdo_pgsql.c | 6 +- ext/pdo_pgsql/pgsql_driver.c | 4 +- ext/pdo_pgsql/pgsql_statement.c | 18 +- ext/pdo_pgsql/php_pdo_pgsql.h | 4 +- ext/pdo_pgsql/php_pdo_pgsql_int.h | 4 +- ext/pdo_pgsql/tests/bug43925.phpt | 59 + ext/pdo_pgsql/tests/bug46274.phpt | 85 + ext/pdo_pgsql/tests/bug46274_2.phpt | 87 + ext/pdo_pgsql/tests/large_objects.phpt | 36 +- ext/pdo_sqlite/pdo_sqlite.c | 6 +- ext/pdo_sqlite/php_pdo_sqlite.h | 4 +- ext/pdo_sqlite/php_pdo_sqlite_int.h | 4 +- ext/pdo_sqlite/sqlite/src/keywordhash.h | 2 +- ext/pdo_sqlite/sqlite_driver.c | 11 +- ext/pdo_sqlite/sqlite_statement.c | 4 +- ext/pdo_sqlite/tests/bug44327_2.phpt | 50 + ext/pdo_sqlite/tests/bug44327_3.phpt | 33 + ext/pdo_sqlite/tests/bug46139.phpt | 42 + ext/pdo_sqlite/tests/debugdumpparams_001.phpt | 37 + .../tests/pdo_sqlite_createaggregate.phpt | 31 + .../tests/pdo_sqlite_createfunction.phpt | 37 + ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt | 26 + ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt | 26 + ext/pgsql/pgsql.c | 160 +- ext/pgsql/php_pgsql.h | 4 +- ext/pgsql/tests/bug37100.phpt | 43 + ext/pgsql/tests/pg_delete_001.phpt | 86 + ext/pgsql/tests/pg_insert_001.phpt | 40 + ext/pgsql/tests/pg_meta_data_001.phpt | 92 + ext/pgsql/tests/pg_select_001.phpt | 63 + ext/pgsql/tests/pg_update_001.phpt | 51 + ext/posix/config.m4 | 18 +- ext/posix/php_posix.h | 4 +- ext/posix/posix.c | 13 +- ext/posix/tests/posix_getcwd.phpt | 19 + ext/posix/tests/posix_getgrgid_error.phpt | 4 - ext/posix/tests/posix_getgrnam.phpt | 19 + ext/posix/tests/posix_getpwnam.phpt | 19 + ext/posix/tests/posix_getrlimit.phpt | 17 + ext/posix/tests/posix_initgroups.phpt | 18 + ext/posix/tests/posix_isatty.phpt | 15 + ext/posix/tests/posix_kill_variation1.phpt | 4 - ext/posix/tests/posix_kill_variation2.phpt | 4 - ext/posix/tests/posix_mknod.phpt | 15 + ext/posix/tests/posix_strerror_error.phpt | 4 +- ext/posix/tests/posix_strerror_variation1.phpt | 50 +- ext/pspell/php_pspell.h | 4 +- ext/pspell/pspell.c | 10 +- ext/readline/php_readline.h | 4 +- ext/readline/readline.c | 19 +- ext/readline/tests/readline_add_history_001.phpt | 32 + .../readline_callback_handler_install_001.phpt | 24 + .../readline_callback_handler_remove_001.phpt | 20 + ext/readline/tests/readline_clear_history_001.phpt | 16 + .../tests/readline_completion_function_001.phpt | 25 + ext/readline/tests/readline_info_001.phpt | 45 + ext/readline/tests/readline_list_history_001.phpt | 17 + ext/readline/tests/readline_read_history_001.phpt | 30 + ext/readline/tests/readline_write_history_001.phpt | 26 + ext/recode/php_recode.h | 4 +- ext/recode/recode.c | 6 +- ext/reflection/php_reflection.c | 79 +- ext/reflection/php_reflection.h | 4 +- ext/reflection/tests/001.phpt | 182 +- ext/reflection/tests/002.phpt | 130 +- ext/reflection/tests/004.phpt | 88 +- .../ReflectionClass_getDefaultProperties_001.phpt | 198 + .../ReflectionClass_getDefaultProperties_002.phpt | 45 + .../tests/ReflectionClass_getDocComment_001.phpt | 98 + .../tests/ReflectionClass_getDocComment_002.phpt | 27 + .../tests/ReflectionClass_getInterfaces_001.phpt | 311 + .../tests/ReflectionClass_getInterfaces_002.phpt | 53 + .../tests/ReflectionClass_getInterfaces_003.phpt | 69 + .../tests/ReflectionClass_getInterfaces_004.phpt | 28 + .../tests/ReflectionClass_getMethod_001.phpt | 168 + .../tests/ReflectionClass_getMethod_002.phpt | 74 + .../tests/ReflectionClass_getMethods_001.phpt | 140 + .../tests/ReflectionClass_getMethods_002.phpt | 18 + .../tests/ReflectionClass_getMethods_003.phpt | 191 + .../tests/ReflectionClass_getParentClass_001.phpt | 38 + .../tests/ReflectionClass_getProperties_001.phpt | 126 + .../tests/ReflectionClass_getProperties_002.phpt | 17 + .../tests/ReflectionClass_getProperties_003.phpt | 189 + .../tests/ReflectionClass_getProperty_001.phpt | 146 + .../tests/ReflectionClass_getProperty_002.phpt | 72 + .../tests/ReflectionClass_getProperty_003.phpt | 251 + .../tests/ReflectionClass_getProperty_004.phpt | 251 + ...ReflectionClass_getStaticPropertyValue_001.phpt | 67 + ...ReflectionClass_getStaticPropertyValue_002.phpt | 52 + .../tests/ReflectionClass_hasConstant_001.phpt | 36 + .../tests/ReflectionClass_hasConstant_002.phpt | 40 + .../tests/ReflectionClass_hasMethod_001.phpt | 75 + .../tests/ReflectionClass_hasMethod_002.phpt | 40 + .../tests/ReflectionClass_hasProperty_001.phpt | 75 + .../tests/ReflectionClass_hasProperty_002.phpt | 40 + .../ReflectionClass_implementsInterface_001.phpt | 155 + .../tests/ReflectionClass_isIterateable_001.phpt | 75 + .../tests/ReflectionClass_isSubclassOf_002.phpt | 49 + .../tests/ReflectionClass_modifiers_001.phpt | 44 + .../tests/ReflectionClass_modifiers_002.phpt | 28 + .../tests/ReflectionClass_newInstanceArgs_001.phpt | 98 + .../tests/ReflectionClass_newInstanceArgs_002.phpt | 20 + .../tests/ReflectionClass_newInstance_001.phpt | 98 + ...ReflectionClass_setStaticPropertyValue_001.phpt | 77 + ...ReflectionClass_setStaticPropertyValue_002.phpt | 60 + .../tests/ReflectionClass_toString_001.phpt | 224 + .../tests/ReflectionClass_toString_002.phpt | 123 + .../tests/ReflectionClass_toString_003.phpt | 123 + ext/reflection/tests/ReflectionFunction_001.phpt | 67 + .../tests/ReflectionFunction_construct.001.phpt | 23 + .../ReflectionFunction_getDocComment.001.phpt | 41 + .../tests/ReflectionFunction_getExtension.phpt | 19 + .../tests/ReflectionFunction_getExtensionName.phpt | 16 + .../tests/ReflectionFunction_getFileName.001.phpt | 18 + .../tests/ReflectionFunction_getFileName.002.phpt | 39 + ext/reflection/tests/ReflectionMethod_006.phpt | 100 + .../tests/ReflectionMethod_constructor_error1.phpt | 103 + .../tests/ReflectionMethod_constructor_error2.phpt | 37 + .../tests/ReflectionObject_isSubclassOf.002.phpt | 48 + ext/reflection/tests/ReflectionParameter_001.phpt | 80 + ext/reflection/tests/ReflectionParameter_002.phpt | 80 + ext/reflection/tests/ReflectionParameter_003.phpt | 88 + .../tests/ReflectionProperty_getModifiers.001.phpt | 66 + ext/reflection/tests/bug26695.phpt | 52 +- ext/reflection/tests/bug29268.phpt | 58 +- ext/reflection/tests/bug29523.phpt | 80 +- ext/reflection/tests/bug29828.phpt | 74 +- ext/reflection/tests/bug30146.phpt | 48 +- ext/reflection/tests/bug30148.phpt | 72 +- ext/reflection/tests/bug30856.phpt | 44 +- ext/reflection/tests/bug30961.phpt | 44 +- ext/reflection/tests/bug33312.phpt | 44 +- ext/reflection/tests/bug38942.phpt | 72 +- ext/reflection/tests/bug45139.phpt | 58 + ext/reflection/tests/bug45765.phpt | 82 + ext/reflection/tests/bug46064.phpt | 74 + ext/reflection/tests/bug46064_2.phpt | 72 + ext/reflection/tests/included4.inc | 9 + ext/reflection/tests/parameters_001.phpt | 80 +- .../tests/reflectionClass_FileInfo_error.phpt | 72 +- .../tests/reflectionClass_constructor_001.phpt | 66 +- .../tests/reflectionClass_constructor_002.phpt | 132 +- .../tests/reflectionClass_export_basic1.phpt | 62 + .../tests/reflectionClass_export_basic2.phpt | 54 + .../tests/reflectionClass_getConstant_basic.phpt | 82 +- .../tests/reflectionClass_getConstant_error.phpt | 72 +- .../reflectionClass_getConstructor_basic.phpt | 162 +- .../reflectionClass_getConstructor_error.phpt | 48 +- .../reflectionClass_getExtensionName_basic.phpt | 14 + ...reflectionClass_getExtensionName_variation.phpt | 20 + .../tests/reflectionClass_getExtension_basic.phpt | 17 + .../reflectionClass_getExtension_variation.phpt | 20 + .../reflectionClass_getInterfaceNames_basic.phpt | 25 + .../tests/reflectionClass_getModifiers_basic.phpt | 39 + .../tests/reflectionClass_getParentClass.phpt | 21 + .../tests/reflectionClass_hasConstant_basic.phpt | 23 + .../tests/reflectionClass_hasMethod_basic.phpt | 57 + .../tests/reflectionClass_hasProperty_basic.phpt | 38 + .../tests/reflectionClass_isAbstract_basic.phpt | 23 + .../tests/reflectionClass_isFinal_basic.phpt | 23 + .../tests/reflectionClass_isInterface_basic.phpt | 27 + .../tests/reflectionClass_isIterateable_basic.phpt | 36 + .../reflectionClass_isIterateable_variation1.phpt | 27 + .../tests/reflectionObject___toString_basic1.phpt | 36 + .../tests/reflectionObject___toString_basic2.phpt | 39 + .../tests/reflectionObject_export_basic1.phpt | 36 + .../tests/reflectionObject_export_basic2.phpt | 39 + .../tests/reflectionObject_export_basic3.phpt | 38 + ...ectionParameter_invalidMethodInConstructor.phpt | 31 + .../reflectionProperty_constructor_variation1.phpt | 58 + ext/session/mod_files.c | 4 +- ext/session/mod_files.h | 4 +- ext/session/mod_mm.c | 4 +- ext/session/mod_mm.h | 4 +- ext/session/mod_user.c | 4 +- ext/session/mod_user.h | 4 +- ext/session/php_session.h | 4 +- ext/session/session.c | 32 +- ext/session/tests/session_encode_variation5.phpt | 3 + .../tests/session_get_cookie_params_basic.phpt | 7 +- .../session_get_cookie_params_variation1.phpt | 6 + ext/session/tests/session_id_error4.phpt | 2 + ext/session/tests/session_id_variation1.phpt | 2 + ext/session/tests/session_id_variation2.phpt | 2 + .../tests/session_save_path_variation4.phpt | 12 +- ext/shmop/php_shmop.h | 2 +- ext/shmop/shmop.c | 4 +- ext/simplexml/php_simplexml.h | 4 +- ext/simplexml/php_simplexml_exports.h | 4 +- ext/simplexml/simplexml.c | 31 +- ext/simplexml/tests/bug45553.phpt | 31 + ext/simplexml/tests/bug46003.phpt | 30 + ext/simplexml/tests/bug46047.phpt | 48 + ext/snmp/php_snmp.h | 4 +- ext/snmp/snmp.c | 14 +- ext/soap/php_encoding.c | 121 +- ext/soap/php_encoding.h | 4 +- ext/soap/php_http.c | 10 +- ext/soap/php_http.h | 4 +- ext/soap/php_packet_soap.c | 4 +- ext/soap/php_packet_soap.h | 4 +- ext/soap/php_schema.c | 4 +- ext/soap/php_schema.h | 4 +- ext/soap/php_sdl.c | 15 +- ext/soap/php_sdl.h | 4 +- ext/soap/php_soap.h | 4 +- ext/soap/php_xml.c | 4 +- ext/soap/php_xml.h | 4 +- ext/soap/soap.c | 25 +- ext/soap/tests/bug46760.phpt | 16 + ext/soap/tests/bugs/bug29109.phpt | 6 +- ext/soap/tests/bugs/bug42151.phpt | 5 +- ext/soap/tests/bugs/bug42214.phpt | 2 +- ext/soap/tests/bugs/bug43045.phpt | 52 + ext/soap/tests/bugs/bug44811.phpt | 19 + ext/soap/tests/bugs/bug44882.phpt | 64 + ext/soap/tests/bugs/bug44882.wsdl | 75 + ext/soap/tests/bugs/bug46419.phpt | 43 + ext/soap/tests/bugs/bug46427.phpt | 20 + ext/soap/tests/bugs/bug47049.phpt | 19 + ext/soap/tests/bugs/bug47049.wsdl | 80 + ext/soap/tests/bugs/multiport.phpt | 16 + ext/soap/tests/bugs/multiport.wsdl | 88 + ext/sockets/php_sockets.h | 4 +- ext/sockets/php_sockets_win.c | 4 +- ext/sockets/php_sockets_win.h | 4 +- ext/sockets/sockets.c | 27 +- ext/sockets/tests/ipv4loop.phpt | 2 +- ext/sockets/tests/ipv6loop.phpt | 2 +- ext/sockets/tests/unixloop.phpt | 55 + ext/sockets/unix_socket_constants.h | 4 +- ext/sockets/win32_socket_constants.h | 4 +- ext/spl/examples/tests/dualiterator_001.phpt | 2 +- ext/spl/php_spl.c | 6 +- ext/spl/php_spl.h | 2 +- ext/spl/spl_array.c | 67 +- ext/spl/spl_array.h | 4 +- ext/spl/spl_directory.c | 11 +- ext/spl/spl_directory.h | 4 +- ext/spl/spl_engine.c | 2 +- ext/spl/spl_engine.h | 4 +- ext/spl/spl_exceptions.c | 4 +- ext/spl/spl_exceptions.h | 4 +- ext/spl/spl_functions.c | 4 +- ext/spl/spl_functions.h | 4 +- ext/spl/spl_iterators.c | 16 +- ext/spl/spl_iterators.h | 4 +- ext/spl/spl_observer.c | 4 +- ext/spl/spl_observer.h | 4 +- ext/spl/spl_sxe.c | 4 +- ext/spl/spl_sxe.h | 4 +- ext/spl/tests/arrayObject___construct_basic1.phpt | 37 + ext/spl/tests/arrayObject___construct_basic2.phpt | 98 + ext/spl/tests/arrayObject___construct_basic3.phpt | 99 + ext/spl/tests/arrayObject___construct_basic4.phpt | 103 + ext/spl/tests/arrayObject___construct_basic5.phpt | 103 + ext/spl/tests/arrayObject___construct_basic6.phpt | 50 + ext/spl/tests/arrayObject___construct_error1.phpt | 25 + ext/spl/tests/arrayObject___construct_error2.phpt | 22 + ext/spl/tests/arrayObject_asort_basic1.phpt | 42 + ext/spl/tests/arrayObject_asort_basic2.phpt | 49 + ext/spl/tests/arrayObject_clone_basic1.phpt | 42 + ext/spl/tests/arrayObject_clone_basic2.phpt | 40 + ext/spl/tests/arrayObject_clone_basic3.phpt | 68 + ext/spl/tests/arrayObject_count_basic1.phpt | 80 + .../tests/arrayObject_exchangeArray_basic3.phpt | 121 + ext/spl/tests/arrayObject_getFlags_basic1.phpt | 25 + ext/spl/tests/arrayObject_getFlags_basic2.phpt | 24 + .../tests/arrayObject_getIteratorClass_basic1.phpt | 104 + ext/spl/tests/arrayObject_ksort_basic1.phpt | 43 + ext/spl/tests/arrayObject_ksort_basic2.phpt | 49 + ext/spl/tests/arrayObject_magicMethods1.phpt | 183 + ext/spl/tests/arrayObject_magicMethods2.phpt | 174 + ext/spl/tests/arrayObject_magicMethods3.phpt | 183 + ext/spl/tests/arrayObject_magicMethods4.phpt | 186 + ext/spl/tests/arrayObject_magicMethods5.phpt | 187 + ext/spl/tests/arrayObject_magicMethods6.phpt | 186 + ext/spl/tests/arrayObject_natcasesort_basic1.phpt | 50 + ext/spl/tests/arrayObject_natsort_basic1.phpt | 50 + ext/spl/tests/arrayObject_setFlags_basic1.phpt | 53 + ext/spl/tests/arrayObject_setFlags_basic2.phpt | 29 + .../tests/arrayObject_setIteratorClass_error1.phpt | 57 + ext/spl/tests/arrayObject_uasort_basic1.phpt | 41 + ext/spl/tests/arrayObject_uasort_error1.phpt | 30 + ext/spl/tests/arrayObject_uksort_basic1.phpt | 44 + ext/spl/tests/arrayObject_uksort_error1.phpt | 30 + ext/spl/tests/array_001.phpt | 8 +- ext/spl/tests/array_026.phpt | 21 + ext/spl/tests/bug46031.phpt | 9 + ext/spl/tests/bug46051.phpt | 14 + ext/spl/tests/bug46053.phpt | 12 + ext/spl/tests/bug46088.phpt | 11 + ext/spl/tests/bug46115.phpt | 13 + ext/spl/tests/class_implements_basic.phpt | 33 + ext/spl/tests/class_implements_basic2.phpt | 74 + ext/spl/tests/class_implements_error.phpt | 28 + ext/spl/tests/class_implements_variation.phpt | 45 + ext/spl/tests/class_implements_variation1.phpt | 221 + ext/spl/tests/class_implements_variation2.phpt | 259 + ext/spl/tests/countable_class_basic1.phpt | 28 + ext/spl/tests/countable_count_variation1.phpt | 68 + ext/spl/tests/dit_002.phpt | 2 +- ext/spl/tests/iterator_044.phpt | 2 - ext/sqlite/config.m4 | 4 +- ext/sqlite/pdo_sqlite2.c | 4 +- ext/sqlite/php_sqlite.h | 4 +- ext/sqlite/sess_sqlite.c | 4 +- ext/sqlite/sqlite.c | 8 +- ext/standard/array.c | 120 +- ext/standard/assert.c | 4 +- ext/standard/base64.c | 12 +- ext/standard/base64.h | 4 +- ext/standard/basic_functions.c | 28 +- ext/standard/basic_functions.h | 4 +- ext/standard/browscap.c | 4 +- ext/standard/crc32.c | 4 +- ext/standard/crc32.h | 4 +- ext/standard/credits.c | 8 +- ext/standard/credits.h | 4 +- ext/standard/crypt.c | 4 +- ext/standard/css.c | 4 +- ext/standard/css.h | 4 +- ext/standard/cyr_convert.c | 4 +- ext/standard/cyr_convert.h | 4 +- ext/standard/datetime.c | 4 +- ext/standard/datetime.h | 4 +- ext/standard/dir.c | 33 +- ext/standard/dl.c | 4 +- ext/standard/dl.h | 4 +- ext/standard/dns.c | 29 +- ext/standard/dns.h | 4 +- ext/standard/exec.c | 4 +- ext/standard/exec.h | 4 +- ext/standard/file.c | 55 +- ext/standard/file.h | 4 +- ext/standard/filestat.c | 4 +- ext/standard/filters.c | 4 +- ext/standard/flock_compat.c | 4 +- ext/standard/flock_compat.h | 10 +- ext/standard/formatted_print.c | 5 +- ext/standard/fsock.c | 4 +- ext/standard/fsock.h | 4 +- ext/standard/ftok.c | 4 +- ext/standard/ftp_fopen_wrapper.c | 11 +- ext/standard/head.c | 8 +- ext/standard/head.h | 4 +- ext/standard/html.c | 23 +- ext/standard/html.h | 4 +- ext/standard/http.c | 4 +- ext/standard/http_fopen_wrapper.c | 4 +- ext/standard/image.c | 4 +- ext/standard/incomplete_class.c | 4 +- ext/standard/info.c | 14 +- ext/standard/info.h | 4 +- ext/standard/iptc.c | 4 +- ext/standard/lcg.c | 4 +- ext/standard/levenshtein.c | 150 +- ext/standard/link.c | 27 +- ext/standard/mail.c | 41 +- ext/standard/math.c | 78 +- ext/standard/md5.c | 4 +- ext/standard/md5.h | 4 +- ext/standard/metaphone.c | 4 +- ext/standard/microtime.c | 4 +- ext/standard/microtime.h | 4 +- ext/standard/pack.c | 4 +- ext/standard/pack.h | 4 +- ext/standard/pageinfo.c | 4 +- ext/standard/pageinfo.h | 4 +- ext/standard/php_array.h | 4 +- ext/standard/php_assert.h | 4 +- ext/standard/php_browscap.h | 4 +- ext/standard/php_crypt.h | 4 +- ext/standard/php_dir.h | 4 +- ext/standard/php_ext_syslog.h | 4 +- ext/standard/php_filestat.h | 4 +- ext/standard/php_fopen_wrapper.c | 42 +- ext/standard/php_fopen_wrappers.h | 4 +- ext/standard/php_ftok.h | 4 +- ext/standard/php_http.h | 4 +- ext/standard/php_image.h | 4 +- ext/standard/php_incomplete_class.h | 8 +- ext/standard/php_iptc.h | 4 +- ext/standard/php_lcg.h | 4 +- ext/standard/php_link.h | 4 +- ext/standard/php_mail.h | 4 +- ext/standard/php_math.h | 4 +- ext/standard/php_metaphone.h | 4 +- ext/standard/php_rand.h | 4 +- ext/standard/php_smart_str.h | 4 +- ext/standard/php_smart_str_public.h | 4 +- ext/standard/php_standard.h | 4 +- ext/standard/php_string.h | 4 +- ext/standard/php_type.h | 4 +- ext/standard/php_uuencode.h | 4 +- ext/standard/php_var.h | 4 +- ext/standard/php_versioning.h | 4 +- ext/standard/proc_open.c | 8 +- ext/standard/proc_open.h | 4 +- ext/standard/quot_print.c | 4 +- ext/standard/quot_print.h | 4 +- ext/standard/rand.c | 12 +- ext/standard/reg.c | 4 +- ext/standard/reg.h | 4 +- ext/standard/scanf.c | 18 +- ext/standard/scanf.h | 4 +- ext/standard/sha1.c | 4 +- ext/standard/sha1.h | 4 +- ext/standard/soundex.c | 4 +- ext/standard/streamsfuncs.c | 75 +- ext/standard/streamsfuncs.h | 4 +- ext/standard/string.c | 38 +- ext/standard/syslog.c | 4 +- ext/standard/tests/array/array_chunk.phpt | 5319 +-- .../tests/array/array_chunk_variation10.phpt | 159 + .../tests/array/array_chunk_variation11.phpt | 93 + .../tests/array/array_chunk_variation12.phpt | 159 + .../tests/array/array_chunk_variation13.phpt | 92 + .../tests/array/array_chunk_variation14.phpt | 159 + .../tests/array/array_chunk_variation15.phpt | 159 + .../tests/array/array_chunk_variation16.phpt | 238 + .../tests/array/array_chunk_variation17.phpt | 238 + .../tests/array/array_chunk_variation18.phpt | 338 + .../tests/array/array_chunk_variation19.phpt | 1018 + .../tests/array/array_chunk_variation20.phpt | 1199 + .../tests/array/array_chunk_variation21.phpt | 46 + .../tests/array/array_chunk_variation22.phpt | 92 + .../tests/array/array_chunk_variation23.phpt | 441 + .../tests/array/array_chunk_variation24.phpt | 46 + .../tests/array/array_chunk_variation25.phpt | 441 + .../tests/array/array_chunk_variation26.phpt | 46 + .../tests/array/array_chunk_variation27.phpt | 46 + .../tests/array/array_chunk_variation28.phpt | 46 + .../tests/array/array_chunk_variation29.phpt | 92 + .../tests/array/array_chunk_variation30.phpt | 159 + .../tests/array/array_chunk_variation31.phpt | 46 + .../tests/array/array_chunk_variation32.phpt | 46 + .../tests/array/array_chunk_variation8.phpt | 46 + .../tests/array/array_chunk_variation9.phpt | 92 + .../tests/array/array_count_values_error.phpt | 50 + .../tests/array/array_count_values_variation.phpt | 47 + .../tests/array/array_diff_assoc_error.phpt | 7 +- ext/standard/tests/array/array_diff_key_error.phpt | 36 + .../tests/array/array_diff_key_variation1.phpt | 389 +- .../tests/array/array_diff_key_variation2.phpt | 310 + .../tests/array/array_diff_key_variation3.phpt | 231 + .../tests/array/array_diff_key_variation4.phpt | 61 + .../tests/array/array_diff_key_variation5.phpt | 34 + .../tests/array/array_diff_key_variation6.phpt | 36 + .../tests/array/array_diff_key_variation7.phpt | 59 + .../tests/array/array_diff_key_variation8.phpt | 54 + .../tests/array/array_diff_uassoc_error.phpt | 63 + .../tests/array/array_diff_uassoc_variation1.phpt | 244 + .../tests/array/array_diff_uassoc_variation10.phpt | 47 + .../tests/array/array_diff_uassoc_variation11.phpt | 45 + .../tests/array/array_diff_uassoc_variation12.phpt | 60 + .../tests/array/array_diff_uassoc_variation13.phpt | 68 + .../tests/array/array_diff_uassoc_variation14.phpt | 40 + .../tests/array/array_diff_uassoc_variation2.phpt | 244 + .../tests/array/array_diff_uassoc_variation3.phpt | 256 + .../tests/array/array_diff_uassoc_variation4.phpt | 246 + .../tests/array/array_diff_uassoc_variation5.phpt | 40 + .../tests/array/array_diff_uassoc_variation6.phpt | 58 + .../tests/array/array_diff_uassoc_variation7.phpt | 47 + .../tests/array/array_diff_uassoc_variation8.phpt | 62 + .../tests/array/array_diff_uassoc_variation9.phpt | 62 + .../tests/array/array_diff_ukey_error.phpt | 55 + .../tests/array/array_diff_ukey_variation1.phpt | 318 + .../tests/array/array_diff_ukey_variation10.phpt | 40 + .../tests/array/array_diff_ukey_variation11.phpt | 53 + .../tests/array/array_diff_ukey_variation2.phpt | 322 + .../tests/array/array_diff_ukey_variation3.phpt | 240 + .../tests/array/array_diff_ukey_variation4.phpt | 236 + .../tests/array/array_diff_ukey_variation5.phpt | 54 + .../tests/array/array_diff_ukey_variation6.phpt | 65 + .../tests/array/array_diff_ukey_variation7.phpt | 42 + .../tests/array/array_diff_ukey_variation8.phpt | 42 + .../tests/array/array_diff_ukey_variation9.phpt | 59 + .../tests/array/array_fill_keys_error.phpt | 45 + .../tests/array/array_fill_keys_variation1.phpt | 79 + .../tests/array/array_fill_keys_variation2.phpt | 81 + .../tests/array/array_fill_keys_variation3.phpt | 54 + .../tests/array/array_fill_keys_variation4.phpt | 91 + .../array/array_intersect_assoc_variation5.phpt | 32 +- .../array/array_intersect_assoc_variation6.phpt | 34 +- .../tests/array/array_intersect_key_error.phpt | 36 + .../array/array_intersect_key_variation1.phpt | 315 + .../array/array_intersect_key_variation2.phpt | 314 + .../array/array_intersect_key_variation3.phpt | 235 + .../array/array_intersect_key_variation4.phpt | 60 + .../array/array_intersect_key_variation5.phpt | 41 + .../array/array_intersect_key_variation6.phpt | 37 + .../array/array_intersect_key_variation7.phpt | 63 + .../array/array_intersect_key_variation8.phpt | 64 + .../tests/array/array_intersect_uassoc_error.phpt | 60 + .../array/array_intersect_uassoc_variation1.phpt | 323 + .../array/array_intersect_uassoc_variation10.phpt | 55 + .../array/array_intersect_uassoc_variation11.phpt | 51 + .../array/array_intersect_uassoc_variation2.phpt | 323 + .../array/array_intersect_uassoc_variation3.phpt | 244 + .../array/array_intersect_uassoc_variation4.phpt | 244 + .../array/array_intersect_uassoc_variation5.phpt | 58 + .../array/array_intersect_uassoc_variation6.phpt | 46 + .../array/array_intersect_uassoc_variation7.phpt | 54 + .../array/array_intersect_uassoc_variation8.phpt | 51 + .../array/array_intersect_uassoc_variation9.phpt | 39 + .../tests/array/array_intersect_ukey_error.phpt | 56 + .../array/array_intersect_ukey_variation1.phpt | 320 + .../array/array_intersect_ukey_variation10.phpt | 52 + .../array/array_intersect_ukey_variation2.phpt | 320 + .../array/array_intersect_ukey_variation3.phpt | 277 + .../array/array_intersect_ukey_variation4.phpt | 321 + .../array/array_intersect_ukey_variation5.phpt | 63 + .../array/array_intersect_ukey_variation6.phpt | 51 + .../array/array_intersect_ukey_variation7.phpt | 63 + .../array/array_intersect_ukey_variation8.phpt | 39 + .../array/array_intersect_ukey_variation9.phpt | 61 + .../tests/array/array_intersect_variation5.phpt | 30 +- .../tests/array/array_intersect_variation6.phpt | 30 +- .../tests/array/array_map_variation19.phpt | 40 + .../tests/array/array_multisort_basic1.phpt | 60 + .../tests/array/array_multisort_basic2.phpt | 44 + .../tests/array/array_multisort_error.phpt | 44 + .../tests/array/array_multisort_variation1.phpt | 207 + .../tests/array/array_multisort_variation10.phpt | 20 + .../tests/array/array_multisort_variation2.phpt | 228 + .../tests/array/array_multisort_variation3.phpt | 208 + .../tests/array/array_multisort_variation4.phpt | 58 + .../tests/array/array_multisort_variation5.phpt | 53 + .../tests/array/array_multisort_variation6.phpt | 53 + .../tests/array/array_multisort_variation7.phpt | 68 + .../tests/array/array_multisort_variation8.phpt | 74 + .../tests/array/array_multisort_variation9.phpt | 78 + ext/standard/tests/array/array_next_error1.phpt | 13 + ext/standard/tests/array/array_next_error2.phpt | 12 + ext/standard/tests/array/array_product_error.phpt | 45 + .../tests/array/array_product_variation1.phpt | 58 + .../tests/array/array_product_variation2.phpt | 22 + .../tests/array/array_product_variation3.phpt | 48 + .../tests/array/array_product_variation4.phpt | 29 + .../tests/array/array_product_variation5.phpt | 223 + ext/standard/tests/array/array_reduce_error.phpt | 42 + .../tests/array/array_reduce_variation1.phpt | 44 + .../tests/array/array_reduce_variation2.phpt | 36 + .../tests/array/array_reduce_variation3.phpt | 36 + .../tests/array/array_slice_variation1.phpt | 262 +- .../tests/array/array_slice_variation2.phpt | 6 +- .../tests/array/array_slice_variation3.phpt | 10 +- ext/standard/tests/array/array_splice_errors.phpt | 4 +- .../tests/array/array_udiff_assoc_error.phpt | 43 + .../tests/array/array_udiff_assoc_variation.phpt | 36 + .../tests/array/array_udiff_assoc_variation1.phpt | 227 + .../tests/array/array_udiff_assoc_variation2.phpt | 227 + .../tests/array/array_udiff_assoc_variation3.phpt | 242 + .../tests/array/array_udiff_assoc_variation4.phpt | 228 + .../tests/array/array_udiff_assoc_variation5.phpt | 60 + ext/standard/tests/array/array_udiff_error.phpt | 43 + .../tests/array/array_udiff_uassoc_error.phpt | 45 + .../tests/array/array_udiff_uassoc_variation1.phpt | 219 + .../tests/array/array_udiff_uassoc_variation2.phpt | 228 + .../tests/array/array_udiff_uassoc_variation3.phpt | 245 + .../tests/array/array_udiff_uassoc_variation4.phpt | 245 + .../tests/array/array_udiff_uassoc_variation5.phpt | 229 + .../tests/array/array_udiff_uassoc_variation6.phpt | 58 + .../tests/array/array_udiff_variation1.phpt | 227 + .../tests/array/array_udiff_variation2.phpt | 227 + .../tests/array/array_udiff_variation3.phpt | 242 + .../tests/array/array_udiff_variation4.phpt | 228 + .../tests/array/array_udiff_variation5.phpt | 55 + .../tests/array/array_uintersect_assoc_basic2.phpt | 36 + .../tests/array/array_uintersect_assoc_error.phpt | 44 + .../array/array_uintersect_assoc_variation1.phpt | 227 + .../array/array_uintersect_assoc_variation2.phpt | 227 + .../array/array_uintersect_assoc_variation3.phpt | 242 + .../array/array_uintersect_assoc_variation4.phpt | 228 + .../array/array_uintersect_assoc_variation5.phpt | 54 + .../tests/array/array_uintersect_error.phpt | 46 + .../tests/array/array_uintersect_uassoc_error.phpt | 46 + .../array/array_uintersect_uassoc_variation1.phpt | 228 + .../array/array_uintersect_uassoc_variation2.phpt | 228 + .../array/array_uintersect_uassoc_variation3.phpt | 245 + .../array/array_uintersect_uassoc_variation4.phpt | 245 + .../array/array_uintersect_uassoc_variation5.phpt | 229 + .../array/array_uintersect_uassoc_variation6.phpt | 56 + .../tests/array/array_uintersect_variation1.phpt | 227 + .../tests/array/array_uintersect_variation2.phpt | 227 + .../tests/array/array_uintersect_variation3.phpt | 242 + .../tests/array/array_uintersect_variation4.phpt | 228 + .../tests/array/array_uintersect_variation5.phpt | 58 + ext/standard/tests/array/array_unique_error.phpt | 6 +- .../tests/array/array_unique_variation1.phpt | 2 +- .../tests/array/array_unique_variation2.phpt | 2 +- .../tests/array/array_unique_variation6.phpt | 2 +- .../tests/array/array_unique_variation8.phpt | 2 +- .../tests/array/array_unshift_variation1.phpt | 9 +- ext/standard/tests/array/array_values_error.phpt | 41 + ext/standard/tests/array/arsort_basic.phpt | 133 + ext/standard/tests/array/arsort_object1.phpt | 90 + ext/standard/tests/array/arsort_object2.phpt | 94 + ext/standard/tests/array/bug42850.phpt | 2 +- ext/standard/tests/array/bug43495.phpt | 2 +- ext/standard/tests/array/bug44181.phpt | 18 + ext/standard/tests/array/bug44182.phpt | 18 + ext/standard/tests/array/bug45312.phpt | 40 + ext/standard/tests/array/bug46873.phpt | 12 + ext/standard/tests/array/compact_variation2.phpt | 40 + ext/standard/tests/array/compare_function.inc | 13 + ext/standard/tests/array/extract_variation10.phpt | 13 + ext/standard/tests/array/extract_variation11.phpt | 13 + ext/standard/tests/array/natsort_basic.phpt | 34 + ext/standard/tests/array/prev_basic.phpt | 53 + ext/standard/tests/array/prev_error1.phpt | 39 + ext/standard/tests/array/prev_error2.phpt | 28 + ext/standard/tests/array/prev_error3.phpt | 19 + ext/standard/tests/array/prev_variation1.phpt | 219 + ext/standard/tests/array/prev_variation2.phpt | 49 + ext/standard/tests/array/rsort_variation3.phpt | 2 +- ext/standard/tests/array/uksort_basic.phpt | 26 + ext/standard/tests/array/uksort_error.phpt | 46 + ext/standard/tests/array/uksort_variation1.phpt | 225 + ext/standard/tests/array/uksort_variation2.phpt | 225 + ext/standard/tests/array/usort_basic.phpt | 119 + ext/standard/tests/array/usort_error1.phpt | 41 + ext/standard/tests/array/usort_error2.phpt | 56 + ext/standard/tests/array/usort_object1.phpt | 141 + ext/standard/tests/array/usort_object2.phpt | 165 + ext/standard/tests/array/usort_variation1.phpt | 234 + ext/standard/tests/array/usort_variation10.phpt | 79 + ext/standard/tests/array/usort_variation2.phpt | 242 + ext/standard/tests/array/usort_variation3.phpt | 115 + ext/standard/tests/array/usort_variation4.phpt | 155 + ext/standard/tests/array/usort_variation5.phpt | 143 + ext/standard/tests/array/usort_variation6.phpt | 139 + ext/standard/tests/array/usort_variation7.phpt | 61 + ext/standard/tests/array/usort_variation8.phpt | 85 + ext/standard/tests/array/usort_variation9.phpt | 66 + ext/standard/tests/array/var_export.phpt | 2 + ext/standard/tests/assert/assert.phpt | 5 + ext/standard/tests/assert/assert02.phpt | 6 + ext/standard/tests/assert/assert03.phpt | 6 + ext/standard/tests/assert/assert04.phpt | 6 + ext/standard/tests/dir/readdir_variation2.phpt | 11 +- ext/standard/tests/dir/rewinddir_basic.phpt | 10 +- ext/standard/tests/dir/rewinddir_variation2.phpt | 2 +- .../tests/directory/DirectoryClass_basic_001.phpt | 53 + .../tests/directory/DirectoryClass_error_001.phpt | 60 + .../tests/directory/directory_constants-win32.phpt | 26 + .../tests/directory/directory_constants.phpt | 26 + ext/standard/tests/file/001-win32.phpt | 29 +- ext/standard/tests/file/005_variation2-win32.phpt | 125 + ext/standard/tests/file/005_variation2.phpt | 113 + ext/standard/tests/file/007_error.phpt | 10 +- ext/standard/tests/file/basename-win32.phpt | 341 + ext/standard/tests/file/basename.phpt | Bin 0 -> 8229 bytes ext/standard/tests/file/basename_basic-win32.phpt | 101 + ext/standard/tests/file/basename_basic.phpt | 101 + ext/standard/tests/file/basename_error.phpt | 40 + .../tests/file/basename_variation1-win32.phpt | 238 + ext/standard/tests/file/basename_variation1.phpt | 238 + .../tests/file/basename_variation2-win32.phpt | 253 + ext/standard/tests/file/basename_variation2.phpt | 253 + ext/standard/tests/file/basename_variation3.phpt | 185 + ext/standard/tests/file/basename_variation4.phpt | 188 + ext/standard/tests/file/bug26615.phpt | 4 +- ext/standard/tests/file/bug26938.phpt | 4 +- ext/standard/tests/file/bug41655_1.phpt | 5 +- ext/standard/tests/file/bug43248.phpt | 2 +- ext/standard/tests/file/bug43353.phpt | 18 + ext/standard/tests/file/bug44607.phpt | 23 + ext/standard/tests/file/bug45181.phpt | 16 + ext/standard/tests/file/bug45303.phpt | 13 + ext/standard/tests/file/chmod_basic-win32.phpt | 545 + ext/standard/tests/file/chmod_basic.phpt | 35 + ext/standard/tests/file/chmod_error.phpt | 47 + ext/standard/tests/file/chmod_variation1.phpt | 34 + .../tests/file/chmod_variation2-win32.phpt | 74 + ext/standard/tests/file/chmod_variation2.phpt | 92 + ext/standard/tests/file/chmod_variation3.phpt | 216 + ext/standard/tests/file/chmod_variation4.phpt | 192 + ext/standard/tests/file/chroot_001.phpt | 30 + .../tests/file/copy_variation12-win32.phpt | 2 +- ext/standard/tests/file/copy_variation13.phpt | 2 +- ext/standard/tests/file/copy_variation18.phpt | 7 +- ext/standard/tests/file/copy_variation4.phpt | Bin 4480 -> 4548 bytes .../tests/file/directory_wrapper_fstat_basic.phpt | 13 + ext/standard/tests/file/dirname_basic-win32.phpt | 93 + ext/standard/tests/file/dirname_basic.phpt | 94 + ext/standard/tests/file/dirname_error.phpt | 39 + ext/standard/tests/file/dirname_variation1.phpt | 190 + ext/standard/tests/file/feof_basic.phpt | 101 + ext/standard/tests/file/fgets_error.phpt | 2 +- .../tests/file/fgets_socket_variation1.phpt | 56 + .../tests/file/fgets_socket_variation2.phpt | 63 + ext/standard/tests/file/fgets_variation2.phpt | 4 +- ext/standard/tests/file/file_exists_error.phpt | 39 + .../tests/file/file_exists_variation1.phpt | 30 + .../tests/file/file_get_contents_basic.phpt | 47 + .../tests/file/file_get_contents_error.phpt | 64 + .../tests/file/file_get_contents_variation1.phpt | 51 + .../tests/file/file_get_contents_variation2.phpt | 52 + .../tests/file/file_get_contents_variation3.phpt | 218 + .../tests/file/file_get_contents_variation4.phpt | 251 + .../tests/file/file_get_contents_variation5.phpt | 222 + .../tests/file/file_get_contents_variation6.phpt | 215 + .../file/file_get_contents_variation7-win32.phpt | 115 + .../tests/file/file_get_contents_variation7.phpt | 104 + .../file/file_get_contents_variation8-win32.phpt | 97 + .../tests/file/file_get_contents_variation8.phpt | 87 + .../tests/file/file_get_contents_variation9.phpt | 56 + .../tests/file/file_put_contents_variation1.phpt | 43 + .../tests/file/file_put_contents_variation2.phpt | 167 + .../tests/file/file_put_contents_variation3.phpt | 250 + .../tests/file/file_put_contents_variation4.phpt | 53 + .../tests/file/file_put_contents_variation5.phpt | 58 + .../tests/file/file_put_contents_variation6.phpt | 54 + .../file/file_put_contents_variation7-win32.phpt | 130 + .../tests/file/file_put_contents_variation7.phpt | 119 + .../file/file_put_contents_variation8-win32.phpt | 98 + .../tests/file/file_put_contents_variation8.phpt | Bin 0 -> 2314 bytes .../tests/file/file_put_contents_variation9.phpt | 70 + ext/standard/tests/file/file_variation2.phpt | 210 + ext/standard/tests/file/file_variation3.phpt | 294 + ext/standard/tests/file/file_variation4.phpt | 291 + ext/standard/tests/file/file_variation5-win32.phpt | 74 + ext/standard/tests/file/file_variation5.phpt | 94 + ext/standard/tests/file/file_variation6.phpt | 261 + ext/standard/tests/file/file_variation7.phpt | 87 + ext/standard/tests/file/file_variation8-win32.phpt | 142 + ext/standard/tests/file/file_variation8.phpt | 128 + ext/standard/tests/file/file_variation9.phpt | 89 + ext/standard/tests/file/filegroup_variation1.phpt | 47 + ext/standard/tests/file/filegroup_variation2.phpt | 70 + ext/standard/tests/file/filegroup_variation3.phpt | 81 + ext/standard/tests/file/fileinode_variation1.phpt | 48 + ext/standard/tests/file/fileinode_variation2.phpt | 71 + ext/standard/tests/file/fileinode_variation3.phpt | 82 + ext/standard/tests/file/fileowner_variation1.phpt | 48 + ext/standard/tests/file/fileowner_variation2.phpt | 71 + ext/standard/tests/file/fileowner_variation3.phpt | 82 + ext/standard/tests/file/fileperms_variation1.phpt | 47 + ext/standard/tests/file/fileperms_variation2.phpt | 70 + ext/standard/tests/file/fileperms_variation3.phpt | 81 + ext/standard/tests/file/filesize_variation1.phpt | 20 +- ext/standard/tests/file/filesize_variation5.phpt | 34 + ext/standard/tests/file/filetype_variation2.phpt | 36 + ext/standard/tests/file/flock_error.phpt | 2 +- ext/standard/tests/file/fopen_include_path.inc | 92 + .../tests/file/fopen_variation10-win32.phpt | 143 + .../tests/file/fopen_variation11-win32.phpt | 142 + ext/standard/tests/file/fopen_variation12.phpt | 53 + ext/standard/tests/file/fopen_variation13.phpt | 56 + .../tests/file/fopen_variation14-win32.phpt | 189 + ext/standard/tests/file/fopen_variation14.phpt | 134 + .../tests/file/fopen_variation15-win32.phpt | 193 + ext/standard/tests/file/fopen_variation15.phpt | 138 + ext/standard/tests/file/fopen_variation16.phpt | 73 + ext/standard/tests/file/fopen_variation17.phpt | 73 + ext/standard/tests/file/fopen_variation19.phpt | 110 + ext/standard/tests/file/fopen_variation3.phpt | 218 + ext/standard/tests/file/fopen_variation4.phpt | 251 + ext/standard/tests/file/fopen_variation5.phpt | 171 + ext/standard/tests/file/fopen_variation6.phpt | 44 + ext/standard/tests/file/fopen_variation7.phpt | 68 + ext/standard/tests/file/fopen_variation8.phpt | 170 + ext/standard/tests/file/fopen_variation9.phpt | 67 + ext/standard/tests/file/fpassthru_error.phpt | 7 + ext/standard/tests/file/fpassthru_variation1.phpt | 223 + ext/standard/tests/file/fputcsv_002.phpt | 43 + ext/standard/tests/file/fread_error.phpt | 2 +- ext/standard/tests/file/fread_fwrite_basic.phpt | 72 + ext/standard/tests/file/fscanf_variation10.phpt | 2 +- ext/standard/tests/file/fscanf_variation16.phpt | 2 +- ext/standard/tests/file/fscanf_variation22.phpt | 2 +- ext/standard/tests/file/fscanf_variation29.phpt | 2 +- ext/standard/tests/file/fscanf_variation35.phpt | 2 +- ext/standard/tests/file/fscanf_variation4.phpt | 2 +- ext/standard/tests/file/fscanf_variation41.phpt | 2 +- ext/standard/tests/file/fscanf_variation47.phpt | 2 +- ext/standard/tests/file/fseek_dir_basic.phpt | 2 +- .../tests/file/fseek_ftell_rewind_error1.phpt | 2 +- .../tests/file/fseek_ftell_rewind_error2.phpt | 2 +- .../tests/file/fseek_ftell_rewind_error3.phpt | 2 +- ext/standard/tests/file/fseek_variation1.phpt | 177 + ext/standard/tests/file/fseek_variation2.phpt | 150 + ext/standard/tests/file/fseek_variation3.phpt | 54 + ext/standard/tests/file/fstat_basic.phpt | 65 + ext/standard/tests/file/fstat_error.phpt | 22 + ext/standard/tests/file/fstat_variation1.phpt | 34 + ext/standard/tests/file/fstat_variation2.phpt | 31 + ext/standard/tests/file/fstat_variation3.phpt | 42 + ext/standard/tests/file/fstat_variation4.phpt | 35 + ext/standard/tests/file/fstat_variation5.phpt | 31 + ext/standard/tests/file/fstat_variation6.phpt | 46 + ext/standard/tests/file/fstat_variation7.phpt | 35 + ext/standard/tests/file/fstat_variation8.phpt | 33 + ext/standard/tests/file/ftruncate_error.phpt | 2 +- ext/standard/tests/file/fwrite_error.phpt | 2 +- ext/standard/tests/file/fwrite_variation5.phpt | 173 + ext/standard/tests/file/glob_basic.phpt | 17 +- ext/standard/tests/file/glob_error_002-win32.phpt | 27 + ext/standard/tests/file/is_dir_variation3.phpt | 2 + .../tests/file/is_executable_variation3.phpt | 2 + ext/standard/tests/file/is_file_variation3.phpt | 2 + ext/standard/tests/file/is_file_variation4.phpt | 2 +- .../tests/file/is_readable_variation1.phpt | 18 +- .../tests/file/is_readable_variation3.phpt | 21 +- .../tests/file/is_uploaded_file_basic.phpt | 50 + .../tests/file/is_writable_variation1.phpt | 20 +- .../tests/file/is_writable_variation3.phpt | 21 +- ext/standard/tests/file/lstat_stat_variation2.phpt | 7 +- .../tests/file/lstat_stat_variation22.phpt | 49 + ext/standard/tests/file/lstat_stat_variation3.phpt | 15 +- .../tests/file/mkdir_variation1-win32.phpt | 123 + ext/standard/tests/file/mkdir_variation1.phpt | 121 + ext/standard/tests/file/mkdir_variation2.phpt | 189 + ext/standard/tests/file/mkdir_variation3.phpt | 208 + ext/standard/tests/file/mkdir_variation4.phpt | 220 + .../tests/file/mkdir_variation5-win32.phpt | 105 + ext/standard/tests/file/mkdir_variation5.phpt | 93 + .../tests/file/move_uploaded_file_basic.phpt | 79 + ext/standard/tests/file/open_basedir.inc | 133 - ext/standard/tests/file/open_basedir_chdir.phpt | 51 - ext/standard/tests/file/open_basedir_chmod.phpt | 71 - ext/standard/tests/file/open_basedir_copy.phpt | 79 - .../tests/file/open_basedir_copy_variation1.phpt | 35 - .../tests/file/open_basedir_disk_free_space.phpt | 52 - ext/standard/tests/file/open_basedir_file.phpt | 88 - .../tests/file/open_basedir_file_exists.phpt | 55 - .../tests/file/open_basedir_file_get_contents.phpt | 75 - .../tests/file/open_basedir_file_put_contents.phpt | 57 - .../tests/file/open_basedir_fileatime.phpt | 55 - .../tests/file/open_basedir_filectime.phpt | 55 - .../tests/file/open_basedir_filegroup.phpt | 55 - .../tests/file/open_basedir_fileinode.phpt | 55 - .../tests/file/open_basedir_filemtime.phpt | 55 - .../tests/file/open_basedir_fileowner.phpt | 55 - .../tests/file/open_basedir_fileperms.phpt | 55 - ext/standard/tests/file/open_basedir_filesize.phpt | 55 - ext/standard/tests/file/open_basedir_filetype.phpt | 55 - ext/standard/tests/file/open_basedir_fopen.phpt | 86 - .../tests/file/open_basedir_glob-win32.phpt | 59 - ext/standard/tests/file/open_basedir_glob.phpt | 58 - ext/standard/tests/file/open_basedir_is_dir.phpt | 55 - .../tests/file/open_basedir_is_executable.phpt | 59 - ext/standard/tests/file/open_basedir_is_file.phpt | 55 - ext/standard/tests/file/open_basedir_is_link.phpt | 55 - .../tests/file/open_basedir_is_readable.phpt | 55 - .../tests/file/open_basedir_is_writable.phpt | 55 - ext/standard/tests/file/open_basedir_link.phpt | 78 - ext/standard/tests/file/open_basedir_linkinfo.phpt | 64 - ext/standard/tests/file/open_basedir_lstat.phpt | 55 - ext/standard/tests/file/open_basedir_mkdir.phpt | 52 - .../tests/file/open_basedir_parse_ini_file.phpt | 74 - ext/standard/tests/file/open_basedir_readlink.phpt | 76 - ext/standard/tests/file/open_basedir_realpath.phpt | 61 - ext/standard/tests/file/open_basedir_rename.phpt | 47 - ext/standard/tests/file/open_basedir_rmdir.phpt | 47 - ext/standard/tests/file/open_basedir_stat.phpt | 55 - ext/standard/tests/file/open_basedir_symlink.phpt | 78 - ext/standard/tests/file/open_basedir_tempnam.phpt | 57 - ext/standard/tests/file/open_basedir_touch.phpt | 70 - ext/standard/tests/file/open_basedir_unlink.phpt | 47 - ext/standard/tests/file/parse_ini_file_error.phpt | 7 +- .../tests/file/parse_ini_file_variation1.phpt | 68 + .../tests/file/parse_ini_file_variation2.phpt | 111 + .../tests/file/parse_ini_file_variation3.phpt | 104 + .../tests/file/parse_ini_file_variation4.phpt | 216 + .../tests/file/parse_ini_file_variation5.phpt | 265 + .../file/parse_ini_file_variation6-win32.phpt | 143 + .../tests/file/parse_ini_file_variation6.phpt | 129 + ext/standard/tests/file/pathinfo_basic1-win32.phpt | 609 + ext/standard/tests/file/pathinfo_basic1.phpt | 609 + ext/standard/tests/file/pathinfo_basic2-win32.phpt | 270 + ext/standard/tests/file/pathinfo_basic2.phpt | 272 + ext/standard/tests/file/pathinfo_variation1.phpt | 190 + ext/standard/tests/file/pathinfo_variation2.phpt | 197 + ext/standard/tests/file/pathinfo_variation3.phpt | 80 + ext/standard/tests/file/pclose_variation1.phpt | 231 + .../tests/file/popen_pclose_error-sunos.phpt | 2 +- ext/standard/tests/file/proc_open01.phpt | 2 +- ext/standard/tests/file/readfile_error.phpt | 8 +- .../tests/file/readfile_variation10-win32.phpt | 87 + ext/standard/tests/file/readfile_variation10.phpt | Bin 0 -> 1789 bytes ext/standard/tests/file/readfile_variation4.phpt | 251 + ext/standard/tests/file/readfile_variation5.phpt | 221 + ext/standard/tests/file/readfile_variation6.phpt | 50 + ext/standard/tests/file/readfile_variation7.phpt | 50 + .../tests/file/readfile_variation8-win32.phpt | 109 + ext/standard/tests/file/readfile_variation9.phpt | 99 + .../tests/file/readlink_realpath_basic1.phpt | 13 +- .../tests/file/readlink_realpath_basic2.phpt | 8 +- ext/standard/tests/file/readlink_variation1.phpt | 77 + ext/standard/tests/file/realpath_variation2.phpt | 74 + ext/standard/tests/file/rename_basic.phpt | 24 +- .../tests/file/rename_variation-win32.phpt | 2 +- ext/standard/tests/file/rename_variation10.phpt | 253 + .../tests/file/rename_variation11-win32.phpt | 128 + ext/standard/tests/file/rename_variation12.phpt | 117 + .../tests/file/rename_variation13-win32.phpt | 139 + ext/standard/tests/file/rename_variation13.phpt | 132 + .../tests/file/rmdir_variation1-win32.phpt | 127 + ext/standard/tests/file/rmdir_variation1.phpt | 127 + ext/standard/tests/file/rmdir_variation2.phpt | 244 + .../tests/file/rmdir_variation3-win32.phpt | 108 + ext/standard/tests/file/rmdir_variation3.phpt | 96 + .../file/symlink_link_linkinfo_is_link_error2.phpt | 6 + ext/standard/tests/file/symlink_to_symlink.phpt | 50 + .../tests/file/tempnam_variation1-win32.phpt | 50 +- ext/standard/tests/file/tempnam_variation1.phpt | 47 +- .../tests/file/tempnam_variation2-win32.phpt | 98 +- ext/standard/tests/file/tempnam_variation2.phpt | 96 +- .../tests/file/tempnam_variation3-win32.phpt | 68 +- ext/standard/tests/file/tempnam_variation3.phpt | 68 +- ext/standard/tests/file/tempnam_variation4.phpt | 1050 +- .../tests/file/tempnam_variation5-win32.phpt | 54 + ext/standard/tests/file/tempnam_variation5.phpt | 14 +- .../tests/file/tempnam_variation6-win32.phpt | 62 + ext/standard/tests/file/tempnam_variation6.phpt | 31 +- .../tests/file/tempnam_variation7-win32.phpt | 51 +- ext/standard/tests/file/tempnam_variation7.phpt | 51 +- .../tests/file/tempnam_variation8-win32.phpt | 147 + ext/standard/tests/file/touch.phpt | 10 +- ext/standard/tests/file/touch_basic-win32.phpt | 95 + ext/standard/tests/file/touch_basic.phpt | 96 + ext/standard/tests/file/touch_error.phpt | 21 + ext/standard/tests/file/touch_variation1.phpt | 39 + ext/standard/tests/file/touch_variation2.phpt | 24 + .../tests/file/touch_variation3-win32.phpt | 198 + ext/standard/tests/file/touch_variation3.phpt | 196 + .../tests/file/touch_variation4-win32.phpt | 198 + ext/standard/tests/file/touch_variation4.phpt | 196 + .../tests/file/touch_variation5-win32.phpt | 249 + ext/standard/tests/file/touch_variation5.phpt | 230 + .../tests/file/touch_variation6-win32.phpt | 263 + ext/standard/tests/file/umask_variation3.phpt | 226 + ext/standard/tests/file/unlink_variation10.phpt | 106 + ext/standard/tests/file/unlink_variation6.phpt | 41 + ext/standard/tests/file/unlink_variation7.phpt | 246 + .../tests/file/unlink_variation8-win32.phpt | 112 + ext/standard/tests/file/unlink_variation8.phpt | 206 + .../tests/file/unlink_variation9-win32.phpt | 120 + ext/standard/tests/file/userstreams_004.phpt | 58 + ext/standard/tests/filters/bug46164-1.phpt | 22 + ext/standard/tests/filters/bug46164-2.phpt | 24 + ext/standard/tests/filters/filter_errors.inc | 34 + .../filter_errors_convert_base64_decode.phpt | 18 + ext/standard/tests/filters/filter_errors_user.phpt | 179 + .../tests/filters/filter_errors_zlib_inflate.phpt | 14 + ext/standard/tests/general_functions/008.phpt | 2 +- ext/standard/tests/general_functions/bug42272.phpt | 2 +- ext/standard/tests/general_functions/bug44394.phpt | 2 +- .../tests/general_functions/bug44394_2.phpt | 6 +- ext/standard/tests/general_functions/bug47027.phpt | 12 + .../call_user_func_array_variation_001.phpt | 57 + .../call_user_func_array_variation_002.phpt | 210 + .../call_user_func_array_variation_003.phpt | 185 + .../escapeshellarg_basic-win32.phpt | 31 + .../general_functions/escapeshellarg_basic.phpt | 31 + .../general_functions/escapeshellarg_error.phpt | 73 + .../escapeshellarg_variation1-win32.phpt | 140 + .../escapeshellarg_variation1.phpt | 140 + .../tests/general_functions/floatval_basic.phpt | 172 + .../tests/general_functions/floatval_error.phpt | 40 + .../general_functions/floatval_variation1.phpt | 154 + .../general_functions/get_defined_vars_basic.phpt | 152 + .../get_extension_funcs_basic.phpt | 23 + .../get_extension_funcs_error.phpt | 40 + .../get_extension_funcs_variation.phpt | 135 + .../general_functions/get_include_path_basic.phpt | 37 + .../general_functions/get_included_files.phpt | 63 + .../general_functions/get_included_files_inc1.inc | 3 + .../general_functions/get_included_files_inc2.inc | 4 + .../general_functions/get_included_files_inc3.inc | 4 + .../general_functions/get_magic_quotes_gpc.phpt | 49 + .../get_magic_quotes_runtime.phpt | 59 + .../tests/general_functions/getmypid_basic.phpt | 24 + .../tests/general_functions/getrusage_basic.phpt | 33 + .../tests/general_functions/getrusage_error.phpt | 73 + .../general_functions/getrusage_variation1.phpt | 142 + .../tests/general_functions/is_callable.phpt | 1119 - .../general_functions/is_callable_basic1.phpt | 109 + .../general_functions/is_callable_basic2.phpt | 835 + .../tests/general_functions/is_callable_error.phpt | 35 + .../general_functions/is_callable_variation1.phpt | 208 + .../general_functions/is_callable_variation2.phpt | 154 + .../tests/general_functions/parse_ini_file.phpt | 16 +- .../tests/general_functions/php_uname_basic.phpt | 35 + .../tests/general_functions/php_uname_error.phpt | 56 + .../general_functions/php_uname_variation1.phpt | 112 + .../set_magic_quotes_runtime_basic.phpt | 52 + .../set_magic_quotes_runtime_error.phpt | 29 + .../set_magic_quotes_runtime_variation1.phpt | 156 + .../tests/general_functions/var_export.phpt | 1054 - .../tests/general_functions/var_export_basic1.phpt | 141 + .../tests/general_functions/var_export_basic2.phpt | 76 + .../tests/general_functions/var_export_basic3.phpt | 175 + .../tests/general_functions/var_export_basic4.phpt | 147 + .../tests/general_functions/var_export_basic5.phpt | 277 + .../tests/general_functions/var_export_basic6.phpt | 310 + .../tests/general_functions/var_export_basic7.phpt | 59 + .../tests/general_functions/var_export_basic8.phpt | 71 + .../tests/general_functions/var_export_error1.phpt | 38 + .../tests/general_functions/var_export_error2.phpt | 25 + .../tests/general_functions/var_export_error3.phpt | 27 + ext/standard/tests/image/200x100.bmp | Bin 0 -> 60054 bytes ext/standard/tests/image/200x100.gif | Bin 0 -> 1031 bytes ext/standard/tests/image/200x100.jpg | Bin 0 -> 991 bytes ext/standard/tests/image/200x100.png | Bin 0 -> 683 bytes ext/standard/tests/image/200x100.swf | Bin 0 -> 71 bytes ext/standard/tests/image/200x100.tif | Bin 0 -> 1142 bytes ext/standard/tests/image/200x100_unknown.unknown | 1 + ext/standard/tests/image/2x2mm.tif | Bin 0 -> 118 bytes ext/standard/tests/image/75x50.wbmp | Bin 0 -> 504 bytes ext/standard/tests/image/75x50.xbm | 59 + ext/standard/tests/image/blank_file | 0 ext/standard/tests/image/blank_file.bmp | 0 ext/standard/tests/image/getimagesize_basic.phpt | 219 + ext/standard/tests/image/getimagesize_error1.phpt | 38 + ext/standard/tests/image/getimagesize_jpgapp.phpt | 37 + ext/standard/tests/image/getimagesize_tif_mm.phpt | 39 + .../tests/image/getimagesize_variation1.phpt | 192 + .../tests/image/getimagesize_variation2.phpt | 167 + .../tests/image/getimagesize_variation3.phpt | 70 + .../tests/image/getimagesize_variation4.phpt | 38 + ext/standard/tests/image/getimagesize_wbmp.phpt | 39 + ext/standard/tests/image/getimagesize_xbm.phpt | 39 + ext/standard/tests/image/test.txt | 1 + ext/standard/tests/image/testAPP.jpg | Bin 0 -> 12174 bytes ext/standard/tests/mail/ezmlm_hash_basic.phpt | 25 + .../tests/mail/ezmlm_hash_basic_64bit.phpt | 25 + ext/standard/tests/mail/ezmlm_hash_error.phpt | 66 + ext/standard/tests/mail/ezmlm_hash_variation1.phpt | 203 + ext/standard/tests/mail/mail_basic.phpt | 59 + ext/standard/tests/mail/mail_basic2.phpt | 48 + ext/standard/tests/mail/mail_basic3.phpt | 35 + ext/standard/tests/mail/mail_basic4.phpt | 36 + ext/standard/tests/mail/mail_basic5.phpt | 34 + ext/standard/tests/mail/mail_basic_alt1-win32.phpt | 95 + ext/standard/tests/mail/mail_basic_alt2-win32.phpt | 93 + ext/standard/tests/mail/mail_basic_alt3-win32.phpt | 93 + ext/standard/tests/mail/mail_basic_alt4-win32.phpt | 94 + ext/standard/tests/mail/mail_error.phpt | 44 + ext/standard/tests/mail/mail_include.inc | 150 + ext/standard/tests/mail/mail_skipif.inc | 16 + ext/standard/tests/mail/mail_variation1.phpt | 30 + ext/standard/tests/mail/mail_variation2.phpt | 39 + .../tests/mail/mail_variation_alt1-win32.phpt | 92 + .../tests/mail/mail_variation_alt2-win32.phpt | 92 + .../tests/mail/mail_variation_alt3-win32.phpt | 91 + ext/standard/tests/math/abs_basic.phpt | 51 + ext/standard/tests/math/abs_error.phpt | 39 + ext/standard/tests/math/abs_variation.phpt | 135 + ext/standard/tests/math/atan2_variation1.phpt | 173 + ext/standard/tests/math/atan2_variation2.phpt | 172 + ext/standard/tests/math/base_convert_error.phpt | 34 +- .../tests/math/base_convert_variation1.phpt | 159 + .../tests/math/base_convert_variation2.phpt | 193 + .../tests/math/base_convert_variation3.phpt | 193 + ext/standard/tests/math/bindec_basic.phpt | 2 + ext/standard/tests/math/bindec_basic_64bit.phpt | 2 + ext/standard/tests/math/bindec_error.phpt | 31 +- ext/standard/tests/math/bindec_variation1.phpt | 158 + .../tests/math/bindec_variation1_64bit.phpt | 158 + ext/standard/tests/math/bug45712.phpt | 73 + ext/standard/tests/math/ceil_basic.phpt | 66 + ext/standard/tests/math/ceil_error.phpt | 33 + ext/standard/tests/math/ceil_variation1.phpt | 128 + ext/standard/tests/math/decbin_error.phpt | 20 +- ext/standard/tests/math/decbin_variation1.phpt | 178 + .../tests/math/decbin_variation1_64bit.phpt | 179 + ext/standard/tests/math/dechex_error.phpt | 19 +- ext/standard/tests/math/dechex_variation1.phpt | 179 + .../tests/math/dechex_variation1_64bit.phpt | 179 + ext/standard/tests/math/decoct_error.phpt | 20 +- ext/standard/tests/math/decoct_variation1.phpt | 180 + .../tests/math/decoct_variation1_64bit.phpt | 180 + ext/standard/tests/math/exp_basic.phpt | 78 + ext/standard/tests/math/exp_variation1.phpt | 187 + ext/standard/tests/math/expm1_basic.phpt | 83 + ext/standard/tests/math/expm1_error.phpt | 37 + ext/standard/tests/math/expm1_variation1.phpt | 185 + ext/standard/tests/math/floor_basic.phpt | 108 + ext/standard/tests/math/floor_error.phpt | 33 + ext/standard/tests/math/floor_variation1.phpt | 128 + ext/standard/tests/math/fmod_variation1.phpt | 184 + ext/standard/tests/math/fmod_variation2.phpt | 184 + ext/standard/tests/math/hexdec_basic_64bit.phpt | 93 + ext/standard/tests/math/hexdec_error.phpt | 28 +- ext/standard/tests/math/hexdec_variation1.phpt | 168 + .../tests/math/hexdec_variation1_64bit.phpt | 168 + ext/standard/tests/math/hypot_basic.phpt | 392 + ext/standard/tests/math/hypot_error.phpt | 25 +- ext/standard/tests/math/hypot_variation1.phpt | 171 + ext/standard/tests/math/hypot_variation2.phpt | 171 + ext/standard/tests/math/is_finite_variation1.phpt | 184 + .../tests/math/is_infinite_variation1.phpt | 184 + ext/standard/tests/math/is_nan_variation1.phpt | 184 + ext/standard/tests/math/log1p_basic.phpt | 82 + ext/standard/tests/math/log1p_error.phpt | 33 + ext/standard/tests/math/log1p_variation1.phpt | 181 + ext/standard/tests/math/log_variation1.phpt | 170 + ext/standard/tests/math/log_variation2.phpt | 200 + ext/standard/tests/math/mt_rand_variation1.phpt | 184 + ext/standard/tests/math/mt_rand_variation2.phpt | 184 + ext/standard/tests/math/mt_srand_variation1.phpt | 184 + ext/standard/tests/math/octdec_basic_64bit.phpt | 54 + ext/standard/tests/math/octdec_error.phpt | 29 +- ext/standard/tests/math/octdec_variation1.phpt | 164 + ext/standard/tests/math/pow_basic.phpt | 294 +- ext/standard/tests/math/pow_basic2.phpt | 52 + ext/standard/tests/math/pow_basic_64bit.phpt | 287 + ext/standard/tests/math/pow_variation1.phpt | 176 + ext/standard/tests/math/pow_variation1_64bit.phpt | 176 + ext/standard/tests/math/pow_variation2.phpt | 172 + ext/standard/tests/math/rand_variation1.phpt | 184 + ext/standard/tests/math/rand_variation2.phpt | 184 + ext/standard/tests/math/round_basic.phpt | 192 + ext/standard/tests/math/round_error.phpt | 33 + ext/standard/tests/math/round_variation1.phpt | 173 + ext/standard/tests/math/round_variation2.phpt | 173 + ext/standard/tests/math/sqrt_variation.phpt | 174 + ext/standard/tests/math/srand_basic.phpt | 14 +- ext/standard/tests/math/srand_error.phpt | 29 +- ext/standard/tests/math/srand_variation1.phpt | 184 + ext/standard/tests/misc/syslog_basic.phpt | 13 + ext/standard/tests/misc/syslog_parameters.phpt | 22 + .../tests/misc/syslog_vars_variation1.phpt | 10 + .../tests/misc/syslog_vars_variation2.phpt | 51 + ext/standard/tests/network/closelog_basic.phpt | 23 + ext/standard/tests/network/closelog_error.phpt | 27 + .../define_syslog_variables_basic-win32.phpt | 105 + .../network/define_syslog_variables_basic.phpt | 124 + .../network/define_syslog_variables_error.phpt | 27 + .../define_syslog_variables_variation-win32.phpt | 96 + .../network/define_syslog_variables_variation.phpt | 96 + .../define_syslog_variables_variation2-win32.phpt | 96 + .../define_syslog_variables_variation2.phpt | 96 + ext/standard/tests/network/fsockopen_basic.phpt | 54 + ext/standard/tests/network/fsockopen_error.phpt | 75 + .../tests/network/fsockopen_variation1.phpt | 32 + .../tests/network/fsockopen_variation2.phpt | 48 + ext/standard/tests/network/inet.phpt | 8 +- ext/standard/tests/network/ip2long_error.phpt | 37 + ext/standard/tests/network/ip2long_variation1.phpt | 199 + ext/standard/tests/network/long2ip_error.phpt | 37 + ext/standard/tests/network/long2ip_variation1.phpt | 196 + .../tests/network/socket_get_status_basic.phpt | 27 + ext/standard/tests/network/syslog_basic-win32.phpt | 31 + ext/standard/tests/network/syslog_error.phpt | 40 + ext/standard/tests/serialize/incomplete_class.phpt | 27 + ext/standard/tests/streams/bug44818.phpt | 37 + ext/standard/tests/streams/bug46024.phpt | 46 + ext/standard/tests/streams/bug46426.phpt | 34 + .../tests/streams/stream_get_contents_001.phpt | 22 + .../tests/streams/stream_get_contents_002.phpt | 18 + ext/standard/tests/streams/stream_get_line_nb.phpt | 66 + .../stream_get_meta_data_socket_variation1.phpt | 3 + .../stream_get_meta_data_socket_variation2.phpt | 3 + .../stream_get_meta_data_socket_variation3.phpt | 3 + .../stream_get_meta_data_socket_variation4.phpt | 3 + .../tests/streams/stream_set_timeout_error.phpt | 5 - ext/standard/tests/streams/stream_socket_pair.phpt | 22 + ext/standard/tests/strings/006.phpt | 6 +- ext/standard/tests/strings/007.phpt | 4 +- .../tests/strings/addslashes_variation1.phpt | 96 +- ext/standard/tests/strings/bin2hex_basic.phpt | 50 + ext/standard/tests/strings/bin2hex_error.phpt | 35 + ext/standard/tests/strings/bin2hex_variation1.phpt | 126 + ext/standard/tests/strings/bug37262.phpt | 4 +- ext/standard/tests/strings/bug40754.phpt | 4 +- ext/standard/tests/strings/bug45166.phpt | 10 + ext/standard/tests/strings/bug45485.phpt | 23 + ext/standard/tests/strings/bug47322.phpt | 19 + ext/standard/tests/strings/chr_basic.phpt | 23 + ext/standard/tests/strings/chr_error.phpt | 34 + ext/standard/tests/strings/chr_variation1.phpt | 125 + .../tests/strings/convert_cyr_string_basic.phpt | 165 + .../tests/strings/convert_cyr_string_error.phpt | 73 + .../strings/convert_cyr_string_variation1.phpt | 137 + .../tests/strings/convert_uudecode_basic.phpt | 54 + .../tests/strings/convert_uudecode_error.phpt | 35 + .../tests/strings/convert_uudecode_variation1.phpt | 161 + .../tests/strings/convert_uuencode_basic.phpt | 88 + .../tests/strings/convert_uuencode_error.phpt | 35 + .../tests/strings/convert_uuencode_variation1.phpt | 137 + ext/standard/tests/strings/count_chars_basic.phpt | 1574 + ext/standard/tests/strings/count_chars_error.phpt | 36 + .../tests/strings/count_chars_variation1.phpt | 289 + .../tests/strings/count_chars_variation2.phpt | 150 + ext/standard/tests/strings/explode.phpt | 3 + ext/standard/tests/strings/explode_bug.phpt | 15 + ext/standard/tests/strings/explode_error.phpt | 37 + ext/standard/tests/strings/explode_variation1.phpt | 203 + ext/standard/tests/strings/explode_variation2.phpt | 209 + ext/standard/tests/strings/explode_variation3.phpt | 244 + ext/standard/tests/strings/explode_variation4.phpt | 36 + ext/standard/tests/strings/explode_variation5.phpt | 48 + ext/standard/tests/strings/explode_variation6.phpt | 70 + ext/standard/tests/strings/hebrev_basic.phpt | 35 + ext/standard/tests/strings/hebrev_error.phpt | 35 + ext/standard/tests/strings/hebrev_variation1.phpt | 136 + ext/standard/tests/strings/hebrev_variation2.phpt | 298 + ext/standard/tests/strings/hebrevc_basic.phpt | 47 + ext/standard/tests/strings/hebrevc_error.phpt | 35 + ext/standard/tests/strings/hebrevc_variation1.phpt | 136 + ext/standard/tests/strings/hebrevc_variation2.phpt | 471 + ext/standard/tests/strings/htmlentities18.phpt | 9 +- ext/standard/tests/strings/levenshtein.phpt | 6 +- ext/standard/tests/strings/ltrim_basic.phpt | 53 + ext/standard/tests/strings/ltrim_error.phpt | 61 + ext/standard/tests/strings/ltrim_variation1.phpt | 136 + ext/standard/tests/strings/ltrim_variation2.phpt | 136 + ext/standard/tests/strings/md5_file.phpt | Bin 3030 -> 3159 bytes .../tests/strings/money_format_basic1.phpt | 84 + .../tests/strings/money_format_basic2.phpt | 84 + .../tests/strings/money_format_basic3.phpt | 83 + ext/standard/tests/strings/money_format_error.phpt | 51 + .../tests/strings/money_format_variation1.phpt | 178 + .../tests/strings/money_format_variation2.phpt | 186 + ext/standard/tests/strings/nl2br_variation5.phpt | 12 +- ext/standard/tests/strings/nl_langinfo_basic.phpt | 37 + ext/standard/tests/strings/nl_langinfo_error1.phpt | 40 + .../tests/strings/nl_langinfo_variation1.phpt | 181 + .../tests/strings/number_format_basic.phpt | 99 + .../tests/strings/number_format_error.phpt | 38 + ext/standard/tests/strings/ord_basic.phpt | 47 + ext/standard/tests/strings/ord_error.phpt | 34 + ext/standard/tests/strings/ord_variation1.phpt | 135 + ext/standard/tests/strings/print_basic.phpt | 92 + ext/standard/tests/strings/print_variation1.phpt | 150 + ext/standard/tests/strings/printf.phpt | 18 +- ext/standard/tests/strings/printf_64bit.phpt | 18 +- ext/standard/tests/strings/printf_basic1.phpt | 62 + ext/standard/tests/strings/printf_basic2.phpt | 62 + ext/standard/tests/strings/printf_basic3.phpt | 82 + ext/standard/tests/strings/printf_basic4.phpt | 61 + ext/standard/tests/strings/printf_basic5.phpt | 61 + ext/standard/tests/strings/printf_basic6.phpt | 60 + ext/standard/tests/strings/printf_basic7.phpt | 68 + ext/standard/tests/strings/printf_basic8.phpt | 67 + ext/standard/tests/strings/printf_basic9.phpt | 83 + ext/standard/tests/strings/printf_error.phpt | 70 + ext/standard/tests/strings/printf_variation1.phpt | 354 + ext/standard/tests/strings/printf_variation2.phpt | 281 + .../strings/quoted_printable_decode_basic.phpt | 25 + .../strings/quoted_printable_decode_error.phpt | 38 + .../quoted_printable_decode_variation1.phpt | 189 + ext/standard/tests/strings/quotemeta_basic.phpt | 23 + ext/standard/tests/strings/quotemeta_error.phpt | 34 + ext/standard/tests/strings/rtrim_basic.phpt | 54 + ext/standard/tests/strings/rtrim_error.phpt | 61 + ext/standard/tests/strings/rtrim_variation1.phpt | 136 + ext/standard/tests/strings/rtrim_variation2.phpt | 136 + ext/standard/tests/strings/sha1_basic.phpt | 70 + ext/standard/tests/strings/sha1_error.phpt | 35 + ext/standard/tests/strings/sha1_file.phpt | 131 + ext/standard/tests/strings/sha1_variation1.phpt | 157 + ext/standard/tests/strings/sha1_variation2.phpt | 160 + ext/standard/tests/strings/similar_text_basic.phpt | 44 + ext/standard/tests/strings/similar_text_error.phpt | 29 + .../tests/strings/sprintf_variation23.phpt | 40 +- .../tests/strings/sprintf_variation36.phpt | 44 +- .../tests/strings/sprintf_variation48.phpt | 9 +- .../tests/strings/sprintf_variation52.phpt | 2 + ext/standard/tests/strings/sscanf_basic1.phpt | 44 + ext/standard/tests/strings/sscanf_basic2.phpt | 44 + ext/standard/tests/strings/sscanf_basic3.phpt | 43 + ext/standard/tests/strings/sscanf_basic4.phpt | 43 + ext/standard/tests/strings/sscanf_basic5.phpt | 58 + ext/standard/tests/strings/sscanf_basic6.phpt | 47 + ext/standard/tests/strings/sscanf_basic7.phpt | 47 + ext/standard/tests/strings/sscanf_basic8.phpt | 65 + ext/standard/tests/strings/sscanf_error.phpt | 44 + ext/standard/tests/strings/sscanf_variation1.phpt | 179 + ext/standard/tests/strings/sscanf_variation2.phpt | 155 + ext/standard/tests/strings/str_pad_variation1.phpt | 138 + ext/standard/tests/strings/str_pad_variation2.phpt | 131 + ext/standard/tests/strings/str_pad_variation3.phpt | 151 + ext/standard/tests/strings/str_pad_variation4.phpt | 158 + ext/standard/tests/strings/str_pad_variation5.phpt | 31 + ext/standard/tests/strings/str_shuffle_basic.phpt | 59 + ext/standard/tests/strings/str_shuffle_error.phpt | 33 + .../tests/strings/str_shuffle_variation1.phpt | 133 + .../tests/strings/strip_tags_variation1.phpt | 98 +- .../tests/strings/strip_tags_variation11.phpt | 41 + .../tests/strings/strip_tags_variation3.phpt | 98 +- .../tests/strings/stripcslashes_basic.phpt | 27 + .../tests/strings/stripcslashes_error.phpt | 35 + .../tests/strings/stripcslashes_variation1.phpt | 172 + .../tests/strings/stripslashes_variation1.phpt | 98 +- .../tests/strings/stripslashes_variation2.phpt | Bin 9548 -> 9548 bytes ext/standard/tests/strings/stristr_basic.phpt | 31 + ext/standard/tests/strings/stristr_error.phpt | 60 + ext/standard/tests/strings/stristr_variation1.phpt | 131 + ext/standard/tests/strings/stristr_variation2.phpt | 127 + ext/standard/tests/strings/strlen_basic.phpt | 24 + ext/standard/tests/strings/strlen_error.phpt | 33 + ext/standard/tests/strings/strlen_variation1.phpt | 135 + ext/standard/tests/strings/strripos_basic1.phpt | 51 + ext/standard/tests/strings/strripos_basic2.phpt | 64 + ext/standard/tests/strings/strripos_error.phpt | 34 + ext/standard/tests/strings/strripos_offset.phpt | 16 +- .../tests/strings/strripos_variation1.phpt | 254 + .../tests/strings/strripos_variation2.phpt | 260 + .../tests/strings/strripos_variation3.phpt | 59 + .../tests/strings/strripos_variation4.phpt | 41 + .../tests/strings/strripos_variation5.phpt | 34 + .../tests/strings/strrpos_variation14.phpt | 2 +- .../tests/strings/strrpos_variation15.phpt | 10 +- ext/standard/tests/strings/strtolower-win32.phpt | Bin 4835 -> 4835 bytes ext/standard/tests/strings/strtoupper1-win32.phpt | Bin 4846 -> 4846 bytes ext/standard/tests/strings/strtr_variation5.phpt | 80 +- ext/standard/tests/strings/strtr_variation6.phpt | 79 +- ext/standard/tests/strings/strtr_variation7.phpt | 78 +- ext/standard/tests/strings/strtr_variation9.phpt | 82 +- ext/standard/tests/strings/strval_basic.phpt | 77 + ext/standard/tests/strings/strval_error.phpt | 50 + ext/standard/tests/strings/strval_variation1.phpt | 190 + ext/standard/tests/strings/strval_variation2.phpt | 82 + .../tests/strings/substr_replace_error.phpt | 70 + ext/standard/tests/strings/trim_basic.phpt | 45 + ext/standard/tests/strings/trim_error.phpt | 61 + ext/standard/tests/strings/trim_variation1.phpt | 136 + ext/standard/tests/strings/trim_variation2.phpt | 136 + ext/standard/tests/strings/unpack_error.phpt | 42 + ext/standard/tests/strings/vfprintf_basic.phpt | 71 + ext/standard/tests/strings/vfprintf_basic1.phpt | 49 + ext/standard/tests/strings/vfprintf_basic2.phpt | 51 + ext/standard/tests/strings/vfprintf_basic3.phpt | 63 + ext/standard/tests/strings/vfprintf_basic4.phpt | 46 + ext/standard/tests/strings/vfprintf_basic5.phpt | 48 + ext/standard/tests/strings/vfprintf_basic6.phpt | 49 + ext/standard/tests/strings/vfprintf_basic7.phpt | 53 + .../tests/strings/vfprintf_basic7_64bit.phpt | 51 + ext/standard/tests/strings/vfprintf_basic8.phpt | 46 + ext/standard/tests/strings/vfprintf_basic9.phpt | 60 + ext/standard/tests/strings/vfprintf_error1.phpt | 46 + ext/standard/tests/strings/vfprintf_error2.phpt | 48 + ext/standard/tests/strings/vfprintf_error3.phpt | 54 + ext/standard/tests/strings/vfprintf_error4.phpt | 43 + .../tests/strings/vfprintf_variation1.phpt | 86 + .../tests/strings/vfprintf_variation10.phpt | Bin 0 -> 2963 bytes .../tests/strings/vfprintf_variation11.phpt | 88 + .../tests/strings/vfprintf_variation11_64bit.phpt | 88 + .../tests/strings/vfprintf_variation12.phpt | 125 + .../tests/strings/vfprintf_variation12_64bit.phpt | 125 + .../tests/strings/vfprintf_variation13.phpt | 88 + .../tests/strings/vfprintf_variation13_64bit.phpt | 88 + .../tests/strings/vfprintf_variation14.phpt | 125 + .../tests/strings/vfprintf_variation14_64bit.phpt | 125 + .../tests/strings/vfprintf_variation15.phpt | 75 + .../tests/strings/vfprintf_variation15_64bit.phpt | 75 + .../tests/strings/vfprintf_variation16.phpt | 112 + .../tests/strings/vfprintf_variation16_64bit.phpt | 112 + .../tests/strings/vfprintf_variation17.phpt | 70 + .../tests/strings/vfprintf_variation18.phpt | 107 + .../tests/strings/vfprintf_variation19.phpt | 94 + .../tests/strings/vfprintf_variation19_64bit.phpt | 94 + .../tests/strings/vfprintf_variation20.phpt | 175 + .../tests/strings/vfprintf_variation21.phpt | 167 + .../tests/strings/vfprintf_variation3.phpt | 87 + .../tests/strings/vfprintf_variation4.phpt | 113 + .../tests/strings/vfprintf_variation4_64bit.phpt | 113 + .../tests/strings/vfprintf_variation5.phpt | 85 + .../tests/strings/vfprintf_variation6.phpt | 108 + .../tests/strings/vfprintf_variation7.phpt | Bin 0 -> 2391 bytes .../tests/strings/vfprintf_variation8.phpt | 111 + .../tests/strings/vfprintf_variation9.phpt | Bin 0 -> 1857 bytes ext/standard/tests/strings/vprintf_basic1.phpt | 42 + ext/standard/tests/strings/vprintf_basic2.phpt | 47 + ext/standard/tests/strings/vprintf_basic3.phpt | 66 + ext/standard/tests/strings/vprintf_basic4.phpt | 43 + ext/standard/tests/strings/vprintf_basic5.phpt | 43 + ext/standard/tests/strings/vprintf_basic6.phpt | 43 + ext/standard/tests/strings/vprintf_basic7.phpt | 47 + .../tests/strings/vprintf_basic7_64bit.phpt | 46 + ext/standard/tests/strings/vprintf_basic8.phpt | 43 + ext/standard/tests/strings/vprintf_basic9.phpt | 62 + ext/standard/tests/strings/vprintf_error.phpt | 46 + ext/standard/tests/strings/vprintf_variation1.phpt | 219 + .../tests/strings/vprintf_variation10.phpt | Bin 0 -> 2783 bytes .../tests/strings/vprintf_variation11.phpt | 94 + .../tests/strings/vprintf_variation11_64bit.phpt | 94 + .../tests/strings/vprintf_variation12.phpt | 125 + .../tests/strings/vprintf_variation12_64bit.phpt | 125 + .../tests/strings/vprintf_variation13.phpt | 94 + .../tests/strings/vprintf_variation13_64bit.phpt | 94 + .../tests/strings/vprintf_variation14.phpt | 126 + .../tests/strings/vprintf_variation14_64bit.phpt | 126 + .../tests/strings/vprintf_variation15.phpt | 75 + .../tests/strings/vprintf_variation15_64bit.phpt | 75 + .../tests/strings/vprintf_variation16.phpt | 109 + .../tests/strings/vprintf_variation16_64bit.phpt | 110 + .../tests/strings/vprintf_variation17.phpt | 71 + .../tests/strings/vprintf_variation18.phpt | 106 + .../tests/strings/vprintf_variation19.phpt | 104 + .../tests/strings/vprintf_variation19_64bit.phpt | 104 + ext/standard/tests/strings/vprintf_variation2.phpt | 202 + ext/standard/tests/strings/vprintf_variation3.phpt | 91 + ext/standard/tests/strings/vprintf_variation4.phpt | 110 + .../tests/strings/vprintf_variation4_64bit.phpt | 110 + ext/standard/tests/strings/vprintf_variation5.phpt | 91 + ext/standard/tests/strings/vprintf_variation6.phpt | 106 + ext/standard/tests/strings/vprintf_variation7.phpt | Bin 0 -> 2230 bytes ext/standard/tests/strings/vprintf_variation8.phpt | 109 + ext/standard/tests/strings/vprintf_variation9.phpt | Bin 0 -> 1698 bytes .../tests/strings/vsprintf_variation15.phpt | 10 +- .../tests/strings/vsprintf_variation8.phpt | 40 +- .../tests/url/base64_decode_variation_001.phpt | 188 +- .../tests/url/base64_decode_variation_002.phpt | 186 +- .../tests/url/base64_encode_basic_002.phpt | 59 + ext/standard/tests/url/bug47174.phpt | 18 + ext/standard/type.c | 4 +- ext/standard/uniqid.c | 6 +- ext/standard/uniqid.h | 4 +- ext/standard/url.c | 4 +- ext/standard/url.h | 4 +- ext/standard/url_scanner.c | 4 +- ext/standard/url_scanner.h | 4 +- ext/standard/url_scanner_ex.c | 480 +- ext/standard/url_scanner_ex.c.orig | 538 +- ext/standard/url_scanner_ex.h | 4 +- ext/standard/user_filters.c | 21 +- ext/standard/uuencode.c | 4 +- ext/standard/var.c | 16 +- ext/standard/var_unserializer.c | 710 +- ext/standard/var_unserializer.c.orig | 740 +- ext/standard/var_unserializer.re | 4 +- ext/standard/versioning.c | 4 +- ext/sybase/php_sybase_db.c | 4 +- ext/sybase/php_sybase_db.h | 4 +- ext/sybase_ct/php_sybase_ct.c | 47 +- ext/sybase_ct/php_sybase_ct.h | 4 +- ext/sybase_ct/tests/bug29064.phpt | 10 +- ext/sybase_ct/tests/bug30312.phpt | 10 +- ext/sybase_ct/tests/skipif.inc | 7 +- ext/sybase_ct/tests/test.inc | 8 +- ext/sybase_ct/tests/test_appname.phpt | 12 +- .../tests/test_unbuffered_no_full_fetch.phpt | 37 + ext/sysvmsg/php_sysvmsg.h | 4 +- ext/sysvmsg/sysvmsg.c | 6 +- ext/sysvsem/php_sysvsem.h | 4 +- ext/sysvsem/sysvsem.c | 4 +- ext/sysvshm/php_sysvshm.h | 4 +- ext/sysvshm/sysvshm.c | 4 +- ext/tidy/php_tidy.h | 4 +- ext/tidy/tests/019.phpt | 4 + ext/tidy/tests/022.phpt | 4 + ext/tidy/tidy.c | 6 +- ext/tokenizer/php_tokenizer.h | 4 +- ext/tokenizer/tokenizer.c | 4 +- ext/tokenizer/tokenizer_data.c | 4 +- ext/wddx/php_wddx.h | 4 +- ext/wddx/php_wddx_api.h | 4 +- ext/wddx/tests/002.phpt | 21 + ext/wddx/tests/003.phpt | 26 + ext/wddx/tests/004.phpt | 63 + ext/wddx/tests/005.phpt | 74 + ext/wddx/tests/bug37569.phpt | 776 +- ext/wddx/tests/bug37587.phpt | 6 +- ext/wddx/tests/bug45901.phpt | 18 + ext/wddx/wddx.c | 74 +- ext/xml/compat.c | 85 +- ext/xml/expat_compat.h | 4 +- ext/xml/php_xml.h | 4 +- ext/xml/tests/bug43957.phpt | 2 +- ext/xml/tests/bug46699.phpt | 33 + ext/xml/tests/utf8_decode_error.phpt | 43 + ext/xml/tests/utf8_decode_variation1.phpt | 165 + ext/xml/tests/utf8_encode_error.phpt | 43 + ext/xml/tests/utf8_encode_variation1.phpt | 165 + ext/xml/tests/xml_error_string_error.phpt | 43 + ext/xml/tests/xml_error_string_variation1.phpt | 157 + .../tests/xml_get_current_byte_index_error.phpt | 43 + .../xml_get_current_byte_index_variation1.phpt | 239 + .../tests/xml_get_current_column_number_error.phpt | 43 + .../xml_get_current_column_number_variation1.phpt | 240 + .../tests/xml_get_current_line_number_error.phpt | 43 + .../xml_get_current_line_number_variation1.phpt | 239 + ext/xml/tests/xml_get_error_code_error.phpt | 43 + ext/xml/tests/xml_get_error_code_variation1.phpt | 239 + ext/xml/tests/xml_parse_error.phpt | 47 + ext/xml/tests/xml_parse_into_struct_error.phpt | 48 + ext/xml/tests/xml_parse_into_struct_variation.phpt | 120 + .../tests/xml_parse_into_struct_variation1.phpt | 240 + ext/xml/tests/xml_parse_variation1.phpt | 241 + ext/xml/tests/xml_parser_create_error.phpt | 35 + ext/xml/tests/xml_parser_create_ns_error.phpt | 36 + ext/xml/tests/xml_parser_create_ns_variation1.phpt | 245 + ext/xml/tests/xml_parser_create_variation1.phpt | 245 + ext/xml/tests/xml_parser_free_error.phpt | 43 + ext/xml/tests/xml_parser_free_variation1.phpt | 239 + ext/xml/tests/xml_parser_get_option_error.phpt | 45 + .../tests/xml_parser_get_option_variation1.phpt | 240 + .../tests/xml_parser_get_option_variation2.phpt | 215 + ext/xml/tests/xml_parser_set_option_basic.phpt | 57 + ext/xml/tests/xml_parser_set_option_error.phpt | 48 + .../tests/xml_parser_set_option_variation1.phpt | 240 + .../tests/xml_parser_set_option_variation2.phpt | 204 + .../tests/xml_parser_set_option_variation3.phpt | 187 + .../xml_set_character_data_handler_error.phpt | 46 + .../xml_set_character_data_handler_variation1.phpt | 244 + ext/xml/tests/xml_set_default_handler_error.phpt | 46 + .../tests/xml_set_default_handler_variation1.phpt | 244 + ext/xml/tests/xml_set_element_handler_error.phpt | 46 + .../tests/xml_set_element_handler_variation1.phpt | 244 + .../xml_set_end_namespace_decl_handler_error.phpt | 46 + ..._set_end_namespace_decl_handler_variation1.phpt | 244 + .../xml_set_external_entity_ref_handler_error.phpt | 46 + ...set_external_entity_ref_handler_variation1.phpt | 244 + .../tests/xml_set_notation_decl_handler_basic.phpt | 102 + .../tests/xml_set_notation_decl_handler_error.phpt | 46 + .../xml_set_notation_decl_handler_variation1.phpt | 244 + ext/xml/tests/xml_set_object_error.phpt | 50 + ext/xml/tests/xml_set_object_variation1.phpt | 240 + ext/xml/tests/xml_set_object_variation2.phpt | 229 + ...l_set_processing_instruction_handler_basic.phpt | 52 + ...l_set_processing_instruction_handler_error.phpt | 46 + ..._processing_instruction_handler_variation1.phpt | 244 + ...xml_set_start_namespace_decl_handler_basic.phpt | 61 + ...xml_set_start_namespace_decl_handler_error.phpt | 46 + ...et_start_namespace_decl_handler_variation1.phpt | 244 + ...xml_set_unparsed_entity_decl_handler_error.phpt | 46 + ...et_unparsed_entity_decl_handler_variation1.phpt | 244 + ext/xml/xml.c | 4 +- ext/xmlreader/php_xmlreader.c | 4 +- ext/xmlreader/php_xmlreader.h | 4 +- ext/xmlrpc/libxmlrpc/xml_element.c | 17 +- ext/xmlrpc/libxmlrpc/xmlrpc.c | 57 +- ext/xmlrpc/php_xmlrpc.h | 4 +- ext/xmlrpc/tests/bug18916.phpt | 21 + ext/xmlrpc/tests/bug40576.phpt | 4 +- ext/xmlrpc/tests/bug45226.phpt | 53 + ext/xmlrpc/tests/bug45555.phpt | 20 + ext/xmlrpc/tests/bug45556.phpt | 32 + ext/xmlrpc/xmlrpc-epi-php.c | 941 +- ext/xmlwriter/php_xmlwriter.c | 12 +- ext/xmlwriter/php_xmlwriter.h | 4 +- ext/xsl/php_xsl.c | 4 +- ext/xsl/php_xsl.h | 4 +- ext/xsl/xsl_fe.h | 4 +- ext/xsl/xsltprocessor.c | 16 +- ext/zip/Makefile.frag | 28 - ext/zip/config.m4 | 18 +- ext/zip/config.w32 | 6 +- ext/zip/lib/mkstemp.c | 136 - ext/zip/lib/unistd.h | 3 - ext/zip/lib/zip.h | 117 +- ext/zip/lib/zip_add.c | 10 +- ext/zip/lib/zip_add_dir.c | 9 +- ext/zip/lib/zip_alias.h | 45 - ext/zip/lib/zip_close.c | 260 +- ext/zip/lib/zip_delete.c | 9 +- ext/zip/lib/zip_dirent.c | 102 +- ext/zip/lib/zip_entry_free.c | 9 +- ext/zip/lib/zip_entry_new.c | 9 +- ext/zip/lib/zip_err_str.c | 4 - ext/zip/lib/zip_error.c | 19 +- ext/zip/lib/zip_error_clear.c | 9 +- ext/zip/lib/zip_error_get.c | 9 +- ext/zip/lib/zip_error_get_sys_type.c | 9 +- ext/zip/lib/zip_error_strerror.c | 19 +- ext/zip/lib/zip_error_to_str.c | 9 +- ext/zip/lib/zip_fclose.c | 10 +- ext/zip/lib/zip_file_error_clear.c | 9 +- ext/zip/lib/zip_file_error_get.c | 9 +- ext/zip/lib/zip_file_get_offset.c | 14 +- ext/zip/lib/zip_file_strerror.c | 9 +- ext/zip/lib/zip_filerange_crc.c | 71 + ext/zip/lib/zip_fopen.c | 9 +- ext/zip/lib/zip_fopen_index.c | 13 +- ext/zip/lib/zip_fread.c | 9 +- ext/zip/lib/zip_free.c | 13 +- ext/zip/lib/zip_get_archive_comment.c | 14 +- ext/zip/lib/zip_get_archive_flag.c | 48 + ext/zip/lib/zip_get_file_comment.c | 9 +- ext/zip/lib/zip_get_name.c | 11 +- ext/zip/lib/zip_get_num_files.c | 9 +- ext/zip/lib/zip_memdup.c | 9 +- ext/zip/lib/zip_name_locate.c | 25 +- ext/zip/lib/zip_new.c | 11 +- ext/zip/lib/zip_open.c | 377 +- ext/zip/lib/zip_rename.c | 27 +- ext/zip/lib/zip_replace.c | 28 +- ext/zip/lib/zip_set_archive_comment.c | 11 +- ext/zip/lib/zip_set_archive_flag.c | 49 + ext/zip/lib/zip_set_file_comment.c | 9 +- ext/zip/lib/zip_set_name.c | 10 +- ext/zip/lib/zip_source_buffer.c | 13 +- ext/zip/lib/zip_source_file.c | 28 +- ext/zip/lib/zip_source_filep.c | 60 +- ext/zip/lib/zip_source_free.c | 9 +- ext/zip/lib/zip_source_function.c | 9 +- ext/zip/lib/zip_source_zip.c | 13 +- ext/zip/lib/zip_stat.c | 9 +- ext/zip/lib/zip_stat_index.c | 11 +- ext/zip/lib/zip_stat_init.c | 8 +- ext/zip/lib/zip_strerror.c | 10 +- ext/zip/lib/zip_unchange.c | 12 +- ext/zip/lib/zip_unchange_all.c | 12 +- ext/zip/lib/zip_unchange_archive.c | 12 +- ext/zip/lib/zip_unchange_data.c | 6 +- ext/zip/lib/zip_win32.h | 9 + ext/zip/lib/zipint.h | 126 +- ext/zip/lib/zipint_alias.h | 49 - ext/zip/php_zip.c | 650 +- ext/zip/php_zip.h | 19 +- ext/zip/tests/bug11216.phpt | 6 +- ext/zip/tests/bug14962.phpt | 34 + ext/zip/tests/bug38943.inc | 16 + ext/zip/tests/bug38943.phpt | 20 +- ext/zip/tests/bug38943_2.phpt | 38 + ext/zip/tests/bug38944.phpt | 4 +- ext/zip/tests/bug7658.phpt | 67 +- ext/zip/tests/oo_delete.phpt | 9 +- ext/zip/tests/oo_properties.phpt | 6 +- ext/zip/zip_stream.c | 2 +- ext/zlib/php_zlib.h | 4 +- ext/zlib/tests/data.inc | 88 + ext/zlib/tests/gzclose_basic.phpt | 39 + ext/zlib/tests/gzclose_error.phpt | 33 + ext/zlib/tests/gzcompress_basic1.phpt | 125 + ext/zlib/tests/gzcompress_error1.phpt | 78 + ext/zlib/tests/gzcompress_variation1.phpt | 36 + ext/zlib/tests/gzdeflate_basic1.phpt | 125 + ext/zlib/tests/gzdeflate_error1.phpt | 76 + ext/zlib/tests/gzdeflate_variation1.phpt | 36 + ext/zlib/tests/gzencode_basic1.phpt | 102 + ext/zlib/tests/gzencode_error1.phpt | 98 + ext/zlib/tests/gzencode_variation1.phpt | 33 + ext/zlib/tests/gzencode_variation2.phpt | 36 + ext/zlib/tests/gzeof_basic.phpt | 58 + ext/zlib/tests/gzeof_error.phpt | 28 + ext/zlib/tests/gzeof_variation1.phpt | 31 + ext/zlib/tests/gzfile_basic.phpt | 39 + ext/zlib/tests/gzfile_basic2.phpt | 39 + ext/zlib/tests/gzfile_error.phpt | 29 + ext/zlib/tests/gzfile_variation1.phpt | 43 + ext/zlib/tests/gzfile_variation10.phpt | 119 + ext/zlib/tests/gzfile_variation11.phpt | 129 + ext/zlib/tests/gzfile_variation12.phpt | 108 + ext/zlib/tests/gzfile_variation13.phpt | 51 + ext/zlib/tests/gzfile_variation14.phpt | 44 + ext/zlib/tests/gzfile_variation15.phpt | 108 + ext/zlib/tests/gzfile_variation2.phpt | 40 + ext/zlib/tests/gzfile_variation3.phpt | 50 + ext/zlib/tests/gzfile_variation4.phpt | 43 + ext/zlib/tests/gzfile_variation5.phpt | 39 + ext/zlib/tests/gzfile_variation6.phpt | 49 + ext/zlib/tests/gzfile_variation7.phpt | 44 + ext/zlib/tests/gzfile_variation8.phpt | 43 + ext/zlib/tests/gzfile_variation9.phpt | 107 + ext/zlib/tests/gzgetc_basic.phpt | 38 + ext/zlib/tests/gzgetc_error.phpt | 29 + ext/zlib/tests/gzgets_basic.phpt | 46 + ext/zlib/tests/gzgets_error.phpt | 30 + ext/zlib/tests/gzinflate_error1.phpt | 75 + ext/zlib/tests/gzopen_basic.phpt | 51 + ext/zlib/tests/gzopen_basic2.phpt | 52 + ext/zlib/tests/gzopen_error.phpt | 47 + ext/zlib/tests/gzopen_include_path.inc | 92 + ext/zlib/tests/gzopen_variation1.phpt | 227 + ext/zlib/tests/gzopen_variation2.phpt | 227 + ext/zlib/tests/gzopen_variation3.phpt | 218 + ext/zlib/tests/gzopen_variation4.phpt | 173 + ext/zlib/tests/gzopen_variation5.phpt | 71 + ext/zlib/tests/gzopen_variation6.phpt | 47 + ext/zlib/tests/gzopen_variation7.phpt | 31 + ext/zlib/tests/gzopen_variation8.phpt | 42 + ext/zlib/tests/gzopen_variation9.phpt | 55 + ext/zlib/tests/gzpassthru_basic.phpt | 32 + ext/zlib/tests/gzpassthru_error.phpt | 29 + ext/zlib/tests/gzputs_basic.phpt | 31 + ext/zlib/tests/gzread_basic.phpt | 37 + ext/zlib/tests/gzread_error.phpt | 32 + ext/zlib/tests/gzread_error2.phpt | 32 + ext/zlib/tests/gzread_variation1.phpt | 34 + ext/zlib/tests/gzrewind_basic.phpt | 36 + ext/zlib/tests/gzrewind_basic2.phpt | 34 + ext/zlib/tests/gzrewind_error.phpt | 27 + ext/zlib/tests/gzrewind_variation1.phpt | 28 + ext/zlib/tests/gzseek_basic.phpt | 49 + ext/zlib/tests/gzseek_basic2.phpt | 42 + ext/zlib/tests/gzseek_error.phpt | 33 + ext/zlib/tests/gzseek_variation1.phpt | 33 + ext/zlib/tests/gzseek_variation2.phpt | 49 + ext/zlib/tests/gzseek_variation3.phpt | 50 + ext/zlib/tests/gzseek_variation4.phpt | 42 + ext/zlib/tests/gzseek_variation5.phpt | 42 + ext/zlib/tests/gzseek_variation6.phpt | 39 + ext/zlib/tests/gzseek_variation7.phpt | 47 + ext/zlib/tests/gztell_basic.phpt | 34 + ext/zlib/tests/gztell_basic2.phpt | 42 + ext/zlib/tests/gztell_error.phpt | 26 + ext/zlib/tests/gzuncompress_basic1.phpt | 43 + ext/zlib/tests/gzuncompress_error1.phpt | 84 + ext/zlib/tests/gzwrite_basic.phpt | 31 + ext/zlib/tests/gzwrite_error.phpt | 35 + ext/zlib/tests/gzwrite_error2.phpt | 30 + ext/zlib/tests/gzwrite_variation1.phpt | 27 + ext/zlib/tests/readgzfile_basic.phpt | 34 + ext/zlib/tests/readgzfile_basic2.phpt | 34 + ext/zlib/tests/readgzfile_error.phpt | 29 + ext/zlib/tests/readgzfile_variation1.phpt | 43 + ext/zlib/tests/readgzfile_variation10.phpt | 67 + ext/zlib/tests/readgzfile_variation11.phpt | 64 + ext/zlib/tests/readgzfile_variation12.phpt | 56 + ext/zlib/tests/readgzfile_variation13.phpt | 51 + ext/zlib/tests/readgzfile_variation14.phpt | 44 + ext/zlib/tests/readgzfile_variation15.phpt | 93 + ext/zlib/tests/readgzfile_variation2.phpt | 40 + ext/zlib/tests/readgzfile_variation3.phpt | 50 + ext/zlib/tests/readgzfile_variation4.phpt | 34 + ext/zlib/tests/readgzfile_variation5.phpt | 32 + ext/zlib/tests/readgzfile_variation6.phpt | 48 + ext/zlib/tests/readgzfile_variation7.phpt | 36 + ext/zlib/tests/readgzfile_variation8.phpt | 43 + ext/zlib/tests/readgzfile_variation9.phpt | 55 + ext/zlib/tests/reading_include_path.inc | 27 + ext/zlib/tests/zlib_scheme_copy_basic.phpt | 37 + ext/zlib/tests/zlib_scheme_copy_variation1.phpt | 38 + ext/zlib/tests/zlib_scheme_copy_variation2.phpt | 53 + ext/zlib/tests/zlib_scheme_dir_basic.phpt | 26 + ext/zlib/tests/zlib_scheme_file_basic.phpt | 38 + .../tests/zlib_scheme_file_get_contents_basic.phpt | 24 + .../tests/zlib_scheme_file_put_contents_basic.phpt | 31 + .../tests/zlib_scheme_file_read_file_basic.phpt | 23 + ext/zlib/tests/zlib_scheme_fopen_basic.phpt | 25 + ext/zlib/tests/zlib_scheme_fopen_variation1.phpt | 30 + ext/zlib/tests/zlib_scheme_rename_basic.phpt | 21 + ext/zlib/tests/zlib_scheme_stat_basic.phpt | 22 + ext/zlib/tests/zlib_scheme_stat_basic2.phpt | 46 + ext/zlib/tests/zlib_scheme_unlink_basic.phpt | 21 + ext/zlib/tests/zlib_wrapper_fflush_basic.phpt | 33 + ext/zlib/tests/zlib_wrapper_flock_basic.phpt | 19 + ext/zlib/tests/zlib_wrapper_fstat_basic.phpt | 19 + ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt | 32 + ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt | 65 + ext/zlib/zlib.c | 33 +- ext/zlib/zlib_filter.c | 23 +- ext/zlib/zlib_fopen_wrapper.c | 8 +- 2706 files changed, 238369 insertions(+), 64957 deletions(-) create mode 100644 ext/curl/tests/bug45161.phpt create mode 100644 ext/curl/tests/bug46739.phpt create mode 100644 ext/date/tests/bug43452.phpt create mode 100644 ext/date/tests/bug46268.phpt create mode 100644 ext/date/tests/date_default_timezone_get_error.phpt create mode 100644 ext/date/tests/date_default_timezone_set_error.phpt create mode 100644 ext/date/tests/date_default_timezone_set_variation1.phpt create mode 100644 ext/date/tests/date_sun_info_error.phpt create mode 100644 ext/date/tests/date_sun_info_variation1.phpt create mode 100644 ext/date/tests/date_sun_info_variation2.phpt create mode 100644 ext/date/tests/date_sun_info_variation3.phpt create mode 100644 ext/date/tests/date_sunrise_and_sunset_basic.phpt create mode 100644 ext/date/tests/date_sunrise_error.phpt create mode 100644 ext/date/tests/date_sunrise_variation1.phpt create mode 100644 ext/date/tests/date_sunrise_variation2.phpt create mode 100644 ext/date/tests/date_sunrise_variation3.phpt create mode 100644 ext/date/tests/date_sunrise_variation4.phpt create mode 100644 ext/date/tests/date_sunrise_variation5.phpt create mode 100644 ext/date/tests/date_sunrise_variation6.phpt create mode 100644 ext/date/tests/date_sunrise_variation7.phpt create mode 100644 ext/date/tests/date_sunrise_variation8.phpt create mode 100644 ext/date/tests/date_sunrise_variation9.phpt create mode 100644 ext/date/tests/date_sunset_error.phpt create mode 100644 ext/date/tests/date_sunset_variation1.phpt create mode 100644 ext/date/tests/date_sunset_variation2.phpt create mode 100644 ext/date/tests/date_sunset_variation3.phpt create mode 100644 ext/date/tests/date_sunset_variation4.phpt create mode 100644 ext/date/tests/date_sunset_variation5.phpt create mode 100644 ext/date/tests/date_sunset_variation6.phpt create mode 100644 ext/date/tests/date_sunset_variation7.phpt create mode 100644 ext/date/tests/date_sunset_variation8.phpt create mode 100644 ext/date/tests/date_sunset_variation9.phpt create mode 100644 ext/date/tests/getdate_basic.phpt create mode 100644 ext/date/tests/getdate_error.phpt create mode 100644 ext/date/tests/getdate_variation1.phpt create mode 100644 ext/date/tests/getdate_variation2.phpt create mode 100644 ext/date/tests/getdate_variation3.phpt create mode 100644 ext/date/tests/getdate_variation4.phpt create mode 100644 ext/date/tests/getdate_variation5.phpt create mode 100644 ext/date/tests/getdate_variation6.phpt create mode 100644 ext/date/tests/getdate_variation7.phpt create mode 100644 ext/date/tests/gettimeofday_basic.phpt create mode 100644 ext/date/tests/gettimeofday_error.phpt create mode 100644 ext/date/tests/gettimeofday_variation1.phpt create mode 100644 ext/date/tests/gmdate_basic.phpt create mode 100644 ext/date/tests/gmdate_error.phpt create mode 100644 ext/date/tests/gmdate_variation1.phpt create mode 100644 ext/date/tests/gmdate_variation10.phpt create mode 100644 ext/date/tests/gmdate_variation11.phpt create mode 100644 ext/date/tests/gmdate_variation12.phpt create mode 100644 ext/date/tests/gmdate_variation13.phpt create mode 100644 ext/date/tests/gmdate_variation14.phpt create mode 100644 ext/date/tests/gmdate_variation2.phpt create mode 100644 ext/date/tests/gmdate_variation3.phpt create mode 100644 ext/date/tests/gmdate_variation4.phpt create mode 100644 ext/date/tests/gmdate_variation5.phpt create mode 100644 ext/date/tests/gmdate_variation6.phpt create mode 100644 ext/date/tests/gmdate_variation7.phpt create mode 100644 ext/date/tests/gmdate_variation8.phpt create mode 100644 ext/date/tests/gmdate_variation9.phpt create mode 100644 ext/date/tests/gmmktime_basic.phpt create mode 100644 ext/date/tests/gmmktime_error.phpt create mode 100644 ext/date/tests/gmmktime_variation1.phpt create mode 100644 ext/date/tests/gmmktime_variation2.phpt create mode 100644 ext/date/tests/gmmktime_variation3.phpt create mode 100644 ext/date/tests/gmmktime_variation4.phpt create mode 100644 ext/date/tests/gmmktime_variation5.phpt create mode 100644 ext/date/tests/gmmktime_variation6.phpt create mode 100644 ext/date/tests/gmmktime_variation7.phpt create mode 100644 ext/date/tests/gmmktime_variation8.phpt create mode 100644 ext/date/tests/gmmktime_variation9.phpt create mode 100644 ext/date/tests/gmstrftime_basic.phpt create mode 100644 ext/date/tests/gmstrftime_error.phpt create mode 100644 ext/date/tests/gmstrftime_variation1.phpt create mode 100644 ext/date/tests/gmstrftime_variation10.phpt create mode 100644 ext/date/tests/gmstrftime_variation11.phpt create mode 100644 ext/date/tests/gmstrftime_variation12.phpt create mode 100644 ext/date/tests/gmstrftime_variation13.phpt create mode 100644 ext/date/tests/gmstrftime_variation14.phpt create mode 100644 ext/date/tests/gmstrftime_variation15.phpt create mode 100644 ext/date/tests/gmstrftime_variation16.phpt create mode 100644 ext/date/tests/gmstrftime_variation17.phpt create mode 100644 ext/date/tests/gmstrftime_variation18.phpt create mode 100644 ext/date/tests/gmstrftime_variation19.phpt create mode 100644 ext/date/tests/gmstrftime_variation2.phpt create mode 100644 ext/date/tests/gmstrftime_variation20.phpt create mode 100644 ext/date/tests/gmstrftime_variation21.phpt create mode 100644 ext/date/tests/gmstrftime_variation22.phpt create mode 100644 ext/date/tests/gmstrftime_variation3.phpt create mode 100644 ext/date/tests/gmstrftime_variation4.phpt create mode 100644 ext/date/tests/gmstrftime_variation5.phpt create mode 100644 ext/date/tests/gmstrftime_variation6.phpt create mode 100644 ext/date/tests/gmstrftime_variation7.phpt create mode 100644 ext/date/tests/gmstrftime_variation8.phpt create mode 100644 ext/date/tests/gmstrftime_variation9.phpt create mode 100644 ext/date/tests/idate_basic.phpt create mode 100644 ext/date/tests/idate_variation1.phpt create mode 100644 ext/date/tests/idate_variation2.phpt create mode 100644 ext/date/tests/idate_variation3.phpt create mode 100644 ext/date/tests/idate_variation4.phpt create mode 100644 ext/date/tests/idate_variation5.phpt create mode 100644 ext/date/tests/idate_variation6.phpt create mode 100644 ext/date/tests/localtime_basic.phpt create mode 100644 ext/date/tests/localtime_variation1.phpt create mode 100644 ext/date/tests/localtime_variation2.phpt create mode 100644 ext/date/tests/localtime_variation3.phpt create mode 100644 ext/date/tests/localtime_variation4.phpt create mode 100644 ext/date/tests/localtime_variation5.phpt create mode 100644 ext/date/tests/microtime_basic.phpt create mode 100644 ext/date/tests/microtime_error.phpt create mode 100644 ext/date/tests/strftime_basic.phpt create mode 100644 ext/date/tests/strftime_error.phpt create mode 100644 ext/date/tests/strftime_variation1.phpt create mode 100644 ext/date/tests/strftime_variation10.phpt create mode 100644 ext/date/tests/strftime_variation11.phpt create mode 100644 ext/date/tests/strftime_variation12.phpt create mode 100644 ext/date/tests/strftime_variation13.phpt create mode 100644 ext/date/tests/strftime_variation14.phpt create mode 100644 ext/date/tests/strftime_variation15.phpt create mode 100644 ext/date/tests/strftime_variation16.phpt create mode 100644 ext/date/tests/strftime_variation17.phpt create mode 100644 ext/date/tests/strftime_variation18.phpt create mode 100644 ext/date/tests/strftime_variation19.phpt create mode 100644 ext/date/tests/strftime_variation2.phpt create mode 100644 ext/date/tests/strftime_variation20.phpt create mode 100644 ext/date/tests/strftime_variation21.phpt create mode 100644 ext/date/tests/strftime_variation22.phpt create mode 100644 ext/date/tests/strftime_variation23.phpt create mode 100644 ext/date/tests/strftime_variation3.phpt create mode 100644 ext/date/tests/strftime_variation4.phpt create mode 100644 ext/date/tests/strftime_variation5.phpt create mode 100644 ext/date/tests/strftime_variation6.phpt create mode 100644 ext/date/tests/strftime_variation7.phpt create mode 100644 ext/date/tests/strftime_variation8.phpt create mode 100644 ext/date/tests/strftime_variation9.phpt create mode 100644 ext/date/tests/strtotime_basic.phpt create mode 100644 ext/date/tests/time_basic.phpt create mode 100644 ext/date/tests/time_error.phpt create mode 100644 ext/dom/tests/DOMCharacterData_appendData_basic.phpt create mode 100644 ext/dom/tests/DOMComment_appendData_basic.phpt create mode 100644 ext/dom/tests/DOMComment_appendData_basic_Sullivan.phpt create mode 100644 ext/dom/tests/DOMComment_insertData_basic.phpt create mode 100644 ext/dom/tests/DOMComment_insertData_error1.phpt create mode 100644 ext/dom/tests/DOMComment_insertData_error2.phpt create mode 100644 ext/dom/tests/DOMComment_replaceData_basic.phpt create mode 100644 ext/dom/tests/DOMComment_replaceData_error1.phpt create mode 100644 ext/dom/tests/DOMComment_replaceData_error2.phpt create mode 100644 ext/dom/tests/DOMDocumentFragment_appendXML_hasChildNodes_basic.phpt create mode 100644 ext/dom/tests/DOMDocument_createAttribute_basic.phpt create mode 100644 ext/dom/tests/DOMDocument_createAttribute_error.phpt create mode 100644 ext/dom/tests/DOMDocument_createAttribute_error1.phpt create mode 100644 ext/dom/tests/DOMDocument_createAttribute_variation.phpt create mode 100644 ext/dom/tests/DOMDocument_createProcessingInstruction_basic.phpt create mode 100644 ext/dom/tests/DOMDocument_createProcessingInstruction_error.phpt create mode 100644 ext/dom/tests/DOMDocument_loadHTML_basic.phpt create mode 100644 ext/dom/tests/DOMDocument_save_basic.phpt create mode 100644 ext/dom/tests/DOMElement_hasAttributes_basic.phpt create mode 100644 ext/dom/tests/DOMNode_cloneNode_basic.phpt create mode 100644 ext/dom/tests/DOMNode_hasChildNodes_basic.phpt create mode 100644 ext/dom/tests/DOMNode_issamenode_basic.phpt create mode 100644 ext/dom/tests/DOMNode_normalize_basic.phpt create mode 100644 ext/dom/tests/DOMNode_removeChild_basic.phpt create mode 100644 ext/dom/tests/DOMNode_replaceChild_basic.phpt create mode 100644 ext/dom/tests/DOMText_appendData_basic.phpt create mode 100644 ext/dom/tests/bug45251.phpt create mode 100644 ext/dom/tests/bug46335.phpt create mode 100644 ext/dom/tests/dom_comment_basic.phpt create mode 100644 ext/dom/tests/dom_comment_variation.phpt create mode 100644 ext/exif/tests/exif007.phpt create mode 100644 ext/exif/tests/exif008.phpt create mode 100644 ext/exif/tests/exif009.phpt create mode 100644 ext/exif/tests/exif010.phpt create mode 100644 ext/exif/tests/exif011.phpt create mode 100644 ext/exif/tests/exif012.phpt create mode 100644 ext/exif/tests/exif013.phpt create mode 100644 ext/exif/tests/exif014.phpt create mode 100644 ext/exif/tests/exif015.phpt create mode 100644 ext/exif/tests/exif016.phpt create mode 100644 ext/exif/tests/exif017.phpt create mode 100644 ext/exif/tests/exif018.phpt create mode 100644 ext/exif/tests/exif020.phpt create mode 100644 ext/exif/tests/exif021.phpt create mode 100644 ext/exif/tests/exif022.phpt create mode 100644 ext/exif/tests/exif023.phpt create mode 100644 ext/exif/tests/exif024.phpt create mode 100644 ext/exif/tests/exif025.phpt create mode 100644 ext/exif/tests/exif026.phpt create mode 100644 ext/exif/tests/exif027.phpt create mode 100644 ext/exif/tests/exif_imagetype_basic.phpt create mode 100644 ext/exif/tests/exif_imagetype_error.phpt create mode 100644 ext/exif/tests/exif_imagetype_variation1.phpt create mode 100644 ext/exif/tests/exif_read_exif_data_basic.phpt create mode 100644 ext/exif/tests/exif_tagname_basic.phpt create mode 100644 ext/exif/tests/exif_tagname_error.phpt create mode 100644 ext/exif/tests/exif_tagname_variation1.phpt create mode 100644 ext/exif/tests/image007.jpg create mode 100644 ext/exif/tests/image008.jpg create mode 100644 ext/exif/tests/image009.jpg create mode 100644 ext/exif/tests/image010.jpg create mode 100644 ext/exif/tests/image011.jpg create mode 100644 ext/exif/tests/image012.jpg create mode 100644 ext/exif/tests/image013.jpg create mode 100644 ext/exif/tests/image014.jpg create mode 100644 ext/exif/tests/image015.jpg create mode 100644 ext/exif/tests/image016.tiff create mode 100644 ext/exif/tests/image017.tiff create mode 100644 ext/exif/tests/image018.tiff create mode 100644 ext/exif/tests/image020.tiff create mode 100644 ext/exif/tests/image021.tiff create mode 100644 ext/exif/tests/image022.tiff create mode 100644 ext/exif/tests/image023.tiff create mode 100644 ext/exif/tests/image024.jpg create mode 100644 ext/exif/tests/image025.jpg create mode 100644 ext/exif/tests/image026.tiff create mode 100644 ext/exif/tests/image027.tiff create mode 100644 ext/filter/tests/bug42718-2.phpt create mode 100644 ext/filter/tests/bug42718.phpt create mode 100644 ext/filter/tests/bug46973.phpt create mode 100644 ext/ftp/tests/ftp_fget_basic.phpt create mode 100644 ext/ftp/tests/ftp_get_basic.phpt create mode 100644 ext/ftp/tests/ftp_mdtm_basic.phpt create mode 100644 ext/gd/tests/gd_info_error.phpt create mode 100644 ext/gd/tests/gd_info_variation1.phpt create mode 100644 ext/gd/tests/image_type_to_mime_type_error.phpt create mode 100644 ext/gd/tests/image_type_to_mime_type_variation1.phpt create mode 100644 ext/gd/tests/image_type_to_mime_type_variation2.phpt create mode 100644 ext/gd/tests/image_type_to_mime_type_variation3.phpt create mode 100644 ext/gd/tests/image_type_to_mime_type_variation4.phpt create mode 100644 ext/gd/tests/imagecolorallocate_basic.phpt create mode 100644 ext/gd/tests/imagecolorallocate_error.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation1.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation2.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation3.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation4.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation5.phpt create mode 100644 ext/gd/tests/imagecolorallocate_variation6.phpt create mode 100644 ext/gd/tests/imagecolorstotal_basic.phpt create mode 100644 ext/gd/tests/imagecolorstotal_error.phpt create mode 100644 ext/gd/tests/imageloadfont_invalid.phpt create mode 100644 ext/gd/tests/imagerotate_overflow.phpt create mode 100644 ext/gd/tests/php.gif create mode 100644 ext/gettext/tests/44938.phpt create mode 100644 ext/hash/tests/hash_algos.phpt create mode 100644 ext/hash/tests/hash_error.phpt create mode 100644 ext/hash/tests/hash_file_basic1.phpt create mode 100644 ext/hash/tests/hash_file_error1.phpt create mode 100644 ext/hash/tests/hash_hmac_basic.phpt create mode 100644 ext/hash/tests/hash_hmac_error.phpt create mode 100644 ext/hash/tests/hash_hmac_file_basic.phpt create mode 100644 ext/hash/tests/hash_hmac_file_error.phpt create mode 100644 ext/imap/tests/README create mode 100644 ext/imap/tests/bug45705_1.phpt create mode 100644 ext/imap/tests/bug45705_2.phpt create mode 100644 ext/imap/tests/bug46918.phpt create mode 100644 ext/imap/tests/clean.inc create mode 100644 ext/imap/tests/imap_8bit_basic.phpt create mode 100644 ext/imap/tests/imap_alerts_error.phpt create mode 100644 ext/imap/tests/imap_append_basic.phpt create mode 100644 ext/imap/tests/imap_base64_basic.phpt create mode 100644 ext/imap/tests/imap_binary_basic.phpt create mode 100644 ext/imap/tests/imap_body_basic.phpt create mode 100644 ext/imap/tests/imap_bodystruct_basic.phpt create mode 100644 ext/imap/tests/imap_clearflag_full_basic.phpt create mode 100644 ext/imap/tests/imap_close_basic.phpt create mode 100644 ext/imap/tests/imap_close_error.phpt create mode 100644 ext/imap/tests/imap_close_variation1.phpt create mode 100644 ext/imap/tests/imap_close_variation2.phpt create mode 100644 ext/imap/tests/imap_close_variation3.phpt create mode 100644 ext/imap/tests/imap_close_variation4.phpt create mode 100644 ext/imap/tests/imap_createmailbox_basic.phpt create mode 100644 ext/imap/tests/imap_errors_basic.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_basic.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_error.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation1.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation2.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation3.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation4.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation5.phpt create mode 100644 ext/imap/tests/imap_fetch_overview_variation6.phpt create mode 100644 ext/imap/tests/imap_fetchbody_basic.phpt create mode 100644 ext/imap/tests/imap_fetchbody_error.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation1.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation2.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation3.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation4.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation5.phpt create mode 100644 ext/imap/tests/imap_fetchbody_variation6.phpt create mode 100644 ext/imap/tests/imap_fetchheader_basic.phpt create mode 100644 ext/imap/tests/imap_fetchheader_error.phpt create mode 100644 ext/imap/tests/imap_fetchheader_variation1.phpt create mode 100644 ext/imap/tests/imap_fetchheader_variation2.phpt create mode 100644 ext/imap/tests/imap_fetchheader_variation3.phpt create mode 100644 ext/imap/tests/imap_fetchheader_variation4.phpt create mode 100644 ext/imap/tests/imap_fetchheader_variation5.phpt create mode 100644 ext/imap/tests/imap_include.inc create mode 100644 ext/imap/tests/skipif.inc create mode 100644 ext/interbase/tests/bug45373.phpt create mode 100644 ext/interbase/tests/bug45575.phpt create mode 100644 ext/interbase/tests/bug46247.phpt create mode 100644 ext/interbase/tests/bug46543.phpt create mode 100644 ext/interbase/tests/ibase_affected_rows_001.phpt create mode 100644 ext/interbase/tests/ibase_close_001.phpt create mode 100644 ext/interbase/tests/ibase_drop_db_001.phpt create mode 100644 ext/interbase/tests/ibase_errmsg_001.phpt create mode 100644 ext/interbase/tests/ibase_free_query_001.phpt create mode 100644 ext/interbase/tests/ibase_num_fields_001.phpt create mode 100644 ext/interbase/tests/ibase_num_params_001.phpt create mode 100644 ext/interbase/tests/ibase_param_info_001.phpt create mode 100644 ext/interbase/tests/ibase_rollback_001.phpt create mode 100644 ext/interbase/tests/ibase_trans_001.phpt create mode 100644 ext/interbase/tests/ibase_trans_002.phpt create mode 100644 ext/json/tests/bug43941.phpt create mode 100644 ext/json/tests/bug46215.phpt create mode 100644 ext/json/tests/bug46944.phpt create mode 100644 ext/mbstring/tests/bug43840.phpt create mode 100644 ext/mbstring/tests/bug43841.phpt create mode 100644 ext/mbstring/tests/bug43993.phpt create mode 100644 ext/mbstring/tests/bug43994.phpt create mode 100644 ext/mbstring/tests/bug43998.phpt create mode 100644 ext/mbstring/tests/bug45239.phpt create mode 100644 ext/mbstring/tests/bug45722.phpt create mode 100644 ext/mbstring/tests/bug45923.phpt create mode 100644 ext/mbstring/tests/bug46843.phpt create mode 100644 ext/mbstring/tests/bug47399.phpt create mode 100644 ext/mbstring/tests/mb_convert_encoding_variation1.phpt create mode 100644 ext/mbstring/tests/mb_decode_mimeheader_basic.phpt create mode 100644 ext/mbstring/tests/mb_decode_mimeheader_error.phpt create mode 100644 ext/mbstring/tests/mb_decode_mimeheader_variation1.phpt create mode 100644 ext/mbstring/tests/mb_decode_mimeheader_variation2.phpt create mode 100644 ext/mbstring/tests/mb_decode_mimeheader_variation3.phpt create mode 100644 ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt create mode 100644 ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt create mode 100644 ext/mbstring/tests/mb_encode_mimeheader_indent.phpt create mode 100644 ext/mbstring/tests/mb_ereg_match_basic.phpt create mode 100644 ext/mbstring/tests/mb_ereg_match_error1.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_basic.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_error.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_variation1.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_variation2.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_variation3.phpt create mode 100644 ext/mbstring/tests/mb_ereg_replace_variation4.phpt create mode 100644 ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt create mode 100644 ext/mbstring/tests/mb_regex_encoding_variation2.phpt create mode 100644 ext/mbstring/tests/mb_split_error.phpt create mode 100644 ext/mbstring/tests/mb_split_variation1.phpt create mode 100644 ext/mbstring/tests/mb_split_variation2.phpt create mode 100644 ext/mbstring/tests/mb_split_variation3.phpt create mode 100644 ext/mbstring/tests/mb_stripos.phpt create mode 100644 ext/mbstring/tests/mb_stripos_basic.phpt create mode 100644 ext/mbstring/tests/mb_stripos_basic2.phpt create mode 100644 ext/mbstring/tests/mb_stripos_error1.phpt create mode 100644 ext/mbstring/tests/mb_stripos_error2.phpt create mode 100644 ext/mbstring/tests/mb_stripos_variation1.phpt create mode 100644 ext/mbstring/tests/mb_stripos_variation2.phpt create mode 100644 ext/mbstring/tests/mb_stripos_variation3.phpt create mode 100644 ext/mbstring/tests/mb_stripos_variation4.phpt create mode 100644 ext/mbstring/tests/mb_stripos_variation5_Bug45923.phpt create mode 100644 ext/mbstring/tests/mb_stristr_basic.phpt create mode 100644 ext/mbstring/tests/mb_stristr_error1.phpt create mode 100644 ext/mbstring/tests/mb_stristr_error2.phpt create mode 100644 ext/mbstring/tests/mb_stristr_variation1.phpt create mode 100644 ext/mbstring/tests/mb_stristr_variation2.phpt create mode 100644 ext/mbstring/tests/mb_stristr_variation3.phpt create mode 100644 ext/mbstring/tests/mb_stristr_variation4.phpt create mode 100644 ext/mbstring/tests/mb_stristr_variation5.phpt create mode 100644 ext/mbstring/tests/mb_strpos_variation5.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_basic.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_error1.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_error2.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation1.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation2.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation3.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation4.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation5.phpt create mode 100644 ext/mbstring/tests/mb_strrchr_variation6.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_basic.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_error1.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_error2.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_variation1.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_variation2.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_variation3.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_variation4.phpt create mode 100644 ext/mbstring/tests/mb_strrichr_variation5.phpt create mode 100644 ext/mbstring/tests/mb_strripos_basic.phpt create mode 100644 ext/mbstring/tests/mb_strripos_basic2.phpt create mode 100644 ext/mbstring/tests/mb_strripos_error1.phpt create mode 100644 ext/mbstring/tests/mb_strripos_error2.phpt create mode 100644 ext/mbstring/tests/mb_strripos_variation1.phpt create mode 100644 ext/mbstring/tests/mb_strripos_variation2.phpt create mode 100644 ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt create mode 100644 ext/mbstring/tests/mb_strripos_variation4.phpt create mode 100644 ext/mbstring/tests/mb_strripos_variation5_Bug45923.phpt create mode 100644 ext/mbstring/tests/mb_strstr_basic.phpt create mode 100644 ext/mbstring/tests/mb_strstr_error1.phpt create mode 100644 ext/mbstring/tests/mb_strstr_error2.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation1.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation2.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation3.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation4.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation5.phpt create mode 100644 ext/mbstring/tests/mb_strstr_variation6.phpt create mode 100644 ext/mbstring/tests/mb_substitute_character_basic.phpt create mode 100644 ext/mbstring/tests/mb_substitute_character_error.phpt create mode 100644 ext/mbstring/tests/mb_substitute_character_variation1.phpt create mode 100644 ext/mbstring/tests/mb_substitute_character_variation2.phpt create mode 100644 ext/mbstring/tests/mb_substr_count_variation4.phpt create mode 100644 ext/mbstring/tests/mb_substr_variation6.phpt create mode 100644 ext/mbstring/tests/mb_substr_variation7.phpt create mode 100644 ext/mcrypt/tests/bug46010.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_3des_decrypt.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_3des_encrypt.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_error.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_variation1.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_variation2.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_variation3.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_variation4.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbc_variation5.phpt create mode 100644 ext/mcrypt/tests/mcrypt_cbf.phpt create mode 100644 ext/mcrypt/tests/mcrypt_create_iv.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_3des_cbc.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_3des_ecb.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_error.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_variation1.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_variation2.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_variation3.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_variation4.phpt create mode 100644 ext/mcrypt/tests/mcrypt_decrypt_variation5.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_3des_decrypt.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_3des_encrypt.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_error.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_variation1.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_variation2.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_variation3.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_variation4.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ecb_variation5.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_algorithms_name.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_block_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_iv_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_key_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_mode_name.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_get_supported_key_sizes.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_is_block_algorithm.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_is_block_algorithm_mode.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_is_block_mode.phpt create mode 100644 ext/mcrypt/tests/mcrypt_enc_self_test.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_3des_cbc.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_3des_ecb.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_error.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_variation1.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_variation2.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_variation3.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_variation4.phpt create mode 100644 ext/mcrypt/tests/mcrypt_encrypt_variation5.phpt create mode 100644 ext/mcrypt/tests/mcrypt_get_block_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_get_cipher_name.phpt create mode 100644 ext/mcrypt/tests/mcrypt_get_iv_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_get_key_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_list_algorithms.phpt create mode 100644 ext/mcrypt/tests/mcrypt_list_modes.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_get_algo_block_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_get_algo_key_size.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_get_supported_key_sizes.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_is_block_algorithm.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_is_block_algorithm_mode.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_is_block_mode.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_open.phpt create mode 100644 ext/mcrypt/tests/mcrypt_module_self_test.phpt create mode 100644 ext/mcrypt/tests/mcrypt_ofb.phpt create mode 100644 ext/mcrypt/tests/mcrypt_rijndael128_128BitKey.phpt create mode 100644 ext/mcrypt/tests/mcrypt_rijndael128_256BitKey.phpt create mode 100644 ext/mime_magic/tests/magic.mime create mode 100644 ext/mime_magic/tests/mime_content_type_basic.phpt create mode 100644 ext/mime_magic/tests/mime_content_type_error.phpt create mode 100644 ext/mime_magic/tests/mime_content_type_variation.phpt create mode 100644 ext/mime_magic/tests/mime_content_type_variation1.phpt create mode 100644 ext/mime_magic/tests/mime_test.bmp create mode 100644 ext/mime_magic/tests/mime_test.class create mode 100644 ext/mime_magic/tests/mime_test.gif create mode 100644 ext/mime_magic/tests/mime_test.html create mode 100644 ext/mime_magic/tests/mime_test.jpeg create mode 100644 ext/mime_magic/tests/mime_test.png create mode 100644 ext/mime_magic/tests/mime_test.wav create mode 100644 ext/mime_magic/tests/mime_test.zip create mode 100644 ext/mysqli/tests/bug45940.phpt create mode 100644 ext/oci8/tests/bug37220.phpt create mode 100644 ext/oci8/tests/bug43497_92.phpt create mode 100644 ext/oci8/tests/connect_scope1.phpt create mode 100644 ext/oci8/tests/connect_scope2.phpt create mode 100644 ext/oci8/tests/connect_scope_try1.phpt create mode 100644 ext/oci8/tests/connect_scope_try2.phpt create mode 100644 ext/oci8/tests/connect_scope_try3.phpt create mode 100644 ext/oci8/tests/connect_scope_try4.phpt create mode 100644 ext/oci8/tests/connect_scope_try5.phpt create mode 100644 ext/oci8/tests/connect_scope_try6.phpt create mode 100644 ext/oci8/tests/drcp_characterset.phpt create mode 100644 ext/oci8/tests/drcp_conn_close1.phpt create mode 100644 ext/oci8/tests/drcp_conn_close2.phpt create mode 100644 ext/oci8/tests/drcp_connect1.phpt create mode 100644 ext/oci8/tests/drcp_functions.inc create mode 100644 ext/oci8/tests/drcp_newconnect.phpt create mode 100644 ext/oci8/tests/drcp_pconn_close1.phpt create mode 100644 ext/oci8/tests/drcp_pconn_close2.phpt create mode 100644 ext/oci8/tests/drcp_privileged.phpt create mode 100644 ext/oci8/tests/drcp_scope1.phpt create mode 100644 ext/oci8/tests/drcp_scope2.phpt create mode 100644 ext/oci8/tests/drcp_scope3.phpt create mode 100644 ext/oci8/tests/drcp_scope4.phpt create mode 100644 ext/oci8/tests/drcp_scope5.phpt create mode 100644 ext/oci8/tests/minfo.phpt create mode 100644 ext/oci8/tests/pecl_bug10194_blob_64.phpt create mode 100644 ext/oci8/tests/testping.phpt create mode 100644 ext/openssl/tests/bug41033.pem create mode 100644 ext/openssl/tests/bug41033.phpt create mode 100644 ext/openssl/tests/bug41033pub.pem create mode 100644 ext/openssl/tests/bug46127.pem create mode 100644 ext/openssl/tests/bug46127.phpt delete mode 100644 ext/pcntl/EXPERIMENTAL create mode 100644 ext/pcre/pcrelib/pcre_ucd.c delete mode 100644 ext/pcre/pcrelib/pcre_ucp_searchfuncs.c delete mode 100644 ext/pcre/pcrelib/ucpinternal.h delete mode 100644 ext/pcre/pcrelib/ucptable.h create mode 100644 ext/pcre/tests/bug37911.phpt create mode 100644 ext/pcre/tests/bug42737.phpt create mode 100644 ext/pcre/tests/bug44925.phpt create mode 100644 ext/pcre/tests/pcre.constants.phpt create mode 100644 ext/pcre/tests/preg_last_error_error.phpt create mode 100644 ext/pcre/tests/preg_match_basic_002.phpt create mode 100644 ext/pcre/tests/preg_match_variation1.phpt create mode 100644 ext/pcre/tests/preg_replace_callback_error1.phpt create mode 100644 ext/pdo/tests/pdorow.phpt create mode 100644 ext/pdo_mysql/tests/bug41125.phpt create mode 100644 ext/pdo_mysql/tests/bug44327.phpt create mode 100644 ext/pdo_mysql/tests/bug46292.phpt create mode 100644 ext/pdo_pgsql/tests/bug43925.phpt create mode 100644 ext/pdo_pgsql/tests/bug46274.phpt create mode 100644 ext/pdo_pgsql/tests/bug46274_2.phpt create mode 100644 ext/pdo_sqlite/tests/bug44327_2.phpt create mode 100644 ext/pdo_sqlite/tests/bug44327_3.phpt create mode 100644 ext/pdo_sqlite/tests/bug46139.phpt create mode 100644 ext/pdo_sqlite/tests/debugdumpparams_001.phpt create mode 100644 ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt create mode 100644 ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt create mode 100644 ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt create mode 100644 ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt create mode 100644 ext/pgsql/tests/bug37100.phpt create mode 100644 ext/pgsql/tests/pg_delete_001.phpt create mode 100644 ext/pgsql/tests/pg_insert_001.phpt create mode 100644 ext/pgsql/tests/pg_meta_data_001.phpt create mode 100644 ext/pgsql/tests/pg_select_001.phpt create mode 100644 ext/pgsql/tests/pg_update_001.phpt create mode 100644 ext/posix/tests/posix_getcwd.phpt create mode 100644 ext/posix/tests/posix_getgrnam.phpt create mode 100644 ext/posix/tests/posix_getpwnam.phpt create mode 100644 ext/posix/tests/posix_getrlimit.phpt create mode 100644 ext/posix/tests/posix_initgroups.phpt create mode 100644 ext/posix/tests/posix_isatty.phpt create mode 100644 ext/posix/tests/posix_mknod.phpt create mode 100644 ext/readline/tests/readline_add_history_001.phpt create mode 100644 ext/readline/tests/readline_callback_handler_install_001.phpt create mode 100644 ext/readline/tests/readline_callback_handler_remove_001.phpt create mode 100644 ext/readline/tests/readline_clear_history_001.phpt create mode 100644 ext/readline/tests/readline_completion_function_001.phpt create mode 100644 ext/readline/tests/readline_info_001.phpt create mode 100644 ext/readline/tests/readline_list_history_001.phpt create mode 100644 ext/readline/tests/readline_read_history_001.phpt create mode 100644 ext/readline/tests/readline_write_history_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getDefaultProperties_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getDefaultProperties_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getDocComment_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getDocComment_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getInterfaces_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getInterfaces_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getInterfaces_003.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getInterfaces_004.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getMethod_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getMethod_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getMethods_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getMethods_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getMethods_003.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getParentClass_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperties_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperties_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperties_003.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperty_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperty_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperty_003.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getProperty_004.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_getStaticPropertyValue_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasConstant_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasConstant_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasMethod_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasMethod_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasProperty_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_hasProperty_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_isIterateable_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_isSubclassOf_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_modifiers_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_modifiers_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_newInstanceArgs_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_newInstance_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_setStaticPropertyValue_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_toString_001.phpt create mode 100644 ext/reflection/tests/ReflectionClass_toString_002.phpt create mode 100644 ext/reflection/tests/ReflectionClass_toString_003.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_001.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_construct.001.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_getDocComment.001.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_getExtension.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_getExtensionName.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_getFileName.001.phpt create mode 100644 ext/reflection/tests/ReflectionFunction_getFileName.002.phpt create mode 100644 ext/reflection/tests/ReflectionMethod_006.phpt create mode 100644 ext/reflection/tests/ReflectionMethod_constructor_error1.phpt create mode 100644 ext/reflection/tests/ReflectionMethod_constructor_error2.phpt create mode 100644 ext/reflection/tests/ReflectionObject_isSubclassOf.002.phpt create mode 100644 ext/reflection/tests/ReflectionParameter_001.phpt create mode 100644 ext/reflection/tests/ReflectionParameter_002.phpt create mode 100644 ext/reflection/tests/ReflectionParameter_003.phpt create mode 100644 ext/reflection/tests/ReflectionProperty_getModifiers.001.phpt create mode 100644 ext/reflection/tests/bug45139.phpt create mode 100644 ext/reflection/tests/bug45765.phpt create mode 100644 ext/reflection/tests/bug46064.phpt create mode 100644 ext/reflection/tests/bug46064_2.phpt create mode 100644 ext/reflection/tests/included4.inc create mode 100644 ext/reflection/tests/reflectionClass_export_basic1.phpt create mode 100644 ext/reflection/tests/reflectionClass_export_basic2.phpt create mode 100644 ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt create mode 100644 ext/reflection/tests/reflectionClass_getExtension_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_getExtension_variation.phpt create mode 100644 ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_getModifiers_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_getParentClass.phpt create mode 100644 ext/reflection/tests/reflectionClass_hasConstant_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_hasMethod_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_hasProperty_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_isAbstract_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_isFinal_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_isInterface_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_isIterateable_basic.phpt create mode 100644 ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt create mode 100644 ext/reflection/tests/reflectionObject___toString_basic1.phpt create mode 100644 ext/reflection/tests/reflectionObject___toString_basic2.phpt create mode 100644 ext/reflection/tests/reflectionObject_export_basic1.phpt create mode 100644 ext/reflection/tests/reflectionObject_export_basic2.phpt create mode 100644 ext/reflection/tests/reflectionObject_export_basic3.phpt create mode 100644 ext/reflection/tests/reflectionParameter_invalidMethodInConstructor.phpt create mode 100644 ext/reflection/tests/reflectionProperty_constructor_variation1.phpt create mode 100644 ext/simplexml/tests/bug45553.phpt create mode 100644 ext/simplexml/tests/bug46003.phpt create mode 100644 ext/simplexml/tests/bug46047.phpt create mode 100644 ext/soap/tests/bug46760.phpt create mode 100644 ext/soap/tests/bugs/bug43045.phpt create mode 100644 ext/soap/tests/bugs/bug44811.phpt create mode 100644 ext/soap/tests/bugs/bug44882.phpt create mode 100644 ext/soap/tests/bugs/bug44882.wsdl create mode 100644 ext/soap/tests/bugs/bug46419.phpt create mode 100644 ext/soap/tests/bugs/bug46427.phpt create mode 100644 ext/soap/tests/bugs/bug47049.phpt create mode 100644 ext/soap/tests/bugs/bug47049.wsdl create mode 100644 ext/soap/tests/bugs/multiport.phpt create mode 100644 ext/soap/tests/bugs/multiport.wsdl create mode 100644 ext/sockets/tests/unixloop.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic1.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic2.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic3.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic4.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic5.phpt create mode 100644 ext/spl/tests/arrayObject___construct_basic6.phpt create mode 100644 ext/spl/tests/arrayObject___construct_error1.phpt create mode 100644 ext/spl/tests/arrayObject___construct_error2.phpt create mode 100644 ext/spl/tests/arrayObject_asort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_asort_basic2.phpt create mode 100644 ext/spl/tests/arrayObject_clone_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_clone_basic2.phpt create mode 100644 ext/spl/tests/arrayObject_clone_basic3.phpt create mode 100644 ext/spl/tests/arrayObject_count_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_exchangeArray_basic3.phpt create mode 100644 ext/spl/tests/arrayObject_getFlags_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_getFlags_basic2.phpt create mode 100644 ext/spl/tests/arrayObject_getIteratorClass_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_ksort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_ksort_basic2.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods1.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods2.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods3.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods4.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods5.phpt create mode 100644 ext/spl/tests/arrayObject_magicMethods6.phpt create mode 100644 ext/spl/tests/arrayObject_natcasesort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_natsort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_setFlags_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_setFlags_basic2.phpt create mode 100644 ext/spl/tests/arrayObject_setIteratorClass_error1.phpt create mode 100644 ext/spl/tests/arrayObject_uasort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_uasort_error1.phpt create mode 100644 ext/spl/tests/arrayObject_uksort_basic1.phpt create mode 100644 ext/spl/tests/arrayObject_uksort_error1.phpt create mode 100644 ext/spl/tests/array_026.phpt create mode 100644 ext/spl/tests/bug46031.phpt create mode 100644 ext/spl/tests/bug46051.phpt create mode 100644 ext/spl/tests/bug46053.phpt create mode 100644 ext/spl/tests/bug46088.phpt create mode 100644 ext/spl/tests/bug46115.phpt create mode 100644 ext/spl/tests/class_implements_basic.phpt create mode 100644 ext/spl/tests/class_implements_basic2.phpt create mode 100644 ext/spl/tests/class_implements_error.phpt create mode 100644 ext/spl/tests/class_implements_variation.phpt create mode 100644 ext/spl/tests/class_implements_variation1.phpt create mode 100644 ext/spl/tests/class_implements_variation2.phpt create mode 100644 ext/spl/tests/countable_class_basic1.phpt create mode 100644 ext/spl/tests/countable_count_variation1.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation10.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation11.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation12.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation13.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation14.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation15.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation16.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation17.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation18.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation19.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation20.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation21.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation22.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation23.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation24.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation25.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation26.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation27.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation28.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation29.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation30.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation31.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation32.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation8.phpt create mode 100644 ext/standard/tests/array/array_chunk_variation9.phpt create mode 100644 ext/standard/tests/array/array_count_values_error.phpt create mode 100644 ext/standard/tests/array/array_count_values_variation.phpt create mode 100644 ext/standard/tests/array/array_diff_key_error.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation2.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation3.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation4.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation5.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation6.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation7.phpt create mode 100644 ext/standard/tests/array/array_diff_key_variation8.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_error.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation10.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation11.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation12.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation13.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation14.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation6.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation7.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation8.phpt create mode 100644 ext/standard/tests/array/array_diff_uassoc_variation9.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_error.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation1.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation10.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation11.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation2.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation3.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation4.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation5.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation6.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation7.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation8.phpt create mode 100644 ext/standard/tests/array/array_diff_ukey_variation9.phpt create mode 100644 ext/standard/tests/array/array_fill_keys_error.phpt create mode 100644 ext/standard/tests/array/array_fill_keys_variation1.phpt create mode 100644 ext/standard/tests/array/array_fill_keys_variation2.phpt create mode 100644 ext/standard/tests/array/array_fill_keys_variation3.phpt create mode 100644 ext/standard/tests/array/array_fill_keys_variation4.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_error.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation1.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation2.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation3.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation4.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation5.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation6.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation7.phpt create mode 100644 ext/standard/tests/array/array_intersect_key_variation8.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_error.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation10.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation11.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation6.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation7.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation8.phpt create mode 100644 ext/standard/tests/array/array_intersect_uassoc_variation9.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_error.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation1.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation10.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation2.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation3.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation4.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation5.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation6.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation7.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation8.phpt create mode 100644 ext/standard/tests/array/array_intersect_ukey_variation9.phpt create mode 100644 ext/standard/tests/array/array_map_variation19.phpt create mode 100644 ext/standard/tests/array/array_multisort_basic1.phpt create mode 100644 ext/standard/tests/array/array_multisort_basic2.phpt create mode 100644 ext/standard/tests/array/array_multisort_error.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation1.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation10.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation2.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation3.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation4.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation5.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation6.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation7.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation8.phpt create mode 100644 ext/standard/tests/array/array_multisort_variation9.phpt create mode 100644 ext/standard/tests/array/array_next_error1.phpt create mode 100644 ext/standard/tests/array/array_next_error2.phpt create mode 100644 ext/standard/tests/array/array_product_error.phpt create mode 100644 ext/standard/tests/array/array_product_variation1.phpt create mode 100644 ext/standard/tests/array/array_product_variation2.phpt create mode 100644 ext/standard/tests/array/array_product_variation3.phpt create mode 100644 ext/standard/tests/array/array_product_variation4.phpt create mode 100644 ext/standard/tests/array/array_product_variation5.phpt create mode 100644 ext/standard/tests/array/array_reduce_error.phpt create mode 100644 ext/standard/tests/array/array_reduce_variation1.phpt create mode 100644 ext/standard/tests/array/array_reduce_variation2.phpt create mode 100644 ext/standard/tests/array/array_reduce_variation3.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_error.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_udiff_assoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_udiff_error.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_error.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_udiff_uassoc_variation6.phpt create mode 100644 ext/standard/tests/array/array_udiff_variation1.phpt create mode 100644 ext/standard/tests/array/array_udiff_variation2.phpt create mode 100644 ext/standard/tests/array/array_udiff_variation3.phpt create mode 100644 ext/standard/tests/array/array_udiff_variation4.phpt create mode 100644 ext/standard/tests/array/array_udiff_variation5.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_basic2.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_error.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_uintersect_assoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_uintersect_error.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_error.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation1.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation2.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation3.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation4.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation5.phpt create mode 100644 ext/standard/tests/array/array_uintersect_uassoc_variation6.phpt create mode 100644 ext/standard/tests/array/array_uintersect_variation1.phpt create mode 100644 ext/standard/tests/array/array_uintersect_variation2.phpt create mode 100644 ext/standard/tests/array/array_uintersect_variation3.phpt create mode 100644 ext/standard/tests/array/array_uintersect_variation4.phpt create mode 100644 ext/standard/tests/array/array_uintersect_variation5.phpt create mode 100644 ext/standard/tests/array/array_values_error.phpt create mode 100644 ext/standard/tests/array/arsort_basic.phpt create mode 100644 ext/standard/tests/array/arsort_object1.phpt create mode 100644 ext/standard/tests/array/arsort_object2.phpt create mode 100644 ext/standard/tests/array/bug44181.phpt create mode 100644 ext/standard/tests/array/bug44182.phpt create mode 100644 ext/standard/tests/array/bug45312.phpt create mode 100644 ext/standard/tests/array/bug46873.phpt create mode 100644 ext/standard/tests/array/compact_variation2.phpt create mode 100644 ext/standard/tests/array/compare_function.inc create mode 100644 ext/standard/tests/array/extract_variation10.phpt create mode 100644 ext/standard/tests/array/extract_variation11.phpt create mode 100644 ext/standard/tests/array/natsort_basic.phpt create mode 100755 ext/standard/tests/array/prev_basic.phpt create mode 100755 ext/standard/tests/array/prev_error1.phpt create mode 100755 ext/standard/tests/array/prev_error2.phpt create mode 100755 ext/standard/tests/array/prev_error3.phpt create mode 100755 ext/standard/tests/array/prev_variation1.phpt create mode 100755 ext/standard/tests/array/prev_variation2.phpt create mode 100644 ext/standard/tests/array/uksort_basic.phpt create mode 100644 ext/standard/tests/array/uksort_error.phpt create mode 100644 ext/standard/tests/array/uksort_variation1.phpt create mode 100644 ext/standard/tests/array/uksort_variation2.phpt create mode 100644 ext/standard/tests/array/usort_basic.phpt create mode 100644 ext/standard/tests/array/usort_error1.phpt create mode 100644 ext/standard/tests/array/usort_error2.phpt create mode 100644 ext/standard/tests/array/usort_object1.phpt create mode 100644 ext/standard/tests/array/usort_object2.phpt create mode 100644 ext/standard/tests/array/usort_variation1.phpt create mode 100644 ext/standard/tests/array/usort_variation10.phpt create mode 100644 ext/standard/tests/array/usort_variation2.phpt create mode 100644 ext/standard/tests/array/usort_variation3.phpt create mode 100644 ext/standard/tests/array/usort_variation4.phpt create mode 100644 ext/standard/tests/array/usort_variation5.phpt create mode 100644 ext/standard/tests/array/usort_variation6.phpt create mode 100644 ext/standard/tests/array/usort_variation7.phpt create mode 100644 ext/standard/tests/array/usort_variation8.phpt create mode 100644 ext/standard/tests/array/usort_variation9.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_basic_001.phpt create mode 100644 ext/standard/tests/directory/DirectoryClass_error_001.phpt create mode 100644 ext/standard/tests/directory/directory_constants-win32.phpt create mode 100644 ext/standard/tests/directory/directory_constants.phpt create mode 100644 ext/standard/tests/file/005_variation2-win32.phpt create mode 100644 ext/standard/tests/file/005_variation2.phpt create mode 100644 ext/standard/tests/file/basename-win32.phpt create mode 100644 ext/standard/tests/file/basename.phpt create mode 100644 ext/standard/tests/file/basename_basic-win32.phpt create mode 100644 ext/standard/tests/file/basename_basic.phpt create mode 100644 ext/standard/tests/file/basename_error.phpt create mode 100644 ext/standard/tests/file/basename_variation1-win32.phpt create mode 100644 ext/standard/tests/file/basename_variation1.phpt create mode 100644 ext/standard/tests/file/basename_variation2-win32.phpt create mode 100644 ext/standard/tests/file/basename_variation2.phpt create mode 100644 ext/standard/tests/file/basename_variation3.phpt create mode 100644 ext/standard/tests/file/basename_variation4.phpt create mode 100644 ext/standard/tests/file/bug43353.phpt create mode 100644 ext/standard/tests/file/bug44607.phpt create mode 100644 ext/standard/tests/file/bug45181.phpt create mode 100644 ext/standard/tests/file/bug45303.phpt create mode 100644 ext/standard/tests/file/chmod_basic-win32.phpt create mode 100644 ext/standard/tests/file/chmod_basic.phpt create mode 100644 ext/standard/tests/file/chmod_error.phpt create mode 100644 ext/standard/tests/file/chmod_variation1.phpt create mode 100644 ext/standard/tests/file/chmod_variation2-win32.phpt create mode 100644 ext/standard/tests/file/chmod_variation2.phpt create mode 100644 ext/standard/tests/file/chmod_variation3.phpt create mode 100644 ext/standard/tests/file/chmod_variation4.phpt create mode 100644 ext/standard/tests/file/chroot_001.phpt create mode 100644 ext/standard/tests/file/directory_wrapper_fstat_basic.phpt create mode 100644 ext/standard/tests/file/dirname_basic-win32.phpt create mode 100644 ext/standard/tests/file/dirname_basic.phpt create mode 100644 ext/standard/tests/file/dirname_error.phpt create mode 100644 ext/standard/tests/file/dirname_variation1.phpt create mode 100644 ext/standard/tests/file/feof_basic.phpt create mode 100644 ext/standard/tests/file/fgets_socket_variation1.phpt create mode 100644 ext/standard/tests/file/fgets_socket_variation2.phpt create mode 100644 ext/standard/tests/file/file_exists_error.phpt create mode 100644 ext/standard/tests/file/file_exists_variation1.phpt create mode 100644 ext/standard/tests/file/file_get_contents_basic.phpt create mode 100644 ext/standard/tests/file/file_get_contents_error.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation1.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation2.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation3.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation4.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation5.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation6.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation7-win32.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation7.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation8-win32.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation8.phpt create mode 100644 ext/standard/tests/file/file_get_contents_variation9.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation1.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation2.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation3.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation4.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation5.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation6.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation7-win32.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation7.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation8-win32.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation8.phpt create mode 100644 ext/standard/tests/file/file_put_contents_variation9.phpt create mode 100644 ext/standard/tests/file/file_variation2.phpt create mode 100644 ext/standard/tests/file/file_variation3.phpt create mode 100644 ext/standard/tests/file/file_variation4.phpt create mode 100644 ext/standard/tests/file/file_variation5-win32.phpt create mode 100644 ext/standard/tests/file/file_variation5.phpt create mode 100644 ext/standard/tests/file/file_variation6.phpt create mode 100644 ext/standard/tests/file/file_variation7.phpt create mode 100644 ext/standard/tests/file/file_variation8-win32.phpt create mode 100644 ext/standard/tests/file/file_variation8.phpt create mode 100644 ext/standard/tests/file/file_variation9.phpt create mode 100644 ext/standard/tests/file/filegroup_variation1.phpt create mode 100644 ext/standard/tests/file/filegroup_variation2.phpt create mode 100644 ext/standard/tests/file/filegroup_variation3.phpt create mode 100644 ext/standard/tests/file/fileinode_variation1.phpt create mode 100644 ext/standard/tests/file/fileinode_variation2.phpt create mode 100644 ext/standard/tests/file/fileinode_variation3.phpt create mode 100644 ext/standard/tests/file/fileowner_variation1.phpt create mode 100644 ext/standard/tests/file/fileowner_variation2.phpt create mode 100644 ext/standard/tests/file/fileowner_variation3.phpt create mode 100644 ext/standard/tests/file/fileperms_variation1.phpt create mode 100644 ext/standard/tests/file/fileperms_variation2.phpt create mode 100644 ext/standard/tests/file/fileperms_variation3.phpt create mode 100644 ext/standard/tests/file/filesize_variation5.phpt create mode 100644 ext/standard/tests/file/filetype_variation2.phpt create mode 100644 ext/standard/tests/file/fopen_include_path.inc create mode 100644 ext/standard/tests/file/fopen_variation10-win32.phpt create mode 100644 ext/standard/tests/file/fopen_variation11-win32.phpt create mode 100644 ext/standard/tests/file/fopen_variation12.phpt create mode 100644 ext/standard/tests/file/fopen_variation13.phpt create mode 100644 ext/standard/tests/file/fopen_variation14-win32.phpt create mode 100644 ext/standard/tests/file/fopen_variation14.phpt create mode 100644 ext/standard/tests/file/fopen_variation15-win32.phpt create mode 100644 ext/standard/tests/file/fopen_variation15.phpt create mode 100644 ext/standard/tests/file/fopen_variation16.phpt create mode 100644 ext/standard/tests/file/fopen_variation17.phpt create mode 100644 ext/standard/tests/file/fopen_variation19.phpt create mode 100644 ext/standard/tests/file/fopen_variation3.phpt create mode 100644 ext/standard/tests/file/fopen_variation4.phpt create mode 100644 ext/standard/tests/file/fopen_variation5.phpt create mode 100644 ext/standard/tests/file/fopen_variation6.phpt create mode 100644 ext/standard/tests/file/fopen_variation7.phpt create mode 100644 ext/standard/tests/file/fopen_variation8.phpt create mode 100644 ext/standard/tests/file/fopen_variation9.phpt create mode 100644 ext/standard/tests/file/fpassthru_variation1.phpt create mode 100644 ext/standard/tests/file/fputcsv_002.phpt create mode 100644 ext/standard/tests/file/fread_fwrite_basic.phpt create mode 100644 ext/standard/tests/file/fseek_variation1.phpt create mode 100644 ext/standard/tests/file/fseek_variation2.phpt create mode 100644 ext/standard/tests/file/fseek_variation3.phpt create mode 100644 ext/standard/tests/file/fstat_basic.phpt create mode 100644 ext/standard/tests/file/fstat_error.phpt create mode 100644 ext/standard/tests/file/fstat_variation1.phpt create mode 100644 ext/standard/tests/file/fstat_variation2.phpt create mode 100644 ext/standard/tests/file/fstat_variation3.phpt create mode 100644 ext/standard/tests/file/fstat_variation4.phpt create mode 100644 ext/standard/tests/file/fstat_variation5.phpt create mode 100644 ext/standard/tests/file/fstat_variation6.phpt create mode 100644 ext/standard/tests/file/fstat_variation7.phpt create mode 100644 ext/standard/tests/file/fstat_variation8.phpt create mode 100644 ext/standard/tests/file/fwrite_variation5.phpt create mode 100644 ext/standard/tests/file/glob_error_002-win32.phpt create mode 100644 ext/standard/tests/file/is_uploaded_file_basic.phpt create mode 100644 ext/standard/tests/file/lstat_stat_variation22.phpt create mode 100644 ext/standard/tests/file/mkdir_variation1-win32.phpt create mode 100644 ext/standard/tests/file/mkdir_variation1.phpt create mode 100644 ext/standard/tests/file/mkdir_variation2.phpt create mode 100644 ext/standard/tests/file/mkdir_variation3.phpt create mode 100644 ext/standard/tests/file/mkdir_variation4.phpt create mode 100644 ext/standard/tests/file/mkdir_variation5-win32.phpt create mode 100644 ext/standard/tests/file/mkdir_variation5.phpt create mode 100644 ext/standard/tests/file/move_uploaded_file_basic.phpt delete mode 100644 ext/standard/tests/file/open_basedir.inc delete mode 100644 ext/standard/tests/file/open_basedir_chdir.phpt delete mode 100644 ext/standard/tests/file/open_basedir_chmod.phpt delete mode 100644 ext/standard/tests/file/open_basedir_copy.phpt delete mode 100644 ext/standard/tests/file/open_basedir_copy_variation1.phpt delete mode 100644 ext/standard/tests/file/open_basedir_disk_free_space.phpt delete mode 100644 ext/standard/tests/file/open_basedir_file.phpt delete mode 100644 ext/standard/tests/file/open_basedir_file_exists.phpt delete mode 100644 ext/standard/tests/file/open_basedir_file_get_contents.phpt delete mode 100644 ext/standard/tests/file/open_basedir_file_put_contents.phpt delete mode 100644 ext/standard/tests/file/open_basedir_fileatime.phpt delete mode 100644 ext/standard/tests/file/open_basedir_filectime.phpt delete mode 100644 ext/standard/tests/file/open_basedir_filegroup.phpt delete mode 100644 ext/standard/tests/file/open_basedir_fileinode.phpt delete mode 100644 ext/standard/tests/file/open_basedir_filemtime.phpt delete mode 100644 ext/standard/tests/file/open_basedir_fileowner.phpt delete mode 100644 ext/standard/tests/file/open_basedir_fileperms.phpt delete mode 100644 ext/standard/tests/file/open_basedir_filesize.phpt delete mode 100644 ext/standard/tests/file/open_basedir_filetype.phpt delete mode 100644 ext/standard/tests/file/open_basedir_fopen.phpt delete mode 100644 ext/standard/tests/file/open_basedir_glob-win32.phpt delete mode 100644 ext/standard/tests/file/open_basedir_glob.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_dir.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_executable.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_file.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_link.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_readable.phpt delete mode 100644 ext/standard/tests/file/open_basedir_is_writable.phpt delete mode 100644 ext/standard/tests/file/open_basedir_link.phpt delete mode 100644 ext/standard/tests/file/open_basedir_linkinfo.phpt delete mode 100644 ext/standard/tests/file/open_basedir_lstat.phpt delete mode 100644 ext/standard/tests/file/open_basedir_mkdir.phpt delete mode 100644 ext/standard/tests/file/open_basedir_parse_ini_file.phpt delete mode 100644 ext/standard/tests/file/open_basedir_readlink.phpt delete mode 100644 ext/standard/tests/file/open_basedir_realpath.phpt delete mode 100644 ext/standard/tests/file/open_basedir_rename.phpt delete mode 100644 ext/standard/tests/file/open_basedir_rmdir.phpt delete mode 100644 ext/standard/tests/file/open_basedir_stat.phpt delete mode 100644 ext/standard/tests/file/open_basedir_symlink.phpt delete mode 100644 ext/standard/tests/file/open_basedir_tempnam.phpt delete mode 100644 ext/standard/tests/file/open_basedir_touch.phpt delete mode 100644 ext/standard/tests/file/open_basedir_unlink.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation1.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation2.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation3.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation4.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation5.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation6-win32.phpt create mode 100644 ext/standard/tests/file/parse_ini_file_variation6.phpt create mode 100644 ext/standard/tests/file/pathinfo_basic1-win32.phpt create mode 100644 ext/standard/tests/file/pathinfo_basic1.phpt create mode 100644 ext/standard/tests/file/pathinfo_basic2-win32.phpt create mode 100644 ext/standard/tests/file/pathinfo_basic2.phpt create mode 100644 ext/standard/tests/file/pathinfo_variation1.phpt create mode 100644 ext/standard/tests/file/pathinfo_variation2.phpt create mode 100644 ext/standard/tests/file/pathinfo_variation3.phpt create mode 100644 ext/standard/tests/file/pclose_variation1.phpt create mode 100644 ext/standard/tests/file/readfile_variation10-win32.phpt create mode 100644 ext/standard/tests/file/readfile_variation10.phpt create mode 100644 ext/standard/tests/file/readfile_variation4.phpt create mode 100644 ext/standard/tests/file/readfile_variation5.phpt create mode 100644 ext/standard/tests/file/readfile_variation6.phpt create mode 100644 ext/standard/tests/file/readfile_variation7.phpt create mode 100644 ext/standard/tests/file/readfile_variation8-win32.phpt create mode 100644 ext/standard/tests/file/readfile_variation9.phpt create mode 100644 ext/standard/tests/file/readlink_variation1.phpt create mode 100644 ext/standard/tests/file/realpath_variation2.phpt create mode 100644 ext/standard/tests/file/rename_variation10.phpt create mode 100644 ext/standard/tests/file/rename_variation11-win32.phpt create mode 100644 ext/standard/tests/file/rename_variation12.phpt create mode 100644 ext/standard/tests/file/rename_variation13-win32.phpt create mode 100644 ext/standard/tests/file/rename_variation13.phpt create mode 100644 ext/standard/tests/file/rmdir_variation1-win32.phpt create mode 100644 ext/standard/tests/file/rmdir_variation1.phpt create mode 100644 ext/standard/tests/file/rmdir_variation2.phpt create mode 100644 ext/standard/tests/file/rmdir_variation3-win32.phpt create mode 100644 ext/standard/tests/file/rmdir_variation3.phpt create mode 100644 ext/standard/tests/file/symlink_to_symlink.phpt create mode 100644 ext/standard/tests/file/tempnam_variation5-win32.phpt create mode 100644 ext/standard/tests/file/tempnam_variation6-win32.phpt create mode 100644 ext/standard/tests/file/tempnam_variation8-win32.phpt create mode 100644 ext/standard/tests/file/touch_basic-win32.phpt create mode 100644 ext/standard/tests/file/touch_basic.phpt create mode 100644 ext/standard/tests/file/touch_error.phpt create mode 100644 ext/standard/tests/file/touch_variation1.phpt create mode 100644 ext/standard/tests/file/touch_variation2.phpt create mode 100644 ext/standard/tests/file/touch_variation3-win32.phpt create mode 100644 ext/standard/tests/file/touch_variation3.phpt create mode 100644 ext/standard/tests/file/touch_variation4-win32.phpt create mode 100644 ext/standard/tests/file/touch_variation4.phpt create mode 100644 ext/standard/tests/file/touch_variation5-win32.phpt create mode 100644 ext/standard/tests/file/touch_variation5.phpt create mode 100644 ext/standard/tests/file/touch_variation6-win32.phpt create mode 100644 ext/standard/tests/file/umask_variation3.phpt create mode 100644 ext/standard/tests/file/unlink_variation10.phpt create mode 100644 ext/standard/tests/file/unlink_variation6.phpt create mode 100644 ext/standard/tests/file/unlink_variation7.phpt create mode 100644 ext/standard/tests/file/unlink_variation8-win32.phpt create mode 100644 ext/standard/tests/file/unlink_variation8.phpt create mode 100644 ext/standard/tests/file/unlink_variation9-win32.phpt create mode 100644 ext/standard/tests/file/userstreams_004.phpt create mode 100644 ext/standard/tests/filters/bug46164-1.phpt create mode 100644 ext/standard/tests/filters/bug46164-2.phpt create mode 100644 ext/standard/tests/filters/filter_errors.inc create mode 100644 ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt create mode 100644 ext/standard/tests/filters/filter_errors_user.phpt create mode 100644 ext/standard/tests/filters/filter_errors_zlib_inflate.phpt create mode 100644 ext/standard/tests/general_functions/bug47027.phpt create mode 100644 ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt create mode 100644 ext/standard/tests/general_functions/call_user_func_array_variation_002.phpt create mode 100644 ext/standard/tests/general_functions/call_user_func_array_variation_003.phpt create mode 100644 ext/standard/tests/general_functions/escapeshellarg_basic-win32.phpt create mode 100644 ext/standard/tests/general_functions/escapeshellarg_basic.phpt create mode 100644 ext/standard/tests/general_functions/escapeshellarg_error.phpt create mode 100644 ext/standard/tests/general_functions/escapeshellarg_variation1-win32.phpt create mode 100644 ext/standard/tests/general_functions/escapeshellarg_variation1.phpt create mode 100644 ext/standard/tests/general_functions/floatval_basic.phpt create mode 100644 ext/standard/tests/general_functions/floatval_error.phpt create mode 100644 ext/standard/tests/general_functions/floatval_variation1.phpt create mode 100644 ext/standard/tests/general_functions/get_defined_vars_basic.phpt create mode 100644 ext/standard/tests/general_functions/get_extension_funcs_basic.phpt create mode 100644 ext/standard/tests/general_functions/get_extension_funcs_error.phpt create mode 100644 ext/standard/tests/general_functions/get_extension_funcs_variation.phpt create mode 100644 ext/standard/tests/general_functions/get_include_path_basic.phpt create mode 100644 ext/standard/tests/general_functions/get_included_files.phpt create mode 100644 ext/standard/tests/general_functions/get_included_files_inc1.inc create mode 100644 ext/standard/tests/general_functions/get_included_files_inc2.inc create mode 100644 ext/standard/tests/general_functions/get_included_files_inc3.inc create mode 100644 ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt create mode 100644 ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt create mode 100644 ext/standard/tests/general_functions/getmypid_basic.phpt create mode 100644 ext/standard/tests/general_functions/getrusage_basic.phpt create mode 100644 ext/standard/tests/general_functions/getrusage_error.phpt create mode 100644 ext/standard/tests/general_functions/getrusage_variation1.phpt delete mode 100644 ext/standard/tests/general_functions/is_callable.phpt create mode 100644 ext/standard/tests/general_functions/is_callable_basic1.phpt create mode 100644 ext/standard/tests/general_functions/is_callable_basic2.phpt create mode 100644 ext/standard/tests/general_functions/is_callable_error.phpt create mode 100644 ext/standard/tests/general_functions/is_callable_variation1.phpt create mode 100644 ext/standard/tests/general_functions/is_callable_variation2.phpt create mode 100644 ext/standard/tests/general_functions/php_uname_basic.phpt create mode 100644 ext/standard/tests/general_functions/php_uname_error.phpt create mode 100644 ext/standard/tests/general_functions/php_uname_variation1.phpt create mode 100644 ext/standard/tests/general_functions/set_magic_quotes_runtime_basic.phpt create mode 100644 ext/standard/tests/general_functions/set_magic_quotes_runtime_error.phpt create mode 100644 ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt delete mode 100644 ext/standard/tests/general_functions/var_export.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic1.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic2.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic3.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic4.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic5.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic6.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic7.phpt create mode 100644 ext/standard/tests/general_functions/var_export_basic8.phpt create mode 100644 ext/standard/tests/general_functions/var_export_error1.phpt create mode 100644 ext/standard/tests/general_functions/var_export_error2.phpt create mode 100644 ext/standard/tests/general_functions/var_export_error3.phpt create mode 100644 ext/standard/tests/image/200x100.bmp create mode 100644 ext/standard/tests/image/200x100.gif create mode 100644 ext/standard/tests/image/200x100.jpg create mode 100644 ext/standard/tests/image/200x100.png create mode 100644 ext/standard/tests/image/200x100.swf create mode 100644 ext/standard/tests/image/200x100.tif create mode 100644 ext/standard/tests/image/200x100_unknown.unknown create mode 100644 ext/standard/tests/image/2x2mm.tif create mode 100644 ext/standard/tests/image/75x50.wbmp create mode 100644 ext/standard/tests/image/75x50.xbm create mode 100644 ext/standard/tests/image/blank_file create mode 100644 ext/standard/tests/image/blank_file.bmp create mode 100644 ext/standard/tests/image/getimagesize_basic.phpt create mode 100644 ext/standard/tests/image/getimagesize_error1.phpt create mode 100644 ext/standard/tests/image/getimagesize_jpgapp.phpt create mode 100644 ext/standard/tests/image/getimagesize_tif_mm.phpt create mode 100644 ext/standard/tests/image/getimagesize_variation1.phpt create mode 100644 ext/standard/tests/image/getimagesize_variation2.phpt create mode 100644 ext/standard/tests/image/getimagesize_variation3.phpt create mode 100644 ext/standard/tests/image/getimagesize_variation4.phpt create mode 100644 ext/standard/tests/image/getimagesize_wbmp.phpt create mode 100644 ext/standard/tests/image/getimagesize_xbm.phpt create mode 100644 ext/standard/tests/image/test.txt create mode 100644 ext/standard/tests/image/testAPP.jpg create mode 100644 ext/standard/tests/mail/ezmlm_hash_basic.phpt create mode 100644 ext/standard/tests/mail/ezmlm_hash_basic_64bit.phpt create mode 100644 ext/standard/tests/mail/ezmlm_hash_error.phpt create mode 100644 ext/standard/tests/mail/ezmlm_hash_variation1.phpt create mode 100644 ext/standard/tests/mail/mail_basic.phpt create mode 100644 ext/standard/tests/mail/mail_basic2.phpt create mode 100644 ext/standard/tests/mail/mail_basic3.phpt create mode 100644 ext/standard/tests/mail/mail_basic4.phpt create mode 100644 ext/standard/tests/mail/mail_basic5.phpt create mode 100644 ext/standard/tests/mail/mail_basic_alt1-win32.phpt create mode 100644 ext/standard/tests/mail/mail_basic_alt2-win32.phpt create mode 100644 ext/standard/tests/mail/mail_basic_alt3-win32.phpt create mode 100644 ext/standard/tests/mail/mail_basic_alt4-win32.phpt create mode 100644 ext/standard/tests/mail/mail_error.phpt create mode 100644 ext/standard/tests/mail/mail_include.inc create mode 100644 ext/standard/tests/mail/mail_skipif.inc create mode 100644 ext/standard/tests/mail/mail_variation1.phpt create mode 100644 ext/standard/tests/mail/mail_variation2.phpt create mode 100644 ext/standard/tests/mail/mail_variation_alt1-win32.phpt create mode 100644 ext/standard/tests/mail/mail_variation_alt2-win32.phpt create mode 100644 ext/standard/tests/mail/mail_variation_alt3-win32.phpt create mode 100644 ext/standard/tests/math/abs_basic.phpt create mode 100644 ext/standard/tests/math/abs_error.phpt create mode 100644 ext/standard/tests/math/abs_variation.phpt create mode 100644 ext/standard/tests/math/atan2_variation1.phpt create mode 100644 ext/standard/tests/math/atan2_variation2.phpt create mode 100644 ext/standard/tests/math/base_convert_variation1.phpt create mode 100644 ext/standard/tests/math/base_convert_variation2.phpt create mode 100644 ext/standard/tests/math/base_convert_variation3.phpt create mode 100644 ext/standard/tests/math/bindec_variation1.phpt create mode 100644 ext/standard/tests/math/bindec_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/bug45712.phpt create mode 100644 ext/standard/tests/math/ceil_basic.phpt create mode 100644 ext/standard/tests/math/ceil_error.phpt create mode 100644 ext/standard/tests/math/ceil_variation1.phpt create mode 100644 ext/standard/tests/math/decbin_variation1.phpt create mode 100644 ext/standard/tests/math/decbin_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/dechex_variation1.phpt create mode 100644 ext/standard/tests/math/dechex_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/decoct_variation1.phpt create mode 100644 ext/standard/tests/math/decoct_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/exp_basic.phpt create mode 100644 ext/standard/tests/math/exp_variation1.phpt create mode 100644 ext/standard/tests/math/expm1_basic.phpt create mode 100644 ext/standard/tests/math/expm1_error.phpt create mode 100644 ext/standard/tests/math/expm1_variation1.phpt create mode 100644 ext/standard/tests/math/floor_basic.phpt create mode 100644 ext/standard/tests/math/floor_error.phpt create mode 100644 ext/standard/tests/math/floor_variation1.phpt create mode 100644 ext/standard/tests/math/fmod_variation1.phpt create mode 100644 ext/standard/tests/math/fmod_variation2.phpt create mode 100644 ext/standard/tests/math/hexdec_basic_64bit.phpt create mode 100644 ext/standard/tests/math/hexdec_variation1.phpt create mode 100644 ext/standard/tests/math/hexdec_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/hypot_basic.phpt create mode 100644 ext/standard/tests/math/hypot_variation1.phpt create mode 100644 ext/standard/tests/math/hypot_variation2.phpt create mode 100644 ext/standard/tests/math/is_finite_variation1.phpt create mode 100644 ext/standard/tests/math/is_infinite_variation1.phpt create mode 100644 ext/standard/tests/math/is_nan_variation1.phpt create mode 100644 ext/standard/tests/math/log1p_basic.phpt create mode 100644 ext/standard/tests/math/log1p_error.phpt create mode 100644 ext/standard/tests/math/log1p_variation1.phpt create mode 100644 ext/standard/tests/math/log_variation1.phpt create mode 100644 ext/standard/tests/math/log_variation2.phpt create mode 100644 ext/standard/tests/math/mt_rand_variation1.phpt create mode 100644 ext/standard/tests/math/mt_rand_variation2.phpt create mode 100644 ext/standard/tests/math/mt_srand_variation1.phpt create mode 100644 ext/standard/tests/math/octdec_basic_64bit.phpt create mode 100644 ext/standard/tests/math/octdec_variation1.phpt create mode 100644 ext/standard/tests/math/pow_basic2.phpt create mode 100644 ext/standard/tests/math/pow_basic_64bit.phpt create mode 100644 ext/standard/tests/math/pow_variation1.phpt create mode 100644 ext/standard/tests/math/pow_variation1_64bit.phpt create mode 100644 ext/standard/tests/math/pow_variation2.phpt create mode 100644 ext/standard/tests/math/rand_variation1.phpt create mode 100644 ext/standard/tests/math/rand_variation2.phpt create mode 100644 ext/standard/tests/math/round_basic.phpt create mode 100644 ext/standard/tests/math/round_error.phpt create mode 100644 ext/standard/tests/math/round_variation1.phpt create mode 100644 ext/standard/tests/math/round_variation2.phpt create mode 100644 ext/standard/tests/math/sqrt_variation.phpt create mode 100644 ext/standard/tests/math/srand_variation1.phpt create mode 100644 ext/standard/tests/misc/syslog_basic.phpt create mode 100644 ext/standard/tests/misc/syslog_parameters.phpt create mode 100644 ext/standard/tests/misc/syslog_vars_variation1.phpt create mode 100644 ext/standard/tests/misc/syslog_vars_variation2.phpt create mode 100644 ext/standard/tests/network/closelog_basic.phpt create mode 100644 ext/standard/tests/network/closelog_error.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_basic-win32.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_basic.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_error.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_variation-win32.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_variation.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_variation2-win32.phpt create mode 100644 ext/standard/tests/network/define_syslog_variables_variation2.phpt create mode 100644 ext/standard/tests/network/fsockopen_basic.phpt create mode 100644 ext/standard/tests/network/fsockopen_error.phpt create mode 100644 ext/standard/tests/network/fsockopen_variation1.phpt create mode 100644 ext/standard/tests/network/fsockopen_variation2.phpt create mode 100644 ext/standard/tests/network/ip2long_error.phpt create mode 100644 ext/standard/tests/network/ip2long_variation1.phpt create mode 100644 ext/standard/tests/network/long2ip_error.phpt create mode 100644 ext/standard/tests/network/long2ip_variation1.phpt create mode 100644 ext/standard/tests/network/socket_get_status_basic.phpt create mode 100644 ext/standard/tests/network/syslog_basic-win32.phpt create mode 100644 ext/standard/tests/network/syslog_error.phpt create mode 100644 ext/standard/tests/serialize/incomplete_class.phpt create mode 100644 ext/standard/tests/streams/bug44818.phpt create mode 100644 ext/standard/tests/streams/bug46024.phpt create mode 100644 ext/standard/tests/streams/bug46426.phpt create mode 100644 ext/standard/tests/streams/stream_get_contents_001.phpt create mode 100644 ext/standard/tests/streams/stream_get_contents_002.phpt create mode 100644 ext/standard/tests/streams/stream_get_line_nb.phpt create mode 100644 ext/standard/tests/streams/stream_socket_pair.phpt create mode 100644 ext/standard/tests/strings/bin2hex_basic.phpt create mode 100644 ext/standard/tests/strings/bin2hex_error.phpt create mode 100644 ext/standard/tests/strings/bin2hex_variation1.phpt create mode 100644 ext/standard/tests/strings/bug45166.phpt create mode 100644 ext/standard/tests/strings/bug45485.phpt create mode 100644 ext/standard/tests/strings/bug47322.phpt create mode 100644 ext/standard/tests/strings/chr_basic.phpt create mode 100644 ext/standard/tests/strings/chr_error.phpt create mode 100644 ext/standard/tests/strings/chr_variation1.phpt create mode 100644 ext/standard/tests/strings/convert_cyr_string_basic.phpt create mode 100644 ext/standard/tests/strings/convert_cyr_string_error.phpt create mode 100644 ext/standard/tests/strings/convert_cyr_string_variation1.phpt create mode 100644 ext/standard/tests/strings/convert_uudecode_basic.phpt create mode 100644 ext/standard/tests/strings/convert_uudecode_error.phpt create mode 100644 ext/standard/tests/strings/convert_uudecode_variation1.phpt create mode 100644 ext/standard/tests/strings/convert_uuencode_basic.phpt create mode 100644 ext/standard/tests/strings/convert_uuencode_error.phpt create mode 100644 ext/standard/tests/strings/convert_uuencode_variation1.phpt create mode 100644 ext/standard/tests/strings/count_chars_basic.phpt create mode 100644 ext/standard/tests/strings/count_chars_error.phpt create mode 100644 ext/standard/tests/strings/count_chars_variation1.phpt create mode 100644 ext/standard/tests/strings/count_chars_variation2.phpt create mode 100644 ext/standard/tests/strings/explode_bug.phpt create mode 100644 ext/standard/tests/strings/explode_error.phpt create mode 100644 ext/standard/tests/strings/explode_variation1.phpt create mode 100644 ext/standard/tests/strings/explode_variation2.phpt create mode 100644 ext/standard/tests/strings/explode_variation3.phpt create mode 100644 ext/standard/tests/strings/explode_variation4.phpt create mode 100644 ext/standard/tests/strings/explode_variation5.phpt create mode 100644 ext/standard/tests/strings/explode_variation6.phpt create mode 100644 ext/standard/tests/strings/hebrev_basic.phpt create mode 100644 ext/standard/tests/strings/hebrev_error.phpt create mode 100644 ext/standard/tests/strings/hebrev_variation1.phpt create mode 100644 ext/standard/tests/strings/hebrev_variation2.phpt create mode 100644 ext/standard/tests/strings/hebrevc_basic.phpt create mode 100644 ext/standard/tests/strings/hebrevc_error.phpt create mode 100644 ext/standard/tests/strings/hebrevc_variation1.phpt create mode 100644 ext/standard/tests/strings/hebrevc_variation2.phpt create mode 100644 ext/standard/tests/strings/ltrim_basic.phpt create mode 100644 ext/standard/tests/strings/ltrim_error.phpt create mode 100644 ext/standard/tests/strings/ltrim_variation1.phpt create mode 100644 ext/standard/tests/strings/ltrim_variation2.phpt create mode 100644 ext/standard/tests/strings/money_format_basic1.phpt create mode 100644 ext/standard/tests/strings/money_format_basic2.phpt create mode 100644 ext/standard/tests/strings/money_format_basic3.phpt create mode 100644 ext/standard/tests/strings/money_format_error.phpt create mode 100644 ext/standard/tests/strings/money_format_variation1.phpt create mode 100644 ext/standard/tests/strings/money_format_variation2.phpt create mode 100644 ext/standard/tests/strings/nl_langinfo_basic.phpt create mode 100644 ext/standard/tests/strings/nl_langinfo_error1.phpt create mode 100644 ext/standard/tests/strings/nl_langinfo_variation1.phpt create mode 100644 ext/standard/tests/strings/number_format_basic.phpt create mode 100644 ext/standard/tests/strings/number_format_error.phpt create mode 100644 ext/standard/tests/strings/ord_basic.phpt create mode 100644 ext/standard/tests/strings/ord_error.phpt create mode 100644 ext/standard/tests/strings/ord_variation1.phpt create mode 100644 ext/standard/tests/strings/print_basic.phpt create mode 100644 ext/standard/tests/strings/print_variation1.phpt create mode 100644 ext/standard/tests/strings/printf_basic1.phpt create mode 100644 ext/standard/tests/strings/printf_basic2.phpt create mode 100644 ext/standard/tests/strings/printf_basic3.phpt create mode 100644 ext/standard/tests/strings/printf_basic4.phpt create mode 100644 ext/standard/tests/strings/printf_basic5.phpt create mode 100644 ext/standard/tests/strings/printf_basic6.phpt create mode 100644 ext/standard/tests/strings/printf_basic7.phpt create mode 100644 ext/standard/tests/strings/printf_basic8.phpt create mode 100644 ext/standard/tests/strings/printf_basic9.phpt create mode 100644 ext/standard/tests/strings/printf_error.phpt create mode 100644 ext/standard/tests/strings/printf_variation1.phpt create mode 100644 ext/standard/tests/strings/printf_variation2.phpt create mode 100644 ext/standard/tests/strings/quoted_printable_decode_basic.phpt create mode 100644 ext/standard/tests/strings/quoted_printable_decode_error.phpt create mode 100644 ext/standard/tests/strings/quoted_printable_decode_variation1.phpt create mode 100644 ext/standard/tests/strings/quotemeta_basic.phpt create mode 100644 ext/standard/tests/strings/quotemeta_error.phpt create mode 100644 ext/standard/tests/strings/rtrim_basic.phpt create mode 100644 ext/standard/tests/strings/rtrim_error.phpt create mode 100644 ext/standard/tests/strings/rtrim_variation1.phpt create mode 100644 ext/standard/tests/strings/rtrim_variation2.phpt create mode 100644 ext/standard/tests/strings/sha1_basic.phpt create mode 100644 ext/standard/tests/strings/sha1_error.phpt create mode 100644 ext/standard/tests/strings/sha1_file.phpt create mode 100644 ext/standard/tests/strings/sha1_variation1.phpt create mode 100644 ext/standard/tests/strings/sha1_variation2.phpt create mode 100644 ext/standard/tests/strings/similar_text_basic.phpt create mode 100644 ext/standard/tests/strings/similar_text_error.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic1.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic2.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic3.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic4.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic5.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic6.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic7.phpt create mode 100644 ext/standard/tests/strings/sscanf_basic8.phpt create mode 100644 ext/standard/tests/strings/sscanf_error.phpt create mode 100644 ext/standard/tests/strings/sscanf_variation1.phpt create mode 100644 ext/standard/tests/strings/sscanf_variation2.phpt create mode 100644 ext/standard/tests/strings/str_pad_variation1.phpt create mode 100644 ext/standard/tests/strings/str_pad_variation2.phpt create mode 100644 ext/standard/tests/strings/str_pad_variation3.phpt create mode 100644 ext/standard/tests/strings/str_pad_variation4.phpt create mode 100644 ext/standard/tests/strings/str_pad_variation5.phpt create mode 100644 ext/standard/tests/strings/str_shuffle_basic.phpt create mode 100644 ext/standard/tests/strings/str_shuffle_error.phpt create mode 100644 ext/standard/tests/strings/str_shuffle_variation1.phpt create mode 100644 ext/standard/tests/strings/strip_tags_variation11.phpt create mode 100644 ext/standard/tests/strings/stripcslashes_basic.phpt create mode 100644 ext/standard/tests/strings/stripcslashes_error.phpt create mode 100644 ext/standard/tests/strings/stripcslashes_variation1.phpt create mode 100644 ext/standard/tests/strings/stristr_basic.phpt create mode 100644 ext/standard/tests/strings/stristr_error.phpt create mode 100644 ext/standard/tests/strings/stristr_variation1.phpt create mode 100644 ext/standard/tests/strings/stristr_variation2.phpt create mode 100644 ext/standard/tests/strings/strlen_basic.phpt create mode 100644 ext/standard/tests/strings/strlen_error.phpt create mode 100644 ext/standard/tests/strings/strlen_variation1.phpt create mode 100644 ext/standard/tests/strings/strripos_basic1.phpt create mode 100644 ext/standard/tests/strings/strripos_basic2.phpt create mode 100644 ext/standard/tests/strings/strripos_error.phpt create mode 100644 ext/standard/tests/strings/strripos_variation1.phpt create mode 100644 ext/standard/tests/strings/strripos_variation2.phpt create mode 100644 ext/standard/tests/strings/strripos_variation3.phpt create mode 100644 ext/standard/tests/strings/strripos_variation4.phpt create mode 100644 ext/standard/tests/strings/strripos_variation5.phpt create mode 100644 ext/standard/tests/strings/strval_basic.phpt create mode 100644 ext/standard/tests/strings/strval_error.phpt create mode 100644 ext/standard/tests/strings/strval_variation1.phpt create mode 100644 ext/standard/tests/strings/strval_variation2.phpt create mode 100644 ext/standard/tests/strings/substr_replace_error.phpt create mode 100644 ext/standard/tests/strings/trim_basic.phpt create mode 100644 ext/standard/tests/strings/trim_error.phpt create mode 100644 ext/standard/tests/strings/trim_variation1.phpt create mode 100644 ext/standard/tests/strings/trim_variation2.phpt create mode 100644 ext/standard/tests/strings/unpack_error.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic1.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic2.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic3.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic4.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic5.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic6.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic7.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic7_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic8.phpt create mode 100644 ext/standard/tests/strings/vfprintf_basic9.phpt create mode 100644 ext/standard/tests/strings/vfprintf_error1.phpt create mode 100644 ext/standard/tests/strings/vfprintf_error2.phpt create mode 100644 ext/standard/tests/strings/vfprintf_error3.phpt create mode 100644 ext/standard/tests/strings/vfprintf_error4.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation1.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation10.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation11.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation11_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation12.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation12_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation13.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation13_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation14.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation14_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation15.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation15_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation16.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation16_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation17.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation18.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation19.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation19_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation20.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation21.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation3.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation4.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation4_64bit.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation5.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation6.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation7.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation8.phpt create mode 100644 ext/standard/tests/strings/vfprintf_variation9.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic1.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic2.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic3.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic4.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic5.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic6.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic7.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic7_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic8.phpt create mode 100644 ext/standard/tests/strings/vprintf_basic9.phpt create mode 100644 ext/standard/tests/strings/vprintf_error.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation1.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation10.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation11.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation11_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation12.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation12_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation13.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation13_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation14.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation14_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation15.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation15_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation16.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation16_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation17.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation18.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation19.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation19_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation2.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation3.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation4.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation4_64bit.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation5.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation6.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation7.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation8.phpt create mode 100644 ext/standard/tests/strings/vprintf_variation9.phpt create mode 100644 ext/standard/tests/url/base64_encode_basic_002.phpt create mode 100644 ext/standard/tests/url/bug47174.phpt create mode 100644 ext/sybase_ct/tests/test_unbuffered_no_full_fetch.phpt create mode 100644 ext/wddx/tests/002.phpt create mode 100644 ext/wddx/tests/003.phpt create mode 100644 ext/wddx/tests/004.phpt create mode 100644 ext/wddx/tests/005.phpt create mode 100644 ext/wddx/tests/bug45901.phpt create mode 100644 ext/xml/tests/bug46699.phpt create mode 100644 ext/xml/tests/utf8_decode_error.phpt create mode 100644 ext/xml/tests/utf8_decode_variation1.phpt create mode 100644 ext/xml/tests/utf8_encode_error.phpt create mode 100644 ext/xml/tests/utf8_encode_variation1.phpt create mode 100644 ext/xml/tests/xml_error_string_error.phpt create mode 100644 ext/xml/tests/xml_error_string_variation1.phpt create mode 100644 ext/xml/tests/xml_get_current_byte_index_error.phpt create mode 100644 ext/xml/tests/xml_get_current_byte_index_variation1.phpt create mode 100644 ext/xml/tests/xml_get_current_column_number_error.phpt create mode 100644 ext/xml/tests/xml_get_current_column_number_variation1.phpt create mode 100644 ext/xml/tests/xml_get_current_line_number_error.phpt create mode 100644 ext/xml/tests/xml_get_current_line_number_variation1.phpt create mode 100644 ext/xml/tests/xml_get_error_code_error.phpt create mode 100644 ext/xml/tests/xml_get_error_code_variation1.phpt create mode 100644 ext/xml/tests/xml_parse_error.phpt create mode 100644 ext/xml/tests/xml_parse_into_struct_error.phpt create mode 100644 ext/xml/tests/xml_parse_into_struct_variation.phpt create mode 100644 ext/xml/tests/xml_parse_into_struct_variation1.phpt create mode 100644 ext/xml/tests/xml_parse_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_create_error.phpt create mode 100644 ext/xml/tests/xml_parser_create_ns_error.phpt create mode 100644 ext/xml/tests/xml_parser_create_ns_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_create_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_free_error.phpt create mode 100644 ext/xml/tests/xml_parser_free_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_get_option_error.phpt create mode 100644 ext/xml/tests/xml_parser_get_option_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_get_option_variation2.phpt create mode 100644 ext/xml/tests/xml_parser_set_option_basic.phpt create mode 100644 ext/xml/tests/xml_parser_set_option_error.phpt create mode 100644 ext/xml/tests/xml_parser_set_option_variation1.phpt create mode 100644 ext/xml/tests/xml_parser_set_option_variation2.phpt create mode 100644 ext/xml/tests/xml_parser_set_option_variation3.phpt create mode 100644 ext/xml/tests/xml_set_character_data_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_character_data_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_default_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_default_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_element_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_element_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_end_namespace_decl_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_end_namespace_decl_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_external_entity_ref_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_external_entity_ref_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_notation_decl_handler_basic.phpt create mode 100644 ext/xml/tests/xml_set_notation_decl_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_notation_decl_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_object_error.phpt create mode 100644 ext/xml/tests/xml_set_object_variation1.phpt create mode 100644 ext/xml/tests/xml_set_object_variation2.phpt create mode 100644 ext/xml/tests/xml_set_processing_instruction_handler_basic.phpt create mode 100644 ext/xml/tests/xml_set_processing_instruction_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_processing_instruction_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_start_namespace_decl_handler_basic.phpt create mode 100644 ext/xml/tests/xml_set_start_namespace_decl_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_start_namespace_decl_handler_variation1.phpt create mode 100644 ext/xml/tests/xml_set_unparsed_entity_decl_handler_error.phpt create mode 100644 ext/xml/tests/xml_set_unparsed_entity_decl_handler_variation1.phpt create mode 100644 ext/xmlrpc/tests/bug18916.phpt create mode 100644 ext/xmlrpc/tests/bug45226.phpt create mode 100644 ext/xmlrpc/tests/bug45555.phpt create mode 100644 ext/xmlrpc/tests/bug45556.phpt delete mode 100644 ext/zip/Makefile.frag delete mode 100644 ext/zip/lib/mkstemp.c delete mode 100644 ext/zip/lib/unistd.h delete mode 100644 ext/zip/lib/zip_alias.h create mode 100644 ext/zip/lib/zip_filerange_crc.c create mode 100644 ext/zip/lib/zip_get_archive_flag.c create mode 100644 ext/zip/lib/zip_set_archive_flag.c delete mode 100644 ext/zip/lib/zipint_alias.h create mode 100644 ext/zip/tests/bug14962.phpt create mode 100644 ext/zip/tests/bug38943.inc create mode 100644 ext/zip/tests/bug38943_2.phpt create mode 100644 ext/zlib/tests/data.inc create mode 100644 ext/zlib/tests/gzclose_basic.phpt create mode 100644 ext/zlib/tests/gzclose_error.phpt create mode 100644 ext/zlib/tests/gzcompress_basic1.phpt create mode 100644 ext/zlib/tests/gzcompress_error1.phpt create mode 100644 ext/zlib/tests/gzcompress_variation1.phpt create mode 100644 ext/zlib/tests/gzdeflate_basic1.phpt create mode 100644 ext/zlib/tests/gzdeflate_error1.phpt create mode 100644 ext/zlib/tests/gzdeflate_variation1.phpt create mode 100644 ext/zlib/tests/gzencode_basic1.phpt create mode 100644 ext/zlib/tests/gzencode_error1.phpt create mode 100644 ext/zlib/tests/gzencode_variation1.phpt create mode 100644 ext/zlib/tests/gzencode_variation2.phpt create mode 100644 ext/zlib/tests/gzeof_basic.phpt create mode 100644 ext/zlib/tests/gzeof_error.phpt create mode 100644 ext/zlib/tests/gzeof_variation1.phpt create mode 100644 ext/zlib/tests/gzfile_basic.phpt create mode 100644 ext/zlib/tests/gzfile_basic2.phpt create mode 100644 ext/zlib/tests/gzfile_error.phpt create mode 100644 ext/zlib/tests/gzfile_variation1.phpt create mode 100644 ext/zlib/tests/gzfile_variation10.phpt create mode 100644 ext/zlib/tests/gzfile_variation11.phpt create mode 100644 ext/zlib/tests/gzfile_variation12.phpt create mode 100644 ext/zlib/tests/gzfile_variation13.phpt create mode 100644 ext/zlib/tests/gzfile_variation14.phpt create mode 100644 ext/zlib/tests/gzfile_variation15.phpt create mode 100644 ext/zlib/tests/gzfile_variation2.phpt create mode 100644 ext/zlib/tests/gzfile_variation3.phpt create mode 100644 ext/zlib/tests/gzfile_variation4.phpt create mode 100644 ext/zlib/tests/gzfile_variation5.phpt create mode 100644 ext/zlib/tests/gzfile_variation6.phpt create mode 100644 ext/zlib/tests/gzfile_variation7.phpt create mode 100644 ext/zlib/tests/gzfile_variation8.phpt create mode 100644 ext/zlib/tests/gzfile_variation9.phpt create mode 100644 ext/zlib/tests/gzgetc_basic.phpt create mode 100644 ext/zlib/tests/gzgetc_error.phpt create mode 100644 ext/zlib/tests/gzgets_basic.phpt create mode 100644 ext/zlib/tests/gzgets_error.phpt create mode 100644 ext/zlib/tests/gzinflate_error1.phpt create mode 100644 ext/zlib/tests/gzopen_basic.phpt create mode 100644 ext/zlib/tests/gzopen_basic2.phpt create mode 100644 ext/zlib/tests/gzopen_error.phpt create mode 100644 ext/zlib/tests/gzopen_include_path.inc create mode 100644 ext/zlib/tests/gzopen_variation1.phpt create mode 100644 ext/zlib/tests/gzopen_variation2.phpt create mode 100644 ext/zlib/tests/gzopen_variation3.phpt create mode 100644 ext/zlib/tests/gzopen_variation4.phpt create mode 100644 ext/zlib/tests/gzopen_variation5.phpt create mode 100644 ext/zlib/tests/gzopen_variation6.phpt create mode 100644 ext/zlib/tests/gzopen_variation7.phpt create mode 100644 ext/zlib/tests/gzopen_variation8.phpt create mode 100644 ext/zlib/tests/gzopen_variation9.phpt create mode 100644 ext/zlib/tests/gzpassthru_basic.phpt create mode 100644 ext/zlib/tests/gzpassthru_error.phpt create mode 100644 ext/zlib/tests/gzputs_basic.phpt create mode 100644 ext/zlib/tests/gzread_basic.phpt create mode 100644 ext/zlib/tests/gzread_error.phpt create mode 100644 ext/zlib/tests/gzread_error2.phpt create mode 100644 ext/zlib/tests/gzread_variation1.phpt create mode 100644 ext/zlib/tests/gzrewind_basic.phpt create mode 100644 ext/zlib/tests/gzrewind_basic2.phpt create mode 100644 ext/zlib/tests/gzrewind_error.phpt create mode 100644 ext/zlib/tests/gzrewind_variation1.phpt create mode 100644 ext/zlib/tests/gzseek_basic.phpt create mode 100644 ext/zlib/tests/gzseek_basic2.phpt create mode 100644 ext/zlib/tests/gzseek_error.phpt create mode 100644 ext/zlib/tests/gzseek_variation1.phpt create mode 100644 ext/zlib/tests/gzseek_variation2.phpt create mode 100644 ext/zlib/tests/gzseek_variation3.phpt create mode 100644 ext/zlib/tests/gzseek_variation4.phpt create mode 100644 ext/zlib/tests/gzseek_variation5.phpt create mode 100644 ext/zlib/tests/gzseek_variation6.phpt create mode 100644 ext/zlib/tests/gzseek_variation7.phpt create mode 100644 ext/zlib/tests/gztell_basic.phpt create mode 100644 ext/zlib/tests/gztell_basic2.phpt create mode 100644 ext/zlib/tests/gztell_error.phpt create mode 100644 ext/zlib/tests/gzuncompress_basic1.phpt create mode 100644 ext/zlib/tests/gzuncompress_error1.phpt create mode 100644 ext/zlib/tests/gzwrite_basic.phpt create mode 100644 ext/zlib/tests/gzwrite_error.phpt create mode 100644 ext/zlib/tests/gzwrite_error2.phpt create mode 100644 ext/zlib/tests/gzwrite_variation1.phpt create mode 100644 ext/zlib/tests/readgzfile_basic.phpt create mode 100644 ext/zlib/tests/readgzfile_basic2.phpt create mode 100644 ext/zlib/tests/readgzfile_error.phpt create mode 100644 ext/zlib/tests/readgzfile_variation1.phpt create mode 100644 ext/zlib/tests/readgzfile_variation10.phpt create mode 100644 ext/zlib/tests/readgzfile_variation11.phpt create mode 100644 ext/zlib/tests/readgzfile_variation12.phpt create mode 100644 ext/zlib/tests/readgzfile_variation13.phpt create mode 100644 ext/zlib/tests/readgzfile_variation14.phpt create mode 100644 ext/zlib/tests/readgzfile_variation15.phpt create mode 100644 ext/zlib/tests/readgzfile_variation2.phpt create mode 100644 ext/zlib/tests/readgzfile_variation3.phpt create mode 100644 ext/zlib/tests/readgzfile_variation4.phpt create mode 100644 ext/zlib/tests/readgzfile_variation5.phpt create mode 100644 ext/zlib/tests/readgzfile_variation6.phpt create mode 100644 ext/zlib/tests/readgzfile_variation7.phpt create mode 100644 ext/zlib/tests/readgzfile_variation8.phpt create mode 100644 ext/zlib/tests/readgzfile_variation9.phpt create mode 100644 ext/zlib/tests/reading_include_path.inc create mode 100644 ext/zlib/tests/zlib_scheme_copy_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_copy_variation1.phpt create mode 100644 ext/zlib/tests/zlib_scheme_copy_variation2.phpt create mode 100644 ext/zlib/tests/zlib_scheme_dir_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_file_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_file_get_contents_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_file_put_contents_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_file_read_file_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_fopen_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_fopen_variation1.phpt create mode 100644 ext/zlib/tests/zlib_scheme_rename_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_stat_basic.phpt create mode 100644 ext/zlib/tests/zlib_scheme_stat_basic2.phpt create mode 100644 ext/zlib/tests/zlib_scheme_unlink_basic.phpt create mode 100644 ext/zlib/tests/zlib_wrapper_fflush_basic.phpt create mode 100644 ext/zlib/tests/zlib_wrapper_flock_basic.phpt create mode 100644 ext/zlib/tests/zlib_wrapper_fstat_basic.phpt create mode 100644 ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt create mode 100644 ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt (limited to 'ext') diff --git a/ext/bcmath/bcmath.c b/ext/bcmath/bcmath.c index d99a16a33..4aac12c28 100644 --- a/ext/bcmath/bcmath.c +++ b/ext/bcmath/bcmath.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bcmath.c,v 1.62.2.2.2.9 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: bcmath.c,v 1.62.2.2.2.10 2008/12/31 11:17:35 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/bcmath/php_bcmath.h b/ext/bcmath/php_bcmath.h index 097dc2812..78a9dc53c 100644 --- a/ext/bcmath/php_bcmath.h +++ b/ext/bcmath/php_bcmath.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_bcmath.h,v 1.20.2.1.2.3 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: php_bcmath.h,v 1.20.2.1.2.4 2008/12/31 11:17:35 sebastian Exp $ */ #ifndef PHP_BCMATH_H #define PHP_BCMATH_H diff --git a/ext/bz2/bz2.c b/ext/bz2/bz2.c index 74edd2d7a..ae71a9cf0 100644 --- a/ext/bz2/bz2.c +++ b/ext/bz2/bz2.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bz2.c,v 1.14.2.3.2.13 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: bz2.c,v 1.14.2.3.2.16 2008/12/31 11:17:35 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -248,6 +248,7 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, bz_file = BZ2_bzdopen(fd, mode); } } + /* remove the file created by php_stream_open_wrapper(), it is not needed since BZ2 functions * failed. */ diff --git a/ext/bz2/bz2_filter.c b/ext/bz2/bz2_filter.c index 63ca109f2..ba4278ac7 100644 --- a/ext/bz2/bz2_filter.c +++ b/ext/bz2/bz2_filter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bz2_filter.c,v 1.3.2.2.2.9 2008/01/12 22:04:03 cellog Exp $ */ +/* $Id: bz2_filter.c,v 1.3.2.2.2.12 2009/02/09 03:44:59 cellog Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -34,6 +34,7 @@ typedef struct _php_bz2_filter_data { size_t inbuf_len; char *outbuf; size_t outbuf_len; + zend_bool finished; } php_bz2_filter_data; /* }}} */ @@ -82,6 +83,11 @@ static php_stream_filter_status_t php_bz2_decompress_filter( bucket = php_stream_bucket_make_writeable(buckets_in->head TSRMLS_CC); while (bin < bucket->buflen) { + if (data->finished) { + consumed += bucket->buflen; + break; + } + desired = bucket->buflen - bin; if (desired > data->inbuf_len) { desired = data->inbuf_len; @@ -90,7 +96,11 @@ static php_stream_filter_status_t php_bz2_decompress_filter( data->strm.avail_in = desired; status = BZ2_bzDecompress(&(data->strm)); - if (status != BZ_OK && status != BZ_STREAM_END) { + + if (status == BZ_STREAM_END) { + BZ2_bzDecompressEnd(&(data->strm)); + data->finished = '\1'; + } else if (status != BZ_OK) { /* Something bad happened */ php_stream_bucket_delref(bucket TSRMLS_CC); return PSFS_ERR_FATAL; @@ -115,10 +125,11 @@ static php_stream_filter_status_t php_bz2_decompress_filter( return PSFS_PASS_ON; } } + php_stream_bucket_delref(bucket TSRMLS_CC); } - if (flags & PSFS_FLAG_FLUSH_CLOSE) { + if (!data->finished && (flags & PSFS_FLAG_FLUSH_CLOSE)) { /* Spit it out! */ status = BZ_OK; while (status == BZ_OK) { @@ -148,7 +159,9 @@ static void php_bz2_decompress_dtor(php_stream_filter *thisfilter TSRMLS_DC) { if (thisfilter && thisfilter->abstract) { php_bz2_filter_data *data = thisfilter->abstract; - BZ2_bzDecompressEnd(&(data->strm)); + if (!data->finished) { + BZ2_bzDecompressEnd(&(data->strm)); + } pefree(data->inbuf, data->persistent); pefree(data->outbuf, data->persistent); pefree(data, data->persistent); @@ -319,14 +332,18 @@ static php_stream_filter *php_bz2_filter_create(const char *filtername, zval *fi } if (tmpzval) { - SEPARATE_ZVAL(tmpzval); - convert_to_boolean_ex(tmpzval); - smallFootprint = Z_LVAL_PP(tmpzval); - zval_ptr_dtor(tmpzval); + zval tmp, *tmp2; + + tmp = **tmpzval; + zval_copy_ctor(&tmp); + tmp2 = &tmp; + convert_to_boolean_ex(&tmp2); + smallFootprint = Z_LVAL(tmp); } } status = BZ2_bzDecompressInit(&(data->strm), 0, smallFootprint); + data->finished = '\0'; fops = &php_bz2_decompress_ops; } else if (strcasecmp(filtername, "bzip2.compress") == 0) { int blockSize100k = PHP_BZ2_FILTER_DEFAULT_BLOCKSIZE; @@ -338,26 +355,31 @@ static php_stream_filter *php_bz2_filter_create(const char *filtername, zval *fi if (Z_TYPE_P(filterparams) == IS_ARRAY || Z_TYPE_P(filterparams) == IS_OBJECT) { if (zend_hash_find(HASH_OF(filterparams), "blocks", sizeof("blocks"), (void**) &tmpzval) == SUCCESS) { /* How much memory to allocate (1 - 9) x 100kb */ - SEPARATE_ZVAL(tmpzval); - convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) < 1 || Z_LVAL_PP(tmpzval) > 9) { + zval tmp; + + tmp = **tmpzval; + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + if (Z_LVAL(tmp) < 1 || Z_LVAL(tmp) > 9) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter given for number of blocks to allocate. (%ld)", Z_LVAL_PP(tmpzval)); } else { - blockSize100k = Z_LVAL_PP(tmpzval); + blockSize100k = Z_LVAL(tmp); } - zval_ptr_dtor(tmpzval); } if (zend_hash_find(HASH_OF(filterparams), "work", sizeof("work"), (void**) &tmpzval) == SUCCESS) { /* Work Factor (0 - 250) */ - SEPARATE_ZVAL(tmpzval); - convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) < 0 || Z_LVAL_PP(tmpzval) > 250) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter given for work factor. (%ld)", Z_LVAL_PP(tmpzval)); + zval tmp; + + tmp = **tmpzval; + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + + if (Z_LVAL(tmp) < 0 || Z_LVAL(tmp) > 250) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter given for work factor. (%ld)", Z_LVAL(tmp)); } else { - workFactor = Z_LVAL_PP(tmpzval); + workFactor = Z_LVAL(tmp); } - zval_ptr_dtor(tmpzval); } } } diff --git a/ext/bz2/php_bz2.h b/ext/bz2/php_bz2.h index fe3132ef4..93e978af6 100644 --- a/ext/bz2/php_bz2.h +++ b/ext/bz2/php_bz2.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_bz2.h,v 1.7.2.1.2.5 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: php_bz2.h,v 1.7.2.1.2.6 2008/12/31 11:17:35 sebastian Exp $ */ #ifndef PHP_BZ2_H #define PHP_BZ2_H diff --git a/ext/calendar/cal_unix.c b/ext/calendar/cal_unix.c index be0e0c5a2..d1d61f4bb 100644 --- a/ext/calendar/cal_unix.c +++ b/ext/calendar/cal_unix.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/calendar/calendar.c b/ext/calendar/calendar.c index b20edb5e0..7cd0ca67d 100644 --- a/ext/calendar/calendar.c +++ b/ext/calendar/calendar.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ | Wez Furlong | +----------------------------------------------------------------------+ */ -/* $Id: calendar.c,v 1.46.2.2.2.5 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: calendar.c,v 1.46.2.2.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/calendar/easter.c b/ext/calendar/easter.c index bd787de42..96509789d 100644 --- a/ext/calendar/easter.c +++ b/ext/calendar/easter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index 473c34a37..505028686 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_com.c,v 1.16.2.2.2.6 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_com.c,v 1.16.2.2.2.7 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c index 68f0b419e..2ebbc1b71 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_dotnet.c,v 1.14.2.1.2.5 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_dotnet.c,v 1.14.2.1.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c index 739943fca..5155d35db 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_extension.c,v 1.17.2.2.2.7 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_extension.c,v 1.17.2.2.2.8 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c index 388ec7847..af5b6b783 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_handlers.c,v 1.30.2.5.2.7 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_handlers.c,v 1.30.2.5.2.8 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_iterator.c b/ext/com_dotnet/com_iterator.c index 9f540cd6a..32c92ad75 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_iterator.c,v 1.9.2.2.2.3 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_iterator.c,v 1.9.2.2.2.4 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_misc.c b/ext/com_dotnet/com_misc.c index 10ac789e7..e24f43782 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_misc.c,v 1.8.2.2.2.4 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_misc.c,v 1.8.2.2.2.5 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_olechar.c b/ext/com_dotnet/com_olechar.c index e746fb1a6..bb48db805 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_olechar.c,v 1.5.2.1.2.4 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_olechar.c,v 1.5.2.1.2.5 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c index 127d86b13..dcc9e2fd8 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_persist.c,v 1.5.2.3.2.3 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_persist.c,v 1.5.2.3.2.4 2008/12/31 11:17:36 sebastian Exp $ */ /* 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 ec6945418..d0060ee08 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_saproxy.c,v 1.15.2.2.2.4 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_saproxy.c,v 1.15.2.2.2.5 2008/12/31 11:17:36 sebastian Exp $ */ /* 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 be3e8d159..febc77111 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_typeinfo.c,v 1.7.2.1.2.4 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_typeinfo.c,v 1.7.2.1.2.5 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c index 4b2b83cf4..47275c8dc 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_variant.c,v 1.11.2.2.2.7 2007/12/31 07:20:04 sebastian Exp $ */ +/* $Id: com_variant.c,v 1.11.2.2.2.8 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c index 193c5a14f..3093275e5 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_wrapper.c,v 1.9.2.1.2.6 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: com_wrapper.c,v 1.9.2.1.2.7 2008/12/31 11:17:36 sebastian Exp $ */ /* 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 3ae43efc1..92fb48f80 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_com_dotnet.h,v 1.5.2.1.2.3 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: php_com_dotnet.h,v 1.5.2.1.2.4 2008/12/31 11:17:36 sebastian Exp $ */ #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 00408f4d1..130ef9c27 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_com_dotnet_internal.h,v 1.14.2.3.2.5 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: php_com_dotnet_internal.h,v 1.14.2.3.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #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 823136397..e947b4cfa 100644 --- a/ext/ctype/ctype.c +++ b/ext/ctype/ctype.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/ctype/php_ctype.h b/ext/ctype/php_ctype.h index c13c11935..25cc2a559 100644 --- a/ext/ctype/php_ctype.h +++ b/ext/ctype/php_ctype.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/curl/config.m4 b/ext/curl/config.m4 index c7a0f77b7..d53422a5d 100644 --- a/ext/curl/config.m4 +++ b/ext/curl/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.28.2.3.2.7 2007/05/25 12:47:55 mike Exp $ +dnl $Id: config.m4,v 1.28.2.3.2.8 2008/11/07 21:18:45 felipe Exp $ dnl PHP_ARG_WITH(curl, for cURL support, @@ -75,7 +75,7 @@ if test "$PHP_CURL" != "no"; then } ],[ AC_MSG_RESULT([yes]) - AC_CHECK_HEADER([openssl/crypto.h], [ + AC_CHECK_HEADERS([openssl/crypto.h], [ AC_DEFINE([HAVE_CURL_OPENSSL], [1], [Have cURL with OpenSSL support]) ]) ], [ diff --git a/ext/curl/interface.c b/ext/curl/interface.c index ff702f20b..9c72e3927 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interface.c,v 1.62.2.14.2.34 2008/01/06 17:12:29 iliaa Exp $ */ +/* $Id: interface.c,v 1.62.2.14.2.41 2009/01/26 15:25:23 iliaa Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -786,7 +786,7 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx) { php_curl *ch = (php_curl *) ctx; php_curl_read *t = ch->handlers->read; - int length = -1; + int length = 0; switch (t->method) { case PHP_CURL_DIRECT: @@ -833,7 +833,9 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx) ch->in_callback = 0; if (error == FAILURE) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot call the CURLOPT_READFUNCTION"); - length = -1; +#if LIBCURL_VERSION_NUM >= 0x070c01 /* 7.12.1 */ + length = CURL_READFUNC_ABORT; +#endif } else if (retval_ptr) { if (Z_TYPE_P(retval_ptr) == IS_STRING) { length = MIN(size * nmemb, Z_STRLEN_P(retval_ptr)); @@ -994,6 +996,7 @@ static size_t curl_passwd(void *ctx, char *prompt, char *buf, int buflen) /* }}} */ #endif +#if LIBCURL_VERSION_NUM < 0x071101 /* {{{ curl_free_string */ static void curl_free_string(void **string) @@ -1001,6 +1004,7 @@ static void curl_free_string(void **string) efree(*string); } /* }}} */ +#endif /* {{{ curl_free_post */ @@ -1075,7 +1079,9 @@ static void alloc_curl_handle(php_curl **ch) memset(&(*ch)->err, 0, sizeof((*ch)->err)); +#if LIBCURL_VERSION_NUM < 0x071101 zend_llist_init(&(*ch)->to_free.str, sizeof(char *), (llist_dtor_func_t) curl_free_string, 0); +#endif 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); } @@ -1134,11 +1140,15 @@ PHP_FUNCTION(curl_init) #endif if (argc > 0) { +#if LIBCURL_VERSION_NUM >= 0x071100 + curl_easy_setopt(ch->cp, CURLOPT_URL, Z_STRVAL_PP(url)); +#else char *urlcopy; urlcopy = estrndup(Z_STRVAL_PP(url), Z_STRLEN_PP(url)); curl_easy_setopt(ch->cp, CURLOPT_URL, urlcopy); zend_llist_add_element(&ch->to_free.str, &urlcopy); +#endif } ZEND_REGISTER_RESOURCE(return_value, ch, le_curl); @@ -1204,9 +1214,11 @@ PHP_FUNCTION(curl_copy_handle) curl_easy_setopt(dupch->cp, CURLOPT_INFILE, (void *) dupch); curl_easy_setopt(dupch->cp, CURLOPT_WRITEHEADER, (void *) dupch); +#if LIBCURL_VERSION_NUM < 0x071101 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; +#endif zend_llist_copy(&dupch->to_free.slist, &ch->to_free.slist); zend_llist_copy(&dupch->to_free.post, &ch->to_free.post); @@ -1329,7 +1341,9 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu case CURLOPT_SSLENGINE_DEFAULT: case CURLOPT_SSLCERTTYPE: case CURLOPT_ENCODING: { +#if LIBCURL_VERSION_NUM < 0x071100 char *copystr = NULL; +#endif convert_to_string_ex(zvalue); @@ -1337,9 +1351,14 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu PHP_CURL_CHECK_OPEN_BASEDIR(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue), 1); } +#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. */ + error = curl_easy_setopt(ch->cp, option, Z_STRVAL_PP(zvalue)); +#else 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, ©str); +#endif break; } @@ -1419,7 +1438,7 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu case CURLOPT_READFUNCTION: if (ch->handlers->read->func_name) { zval_ptr_dtor(&ch->handlers->read->func_name); - ch->handlers->write->fci_cache = empty_fcall_info_cache; + ch->handlers->read->fci_cache = empty_fcall_info_cache; } zval_add_ref(zvalue); ch->handlers->read->func_name = *zvalue; @@ -1428,7 +1447,7 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu case CURLOPT_HEADERFUNCTION: if (ch->handlers->write_header->func_name) { zval_ptr_dtor(&ch->handlers->write_header->func_name); - ch->handlers->write->fci_cache = empty_fcall_info_cache; + ch->handlers->write_header->fci_cache = empty_fcall_info_cache; } zval_add_ref(zvalue); ch->handlers->write_header->func_name = *zvalue; @@ -1479,17 +1498,36 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu * must be explicitly cast to long in curl_formadd * use since curl needs a long not an int. */ if (*postval == '@') { + char *type; ++postval; + + if ((type = php_memnstr(postval, ";type=", sizeof(";type=") - 1, postval + strlen(postval)))) { + *type = '\0'; + } /* safe_mode / open_basedir check */ if (php_check_open_basedir(postval TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(postval, "rb+", CHECKUID_CHECK_MODE_PARAM))) { + if (type) { + *type = ';'; + } RETVAL_FALSE; return 1; } - error = curl_formadd(&first, &last, + if (type) { + error = curl_formadd(&first, &last, CURLFORM_COPYNAME, string_key, CURLFORM_NAMELENGTH, (long)string_key_len - 1, - CURLFORM_FILE, postval, + CURLFORM_FILE, postval, + CURLFORM_CONTENTTYPE, type + sizeof(";type=") - 1, CURLFORM_END); + *type = ';'; + } else { + error = curl_formadd(&first, &last, + CURLFORM_COPYNAME, string_key, + CURLFORM_NAMELENGTH, (long)string_key_len - 1, + CURLFORM_FILE, postval, + CURLFORM_END); + + } } else { error = curl_formadd(&first, &last, CURLFORM_COPYNAME, string_key, @@ -1510,6 +1548,11 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu error = curl_easy_setopt(ch->cp, CURLOPT_HTTPPOST, first); } else { +#if LIBCURL_VERSION_NUM >= 0x071101 + /* with curl 7.17.0 and later, we can use COPYPOSTFIELDS, but we have to provide size before */ + error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDSIZE, Z_STRLEN_PP(zvalue)); + error = curl_easy_setopt(ch->cp, CURLOPT_COPYPOSTFIELDS, Z_STRVAL_PP(zvalue)); +#else char *post = NULL; convert_to_string_ex(zvalue); @@ -1518,6 +1561,7 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDS, post); error = curl_easy_setopt(ch->cp, CURLOPT_POSTFIELDSIZE, Z_STRLEN_PP(zvalue)); +#endif } break; case CURLOPT_HTTPHEADER: @@ -1539,20 +1583,15 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu zend_hash_get_current_data(ph, (void **) ¤t) == SUCCESS; zend_hash_move_forward(ph) ) { - char *indiv = NULL; - SEPARATE_ZVAL(current); convert_to_string_ex(current); - indiv = estrndup(Z_STRVAL_PP(current), Z_STRLEN_PP(current) + 1); - slist = curl_slist_append(slist, indiv); + slist = curl_slist_append(slist, Z_STRVAL_PP(current)); if (!slist) { - efree(indiv); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not build curl_slist"); RETVAL_FALSE; return 1; } - zend_llist_add_element(&ch->to_free.str, &indiv); } zend_llist_add_element(&ch->to_free.slist, &slist); @@ -1567,7 +1606,9 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu case CURLOPT_SSLCERT: case CURLOPT_RANDOM_FILE: case CURLOPT_COOKIEFILE: { +#if LIBCURL_VERSION_NUM < 0x071100 char *copystr = NULL; +#endif convert_to_string_ex(zvalue); @@ -1576,11 +1617,14 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu return 1; } +#if LIBCURL_VERSION_NUM >= 0x071100 + error = curl_easy_setopt(ch->cp, option, Z_STRVAL_PP(zvalue)); +#else 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, ©str); - +#endif break; } case CURLINFO_HEADER_OUT: @@ -1748,6 +1792,11 @@ PHP_FUNCTION(curl_getinfo) if (curl_easy_getinfo(ch->cp, CURLINFO_CONTENT_TYPE, &s_code) == CURLE_OK) { if (s_code != NULL) { CAAS("content_type", s_code); + } else { + zval *retnull; + MAKE_STD_ZVAL(retnull); + ZVAL_NULL(retnull); + CAAZ("content_type", retnull); } } if (curl_easy_getinfo(ch->cp, CURLINFO_HTTP_CODE, &l_code) == CURLE_OK) { @@ -1941,7 +1990,9 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) #endif curl_easy_cleanup(ch->cp); +#if LIBCURL_VERSION_NUM < 0x071101 zend_llist_clean(&ch->to_free.str); +#endif zend_llist_clean(&ch->to_free.slist); zend_llist_clean(&ch->to_free.post); diff --git a/ext/curl/multi.c b/ext/curl/multi.c index cefc5f441..2e6580ace 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: multi.c,v 1.19.2.3.2.9 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: multi.c,v 1.19.2.3.2.10 2008/12/31 11:17:36 sebastian Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h index b17df0a77..f38e20026 100644 --- a/ext/curl/php_curl.h +++ b/ext/curl/php_curl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_curl.h,v 1.44.2.2.2.3 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: php_curl.h,v 1.44.2.2.2.5 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef _PHP_CURL_H #define _PHP_CURL_H @@ -114,7 +114,9 @@ struct _php_curl_send_headers { }; struct _php_curl_free { +#if LIBCURL_VERSION_NUM < 0x071100 zend_llist str; +#endif zend_llist post; zend_llist slist; }; diff --git a/ext/curl/streams.c b/ext/curl/streams.c index 2d73f25c8..c2a9a5d57 100644 --- a/ext/curl/streams.c +++ b/ext/curl/streams.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.14.2.2.2.12 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: streams.c,v 1.14.2.2.2.13 2008/12/31 11:17:36 sebastian Exp $ */ /* This file implements cURL based wrappers. * NOTE: If you are implementing your own streams that are intended to diff --git a/ext/curl/tests/bug45161.phpt b/ext/curl/tests/bug45161.phpt new file mode 100644 index 000000000..eab1fd46e --- /dev/null +++ b/ext/curl/tests/bug45161.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #45161 (Reusing a curl handle leaks memory) +--FILE-- + +--EXPECT-- +PASS diff --git a/ext/curl/tests/bug46739.phpt b/ext/curl/tests/bug46739.phpt new file mode 100644 index 000000000..06a84ea8e --- /dev/null +++ b/ext/curl/tests/bug46739.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #46739 (array returned by curl_getinfo should contain content_type key) +--FILE-- + +--EXPECT-- +set diff --git a/ext/date/lib/astro.c b/ext/date/lib/astro.c index 87e91c448..9d092bfd9 100644 --- a/ext/date/lib/astro.c +++ b/ext/date/lib/astro.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: astro.c,v 1.1.2.4.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: astro.c,v 1.1.2.4.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #include #include diff --git a/ext/date/lib/dow.c b/ext/date/lib/dow.c index 4a5fa32d5..fa7eb70bb 100644 --- a/ext/date/lib/dow.c +++ b/ext/date/lib/dow.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dow.c,v 1.8.2.3.2.5 2008/02/22 17:49:30 derick Exp $ */ +/* $Id: dow.c,v 1.8.2.3.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #include "timelib.h" diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index 3c25760d6..98d7de49f 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Mon Feb 25 19:27:05 2008 */ +/* Generated by re2c 0.13.5 on Thu Dec 18 15:52:22 2008 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_date.c,v 1.29.2.30.2.16 2008/02/25 18:28:03 derick Exp $ */ +/* $Id: parse_date.c,v 1.29.2.30.2.18 2008/12/18 14:56:46 derick Exp $ */ #include "timelib.h" @@ -733,7 +733,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, "/")) { + 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; @@ -773,7 +773,10 @@ std: s->len = 0; + { + YYCTYPE yych; + unsigned int yyaccept = 0; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, @@ -809,112 +812,108 @@ std: 0, 0, 0, 0, 0, 0, 0, 0, }; - { - YYCTYPE yych; - unsigned int yyaccept = 0; - - YYDEBUG(0, *YYCURSOR); - if((YYLIMIT - YYCURSOR) < 29) YYFILL(29); - yych = *YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case 0x00: - case 0x0A: goto yy48; - case 0x09: - case ' ': goto yy45; - case '(': goto yy42; - case '+': - case '-': goto yy18; - case ',': - case '.': goto yy47; - case '0': goto yy13; - case '1': goto yy14; - case '2': goto yy15; - case '3': goto yy16; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy17; - case '@': goto yy11; - case 'A': goto yy26; - case 'B': - case 'C': - case 'G': - case 'H': - case 'K': - case 'Q': - case 'R': - case 'U': - case 'Z': goto yy43; - case 'D': goto yy32; - case 'E': goto yy36; - case 'F': goto yy24; - case 'I': goto yy19; - case 'J': goto yy22; - case 'L': goto yy38; - case 'M': goto yy7; - case 'N': goto yy5; - case 'O': goto yy30; - case 'P': goto yy40; - case 'S': goto yy28; - case 'T': goto yy9; - case 'V': goto yy20; - case 'W': goto yy34; - case 'X': goto yy21; - case 'Y': goto yy2; - case 'a': goto yy27; - case 'b': - case 'c': - case 'g': - case 'h': - case 'i': - case 'k': - case 'q': - case 'r': - case 'u': - case 'v': - case 'x': - case 'z': goto yy44; - case 'd': goto yy33; - case 'e': goto yy37; - case 'f': goto yy25; - case 'j': goto yy23; - case 'l': goto yy39; - case 'm': goto yy8; - case 'n': goto yy6; - case 'o': goto yy31; - case 'p': goto yy41; - case 's': goto yy29; - case 't': goto yy10; - case 'w': goto yy35; - case 'y': goto yy4; - default: goto yy50; - } + YYDEBUG(0, *YYCURSOR); + if ((YYLIMIT - YYCURSOR) < 29) YYFILL(29); + yych = *YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case 0x00: + case '\n': goto yy48; + case '\t': + case ' ': goto yy45; + case '(': goto yy42; + case '+': + case '-': goto yy18; + case ',': + case '.': goto yy47; + case '0': goto yy13; + case '1': goto yy14; + case '2': goto yy15; + case '3': goto yy16; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy17; + case '@': goto yy11; + case 'A': goto yy26; + case 'B': + case 'C': + case 'G': + case 'H': + case 'K': + case 'Q': + case 'R': + case 'U': + case 'Z': goto yy43; + case 'D': goto yy32; + case 'E': goto yy36; + case 'F': goto yy24; + case 'I': goto yy19; + case 'J': goto yy22; + case 'L': goto yy38; + case 'M': goto yy7; + case 'N': goto yy5; + case 'O': goto yy30; + case 'P': goto yy40; + case 'S': goto yy28; + case 'T': goto yy9; + case 'V': goto yy20; + case 'W': goto yy34; + case 'X': goto yy21; + case 'Y': goto yy2; + case 'a': goto yy27; + case 'b': + case 'c': + case 'g': + case 'h': + case 'i': + case 'k': + case 'q': + case 'r': + case 'u': + case 'v': + case 'x': + case 'z': goto yy44; + case 'd': goto yy33; + case 'e': goto yy37; + case 'f': goto yy25; + case 'j': goto yy23; + case 'l': goto yy39; + case 'm': goto yy8; + case 'n': goto yy6; + case 'o': goto yy31; + case 'p': goto yy41; + case 's': goto yy29; + case 't': goto yy10; + case 'w': goto yy35; + case 'y': goto yy4; + default: goto yy50; + } yy2: - YYDEBUG(2, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'E') { - if(yych <= ')') { - if(yych >= ')') goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy1410; - } + YYDEBUG(2, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'E') { + if (yych <= ')') { + if (yych >= ')') goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych >= 'a') goto yy142; - } else { - if(yych <= 'e') goto yy1419; - if(yych <= 'z') goto yy142; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy1415; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych >= 'a') goto yy142; + } else { + if (yych <= 'e') goto yy1424; + if (yych <= 'z') goto yy142; } + } yy3: - YYDEBUG(3, *YYCURSOR); - { + YYDEBUG(3, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("tzcorrection | tz"); TIMELIB_INIT; @@ -927,1718 +926,1718 @@ yy3: return TIMELIB_TIMEZONE; } yy4: - YYDEBUG(4, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy1410; - } + YYDEBUG(4, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy1415; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; + if (yych <= 'e') goto yy1415; + if (yych <= 'z') goto yy137; + goto yy3; + } + } +yy5: + YYDEBUG(5, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'D') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'H') { + if (yych <= 'E') goto yy1386; goto yy137; } else { - if(yych <= 'e') goto yy1410; - if(yych <= 'z') goto yy137; - goto yy3; + if (yych <= 'I') goto yy1387; + if (yych <= 'N') goto yy137; + goto yy1385; } } -yy5: - YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'D') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy137; + } else { + if (yych <= 'h') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy1381; - goto yy137; - } else { - if(yych <= 'I') goto yy1382; - if(yych <= 'N') goto yy137; - goto yy1380; - } + if (yych == 'e') goto yy1402; + goto yy142; } } else { - if(yych <= 'h') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'e') goto yy1397; - goto yy142; - } + if (yych <= 'n') { + if (yych <= 'i') goto yy1403; + goto yy142; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1398; - goto yy142; - } else { - if(yych <= 'o') goto yy1396; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'o') goto yy1401; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy6: - YYDEBUG(6, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'D') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(6, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'D') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'H') { + if (yych <= 'E') goto yy1386; goto yy137; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy1381; - goto yy137; - } else { - if(yych <= 'I') goto yy1382; - if(yych <= 'N') goto yy137; - goto yy1380; - } + if (yych <= 'I') goto yy1387; + if (yych <= 'N') goto yy137; + goto yy1385; + } + } + } else { + if (yych <= 'h') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'e') goto yy1386; + goto yy137; } } else { - if(yych <= 'h') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'e') goto yy1381; - goto yy137; - } + if (yych <= 'n') { + if (yych <= 'i') goto yy1387; + goto yy137; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1382; - goto yy137; - } else { - if(yych <= 'o') goto yy1380; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'o') goto yy1385; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy7: - YYDEBUG(7, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1350; - } else { - if(yych == 'I') goto yy1351; - if(yych <= 'N') goto yy137; - goto yy1352; - } - } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1365; + YYDEBUG(7, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1355; + } else { + if (yych == 'I') goto yy1356; + if (yych <= 'N') goto yy137; + goto yy1357; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1370; + goto yy142; + } else { + if (yych <= 'n') { + if (yych <= 'i') goto yy1371; goto yy142; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1366; - goto yy142; - } else { - if(yych <= 'o') goto yy1367; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'o') goto yy1372; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1350; - } else { - if(yych == 'I') goto yy1351; - if(yych <= 'N') goto yy137; - goto yy1352; - } - } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1350; + YYDEBUG(8, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1355; + } else { + if (yych == 'I') goto yy1356; + if (yych <= 'N') goto yy137; + goto yy1357; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1355; + goto yy137; + } else { + if (yych <= 'n') { + if (yych <= 'i') goto yy1356; goto yy137; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1351; - goto yy137; - } else { - if(yych <= 'o') goto yy1352; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'o') goto yy1357; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy9: - YYDEBUG(9, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case ')': goto yy136; - case '0': - case '1': goto yy1282; - case '2': goto yy1283; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1284; - 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 yy137; - case 'E': goto yy1277; - case 'H': goto yy1278; - case 'O': goto yy1279; - case 'U': goto yy1280; - case 'W': goto yy1281; - 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 yy142; - case 'e': goto yy1319; - case 'h': goto yy1320; - case 'o': goto yy1321; - case 'u': goto yy1322; - case 'w': goto yy1323; - default: goto yy3; - } + YYDEBUG(9, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case ')': goto yy136; + case '0': + case '1': goto yy1287; + case '2': goto yy1288; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1289; + 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 yy137; + case 'E': goto yy1282; + case 'H': goto yy1283; + case 'O': goto yy1284; + case 'U': goto yy1285; + case 'W': goto yy1286; + 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 yy142; + case 'e': goto yy1324; + case 'h': goto yy1325; + case 'o': goto yy1326; + case 'u': goto yy1327; + case 'w': goto yy1328; + default: goto yy3; + } yy10: - YYDEBUG(10, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case ')': goto yy136; - case '0': - case '1': goto yy1282; - case '2': goto yy1283; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1284; - 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 yy137; - case 'E': - case 'e': goto yy1277; - case 'H': - case 'h': goto yy1278; - case 'O': - case 'o': goto yy1279; - case 'U': - case 'u': goto yy1280; - case 'W': - case 'w': goto yy1281; - default: goto yy3; - } + YYDEBUG(10, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case ')': goto yy136; + case '0': + case '1': goto yy1287; + case '2': goto yy1288; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1289; + 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 yy137; + case 'E': + case 'e': goto yy1282; + case 'H': + case 'h': goto yy1283; + case 'O': + case 'o': goto yy1284; + case 'U': + case 'u': goto yy1285; + case 'W': + case 'w': goto yy1286; + default: goto yy3; + } yy11: - YYDEBUG(11, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1273; - if(yych <= '/') goto yy12; - if(yych <= '9') goto yy1274; + YYDEBUG(11, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1278; + if (yych <= '/') goto yy12; + if (yych <= '9') goto yy1279; yy12: - YYDEBUG(12, *YYCURSOR); - { + YYDEBUG(12, *YYCURSOR); + { add_error(s, "Unexpected character"); goto std; } yy13: - YYDEBUG(13, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy1227; - 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 yy1229; - case '-': goto yy678; - case '.': goto yy1239; - case '/': goto yy677; - case '0': goto yy1272; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1271; - case ':': goto yy1240; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(13, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy1232; + 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 yy1234; + case '-': goto yy676; + case '.': goto yy1244; + case '/': goto yy675; + case '0': goto yy1277; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1276; + case ':': goto yy1245; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy14: - YYDEBUG(14, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': goto yy1271; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1238; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(14, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': goto yy1276; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1243; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy15: - YYDEBUG(15, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': - case '3': goto yy1238; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1225; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(15, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': + case '3': goto yy1243; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1230; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy16: - YYDEBUG(16, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': goto yy1225; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy674; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(16, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': goto yy1230; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy672; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy17: - YYDEBUG(17, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy674; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(17, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy672; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy18: - YYDEBUG(18, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - YYDEBUG(-1, yych); - switch(yych) { - case '+': - case '-': goto yy643; - case '0': - case '1': goto yy640; - case '2': goto yy641; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy642; - default: goto yy12; - } + YYDEBUG(18, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + YYDEBUG(-1, yych); + switch (yych) { + case '+': + case '-': goto yy641; + case '0': + case '1': goto yy638; + case '2': goto yy639; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy640; + default: goto yy12; + } yy19: - YYDEBUG(19, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy3; - } + YYDEBUG(19, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy3; - } else { - if(yych == '/') goto yy3; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy3; } } else { - if(yych <= 'V') { - if(yych <= 'H') { - if(yych <= '@') goto yy3; - goto yy137; - } else { - if(yych <= 'I') goto yy639; - if(yych <= 'U') goto yy137; - goto yy638; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych == 'X') goto yy638; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych == '/') goto yy3; + goto yy305; } } -yy20: - YYDEBUG(20, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } else { + if (yych <= 'V') { + if (yych <= 'H') { + if (yych <= '@') goto yy3; + goto yy137; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= 'I') goto yy637; + if (yych <= 'U') goto yy137; + goto yy636; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych <= 'Z') { + if (yych == 'X') goto yy636; goto yy137; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy635; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy21: - YYDEBUG(21, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } +yy20: + YYDEBUG(20, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy633; + goto yy137; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } + } + } +yy21: + YYDEBUG(21, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy631; goto yy137; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy633; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(22, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy614; + if (yych <= 'T') goto yy137; + goto yy613; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy623; + } else { + if (yych == 'u') goto yy622; + if (yych <= 'z') goto yy142; + goto yy3; + } + } +yy23: + YYDEBUG(23, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy614; + if (yych <= 'T') goto yy137; + goto yy613; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy614; + } else { + if (yych == 'u') goto yy613; + if (yych <= 'z') goto yy137; + goto yy3; + } + } +yy24: + YYDEBUG(24, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy616; - if(yych <= 'T') goto yy137; - goto yy615; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy575; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy625; + if (yych <= 'N') { + if (yych == 'I') goto yy576; + goto yy137; } else { - if(yych == 'u') goto yy624; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= 'O') goto yy577; + if (yych <= 'Q') goto yy137; + goto yy578; } } -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'i') { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; } else { - if(yych <= 'A') goto yy616; - if(yych <= 'T') goto yy137; - goto yy615; + if (yych <= 'e') goto yy594; + if (yych <= 'h') goto yy142; + goto yy595; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy616; + if (yych <= 'q') { + if (yych == 'o') goto yy596; + goto yy142; } else { - if(yych == 'u') goto yy615; - if(yych <= 'z') goto yy137; + if (yych <= 'r') goto yy597; + if (yych <= 'z') goto yy142; goto yy3; } } -yy24: - YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy577; - } + } +yy25: + YYDEBUG(25, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'N') { - if(yych == 'I') goto yy578; - goto yy137; - } else { - if(yych <= 'O') goto yy579; - if(yych <= 'Q') goto yy137; - goto yy580; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy575; } } else { - if(yych <= 'i') { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy596; - if(yych <= 'h') goto yy142; - goto yy597; - } + if (yych <= 'N') { + if (yych == 'I') goto yy576; + goto yy137; } else { - if(yych <= 'q') { - if(yych == 'o') goto yy598; - goto yy142; - } else { - if(yych <= 'r') goto yy599; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'O') goto yy577; + if (yych <= 'Q') goto yy137; + goto yy578; } } -yy25: - YYDEBUG(25, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy577; - } + } else { + if (yych <= 'i') { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'N') { - if(yych == 'I') goto yy578; - goto yy137; - } else { - if(yych <= 'O') goto yy579; - if(yych <= 'Q') goto yy137; - goto yy580; - } + if (yych <= 'e') goto yy575; + if (yych <= 'h') goto yy137; + goto yy576; } } else { - if(yych <= 'i') { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy577; - if(yych <= 'h') goto yy137; - goto yy578; - } + if (yych <= 'q') { + if (yych == 'o') goto yy577; + goto yy137; } else { - if(yych <= 'q') { - if(yych == 'o') goto yy579; - goto yy137; - } else { - if(yych <= 'r') goto yy580; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'r') goto yy578; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy26: - YYDEBUG(26, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'F') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(26, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'F') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'O') { + if (yych <= 'G') goto yy554; goto yy137; } else { - if(yych <= 'O') { - if(yych <= 'G') goto yy556; - goto yy137; - } else { - if(yych <= 'P') goto yy555; - if(yych <= 'T') goto yy137; - goto yy554; - } + if (yych <= 'P') goto yy553; + if (yych <= 'T') goto yy137; + goto yy552; + } + } + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'g') goto yy566; + goto yy142; } } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'g') goto yy568; - goto yy142; - } + if (yych <= 't') { + if (yych <= 'p') goto yy565; + goto yy142; } else { - if(yych <= 't') { - if(yych <= 'p') goto yy567; - goto yy142; - } else { - if(yych <= 'u') goto yy566; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'u') goto yy564; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy27: - YYDEBUG(27, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'F') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(27, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'F') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'O') { + if (yych <= 'G') goto yy554; goto yy137; } else { - if(yych <= 'O') { - if(yych <= 'G') goto yy556; - goto yy137; - } else { - if(yych <= 'P') goto yy555; - if(yych <= 'T') goto yy137; - goto yy554; - } + if (yych <= 'P') goto yy553; + if (yych <= 'T') goto yy137; + goto yy552; + } + } + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'g') goto yy554; + goto yy137; } } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'g') goto yy556; - goto yy137; - } + if (yych <= 't') { + if (yych <= 'p') goto yy553; + goto yy137; } else { - if(yych <= 't') { - if(yych <= 'p') goto yy555; - goto yy137; - } else { - if(yych <= 'u') goto yy554; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'u') goto yy552; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy28: - YYDEBUG(28, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy497; - goto yy137; - } + YYDEBUG(28, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy496; - goto yy137; - } else { - if(yych <= 'I') goto yy498; - if(yych <= 'T') goto yy137; - goto yy499; - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy495; + goto yy137; } } else { - if(yych <= 'e') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy526; - if(yych <= 'd') goto yy142; - goto yy525; - } + if (yych <= 'H') { + if (yych <= 'E') goto yy494; + goto yy137; } else { - if(yych <= 't') { - if(yych == 'i') goto yy527; - goto yy142; - } else { - if(yych <= 'u') goto yy528; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'I') goto yy496; + if (yych <= 'T') goto yy137; + goto yy497; } } -yy29: - YYDEBUG(29, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy497; - goto yy137; - } + } else { + if (yych <= 'e') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy496; - goto yy137; - } else { - if(yych <= 'I') goto yy498; - if(yych <= 'T') goto yy137; - goto yy499; - } + if (yych <= 'a') goto yy524; + if (yych <= 'd') goto yy142; + goto yy523; } } else { - if(yych <= 'e') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy497; - if(yych <= 'd') goto yy137; - goto yy496; - } + if (yych <= 't') { + if (yych == 'i') goto yy525; + goto yy142; } else { - if(yych <= 't') { - if(yych == 'i') goto yy498; - goto yy137; - } else { - if(yych <= 'u') goto yy499; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'u') goto yy526; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy30: - YYDEBUG(30, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; + } +yy29: + YYDEBUG(29, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; goto yy136; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy137; - goto yy486; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy495; + goto yy137; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; + if (yych <= 'H') { + if (yych <= 'E') goto yy494; + goto yy137; } else { - if(yych <= 'c') goto yy491; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= 'I') goto yy496; + if (yych <= 'T') goto yy137; + goto yy497; } } -yy31: - YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'e') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy137; - goto yy486; + if (yych <= 'a') goto yy495; + if (yych <= 'd') goto yy137; + goto yy494; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; + if (yych <= 't') { + if (yych == 'i') goto yy496; goto yy137; } else { - if(yych <= 'c') goto yy486; - if(yych <= 'z') goto yy137; + if (yych <= 'u') goto yy497; + if (yych <= 'z') goto yy137; goto yy3; } } + } +yy30: + YYDEBUG(30, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy137; + goto yy484; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'c') goto yy489; + if (yych <= 'z') goto yy142; + goto yy3; + } + } +yy31: + YYDEBUG(31, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy137; + goto yy484; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'c') goto yy484; + if (yych <= 'z') goto yy137; + goto yy3; + } + } yy32: - YYDEBUG(32, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy301; - } + YYDEBUG(32, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy479; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy301; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'e') goto yy477; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy33: - YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy301; - } + YYDEBUG(33, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy301; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy301; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'e') goto yy301; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy34: - YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy274; - } + YYDEBUG(34, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy288; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy274; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'e') goto yy288; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy274; - } + YYDEBUG(35, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy274; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy274; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'e') goto yy274; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy36: - YYDEBUG(36, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy254; - if(yych <= 'K') goto yy137; - goto yy255; - } + YYDEBUG(36, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy142; - goto yy264; - } else { - if(yych == 'l') goto yy265; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych == 'I') goto yy254; + if (yych <= 'K') goto yy137; + goto yy255; + } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy142; + goto yy264; + } else { + if (yych == 'l') goto yy265; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy37: - YYDEBUG(37, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy254; - if(yych <= 'K') goto yy137; - goto yy255; - } + YYDEBUG(37, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy137; - goto yy254; - } else { - if(yych == 'l') goto yy255; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych == 'I') goto yy254; + if (yych <= 'K') goto yy137; + goto yy255; + } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy137; + goto yy254; + } else { + if (yych == 'l') goto yy255; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy38: - YYDEBUG(38, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy248; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy251; - if(yych <= 'z') goto yy142; - goto yy3; - } + YYDEBUG(38, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy248; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych <= 'a') goto yy251; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy248; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy248; - if(yych <= 'z') goto yy137; - goto yy3; - } + YYDEBUG(39, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy248; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych <= 'a') goto yy248; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy137; - goto yy154; - } + YYDEBUG(40, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'r') goto yy241; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy137; + goto yy154; } -yy41: - YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy137; - goto yy154; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'r') goto yy154; - if(yych <= 'z') goto yy137; - goto yy3; - } - } -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') goto yy12; - if(yych <= 'Z') goto yy153; - if(yych <= '`') goto yy12; - if(yych <= 'z') goto yy153; - goto yy12; -yy43: - YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; + if (yych <= 'r') goto yy241; + if (yych <= 'z') goto yy142; goto yy3; + } + } +yy41: + YYDEBUG(41, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy137; + goto yy154; } -yy44: - YYDEBUG(44, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy137; + if (yych <= 'r') goto yy154; + if (yych <= 'z') goto yy137; goto yy3; } + } +yy42: + YYDEBUG(42, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') goto yy12; + if (yych <= 'Z') goto yy153; + if (yych <= '`') goto yy12; + if (yych <= 'z') goto yy153; + goto yy12; +yy43: + YYDEBUG(43, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; + } +yy44: + YYDEBUG(44, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy137; + goto yy3; + } yy45: - YYDEBUG(45, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= '/') goto yy46; - if(yych <= '9') goto yy51; + YYDEBUG(45, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= '/') goto yy46; + if (yych <= '9') goto yy51; yy46: - YYDEBUG(46, *YYCURSOR); - { + YYDEBUG(46, *YYCURSOR); + { goto std; } yy47: - YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - goto yy46; + YYDEBUG(47, *YYCURSOR); + yych = *++YYCURSOR; + goto yy46; yy48: - YYDEBUG(48, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(49, *YYCURSOR); - { + YYDEBUG(48, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(49, *YYCURSOR); + { s->pos = cursor; s->line++; goto std; } yy50: - YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - goto yy12; + YYDEBUG(50, *YYCURSOR); + yych = *++YYCURSOR; + goto yy12; yy51: - YYDEBUG(51, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; - YYDEBUG(52, *YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych >= ' ') goto yy56; + YYDEBUG(51, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; + YYDEBUG(52, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych >= ' ') goto yy56; + } else { + if (yych == 'D') goto yy61; + if (yych >= 'F') goto yy63; + } + } else { + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy59; + } else { + if (yych <= 'S') { + if (yych >= 'S') goto yy58; } else { - if(yych == 'D') goto yy61; - if(yych >= 'F') goto yy63; + if (yych <= 'T') goto yy65; + if (yych >= 'W') goto yy62; } + } + } + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych >= 'd') goto yy61; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych >= 'M') goto yy59; + if (yych <= 'f') { + if (yych >= 'f') goto yy63; } else { - if(yych <= 'S') { - if(yych >= 'S') goto yy58; - } else { - if(yych <= 'T') goto yy65; - if(yych >= 'W') goto yy62; - } + if (yych == 'h') goto yy60; } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych >= 'd') goto yy61; - } else { - if(yych <= 'f') { - if(yych >= 'f') goto yy63; - } else { - if(yych == 'h') goto yy60; - } - } + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy53; + if (yych <= 's') goto yy58; + goto yy65; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy53; - if(yych <= 's') goto yy58; - goto yy65; + if (yych <= 'w') { + if (yych >= 'w') goto yy62; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy62; - } else { - if(yych == 'y') goto yy64; - } + if (yych == 'y') goto yy64; } } } + } yy53: - YYDEBUG(53, *YYCURSOR); - YYCURSOR = YYMARKER; - if(yyaccept <= 15) { - if(yyaccept <= 7) { - if(yyaccept <= 3) { - if(yyaccept <= 1) { - if(yyaccept <= 0) { - goto yy3; - } else { - goto yy12; - } + YYDEBUG(53, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 15) { + if (yyaccept <= 7) { + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy3; } else { - if(yyaccept <= 2) { - goto yy46; - } else { - goto yy69; - } + goto yy12; } } else { - if(yyaccept <= 5) { - if(yyaccept <= 4) { - goto yy174; - } else { - goto yy276; - } + if (yyaccept <= 2) { + goto yy46; } else { - if(yyaccept <= 6) { - goto yy303; - } else { - goto yy308; - } + goto yy69; } } } else { - if(yyaccept <= 11) { - if(yyaccept <= 9) { - if(yyaccept <= 8) { - goto yy332; - } else { - goto yy402; - } + if (yyaccept <= 5) { + if (yyaccept <= 4) { + goto yy174; } else { - if(yyaccept <= 10) { - goto yy558; - } else { - goto yy681; - } + goto yy276; } } else { - if(yyaccept <= 13) { - if(yyaccept <= 12) { - goto yy696; - } else { - goto yy796; - } + if (yyaccept <= 6) { + goto yy303; } else { - if(yyaccept <= 14) { - goto yy844; - } else { - goto yy854; - } + goto yy308; } } } } else { - if(yyaccept <= 23) { - if(yyaccept <= 19) { - if(yyaccept <= 17) { - if(yyaccept <= 16) { - goto yy942; - } else { - goto yy962; - } + if (yyaccept <= 11) { + if (yyaccept <= 9) { + if (yyaccept <= 8) { + goto yy332; } else { - if(yyaccept <= 18) { - goto yy993; - } else { - goto yy1000; - } + goto yy402; } } else { - if(yyaccept <= 21) { - if(yyaccept <= 20) { - goto yy1027; - } else { - goto yy972; - } + if (yyaccept <= 10) { + goto yy556; } else { - if(yyaccept <= 22) { - goto yy660; - } else { - goto yy1152; - } + goto yy679; } } } else { - if(yyaccept <= 27) { - if(yyaccept <= 25) { - if(yyaccept <= 24) { - goto yy1021; - } else { - goto yy1243; - } + if (yyaccept <= 13) { + if (yyaccept <= 12) { + goto yy694; } else { - if(yyaccept <= 26) { - goto yy1251; - } else { - goto yy1306; - } + goto yy799; } } else { - if(yyaccept <= 29) { - if(yyaccept <= 28) { - goto yy1309; - } else { - goto yy1387; - } + if (yyaccept <= 14) { + goto yy843; } else { - if(yyaccept <= 30) { - goto yy1395; - } else { - goto yy1418; - } + goto yy853; } } } } -yy54: - YYDEBUG(54, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(55, *YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy51; - goto yy53; -yy56: - YYDEBUG(56, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy57: - YYDEBUG(57, *YYCURSOR); - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych <= 0x1F) goto yy53; - goto yy56; + } else { + if (yyaccept <= 23) { + if (yyaccept <= 19) { + if (yyaccept <= 17) { + if (yyaccept <= 16) { + goto yy947; + } else { + goto yy967; + } } else { - if(yych == 'D') goto yy61; - if(yych <= 'E') goto yy53; - goto yy63; + if (yyaccept <= 18) { + goto yy998; + } else { + goto yy1005; + } } } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych <= 'L') goto yy53; - goto yy59; + if (yyaccept <= 21) { + if (yyaccept <= 20) { + goto yy1032; + } else { + goto yy977; + } } else { - if(yych <= 'S') { - if(yych <= 'R') goto yy53; + if (yyaccept <= 22) { + goto yy658; } else { - if(yych <= 'T') goto yy65; - if(yych <= 'V') goto yy53; - goto yy62; + goto yy1157; } } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych <= 'c') goto yy53; - goto yy61; + if (yyaccept <= 27) { + if (yyaccept <= 25) { + if (yyaccept <= 24) { + goto yy1026; + } else { + goto yy1248; + } } else { - if(yych <= 'f') { - if(yych <= 'e') goto yy53; - goto yy63; + if (yyaccept <= 26) { + goto yy1256; } else { - if(yych == 'h') goto yy60; - goto yy53; + goto yy1311; } } } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy53; - if(yych >= 't') goto yy65; + if (yyaccept <= 29) { + if (yyaccept <= 28) { + goto yy1314; + } else { + goto yy1392; + } } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy53; - goto yy62; + if (yyaccept <= 30) { + goto yy1400; } else { - if(yych == 'y') goto yy64; - goto yy53; + goto yy1423; } } } } -yy58: - YYDEBUG(58, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; + } +yy54: + YYDEBUG(54, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(55, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy51; + goto yy53; +yy56: + YYDEBUG(56, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy57: + YYDEBUG(57, *YYCURSOR); + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych <= 0x1F) goto yy53; + goto yy56; } else { - if(yych <= 'E') goto yy124; - if(yych <= 'T') goto yy53; - goto yy122; + if (yych == 'D') goto yy61; + if (yych <= 'E') goto yy53; + goto yy63; } } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych <= 'L') goto yy53; + goto yy59; } else { - if(yych <= 'e') goto yy124; - if(yych == 'u') goto yy122; - goto yy53; + if (yych <= 'S') { + if (yych <= 'R') goto yy53; + } else { + if (yych <= 'T') goto yy65; + if (yych <= 'V') goto yy53; + goto yy62; + } } } -yy59: - YYDEBUG(59, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych == 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych <= 'c') goto yy53; + goto yy61; + } else { + if (yych <= 'f') { + if (yych <= 'e') goto yy53; + goto yy63; + } else { + if (yych == 'h') goto yy60; + goto yy53; + } + } } else { - if(yych <= 'i') { - if(yych <= 'h') goto yy53; - goto yy114; + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy53; + if (yych >= 't') goto yy65; } else { - if(yych == 'o') goto yy113; - goto yy53; + if (yych <= 'w') { + if (yych <= 'v') goto yy53; + goto yy62; + } else { + if (yych == 'y') goto yy64; + goto yy53; + } } } + } +yy58: + YYDEBUG(58, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy124; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy124; + if (yych == 'u') goto yy122; + goto yy53; + } + } +yy59: + YYDEBUG(59, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy53; + goto yy114; + } else { + if (yych == 'o') goto yy113; + goto yy53; + } + } yy60: - YYDEBUG(60, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy111; - if(yych == 'o') goto yy111; - goto yy53; + YYDEBUG(60, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy111; + if (yych == 'o') goto yy111; + goto yy53; yy61: - YYDEBUG(61, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy110; - if(yych == 'a') goto yy110; - goto yy53; + YYDEBUG(61, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy110; + if (yych == 'a') goto yy110; + goto yy53; yy62: - YYDEBUG(62, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy98; - if(yych == 'e') goto yy98; - goto yy53; + YYDEBUG(62, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy98; + if (yych == 'e') goto yy98; + goto yy53; yy63: - YYDEBUG(63, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych == 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; + YYDEBUG(63, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy53; + goto yy83; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy53; - goto yy83; - } else { - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'r') goto yy82; + goto yy53; } + } yy64: - YYDEBUG(64, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy79; - if(yych == 'e') goto yy79; - goto yy53; + YYDEBUG(64, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy79; + if (yych == 'e') goto yy79; + goto yy53; yy65: - YYDEBUG(65, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy66; - if(yych <= 'T') goto yy53; - goto yy67; + YYDEBUG(65, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy66; + if (yych <= 'T') goto yy53; + goto yy67; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - } else { - if(yych == 'u') goto yy67; - goto yy53; - } + if (yych == 'u') goto yy67; + goto yy53; } + } yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy74; - if(yych == 'u') goto yy74; - goto yy53; + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy74; + if (yych == 'u') goto yy74; + goto yy53; yy67: - YYDEBUG(67, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy68; - if(yych != 'e') goto yy53; + YYDEBUG(67, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy68; + if (yych != 'e') goto yy53; yy68: - YYDEBUG(68, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'S') goto yy70; - if(yych == 's') goto yy70; + YYDEBUG(68, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'S') goto yy70; + if (yych == 's') goto yy70; yy69: - YYDEBUG(69, *YYCURSOR); - { + YYDEBUG(69, *YYCURSOR); + { timelib_ull i; DEBUG_OUTPUT("relative"); TIMELIB_INIT; @@ -2647,919 +2646,919 @@ yy69: while(*ptr) { i = timelib_get_unsigned_nr((char **) &ptr, 24); timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, 0, s); + timelib_set_relative((char **) &ptr, i, 1, s); } TIMELIB_DEINIT; return TIMELIB_RELATIVE; } yy70: - YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy71; - if(yych != 'd') goto yy53; + YYDEBUG(70, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy71; + if (yych != 'd') goto yy53; yy71: - YYDEBUG(71, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy72; - if(yych != 'a') goto yy53; + YYDEBUG(71, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy72; + if (yych != 'a') goto yy53; yy72: - YYDEBUG(72, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych != 'y') goto yy53; + YYDEBUG(72, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych != 'y') goto yy53; yy73: - YYDEBUG(73, *YYCURSOR); - yych = *++YYCURSOR; - goto yy69; + YYDEBUG(73, *YYCURSOR); + yych = *++YYCURSOR; + goto yy69; yy74: - YYDEBUG(74, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy75; - if(yych != 'r') goto yy69; + YYDEBUG(74, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy75; + if (yych != 'r') goto yy69; yy75: - YYDEBUG(75, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy76; - if(yych != 's') goto yy53; + YYDEBUG(75, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy76; + if (yych != 's') goto yy53; yy76: - YYDEBUG(76, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy77; - if(yych != 'd') goto yy53; + YYDEBUG(76, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy77; + if (yych != 'd') goto yy53; yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy78; - if(yych != 'a') goto yy53; + YYDEBUG(77, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy78; + if (yych != 'a') goto yy53; yy78: - YYDEBUG(78, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(78, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy79: - YYDEBUG(79, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy80; - if(yych != 'a') goto yy53; + YYDEBUG(79, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy80; + if (yych != 'a') goto yy53; yy80: - YYDEBUG(80, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy81; - if(yych != 'r') goto yy53; + YYDEBUG(80, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy81; + if (yych != 'r') goto yy53; yy81: - YYDEBUG(81, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy73; - if(yych == 's') goto yy73; - goto yy69; + YYDEBUG(81, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy73; + if (yych == 's') goto yy73; + goto yy69; yy82: - YYDEBUG(82, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy95; - if(yych == 'i') goto yy95; - goto yy53; + YYDEBUG(82, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy95; + if (yych == 'i') goto yy95; + goto yy53; yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy84; - if(yych != 'r') goto yy53; + YYDEBUG(83, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy84; + if (yych != 'r') goto yy53; yy84: - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy85; - if(yych != 't') goto yy53; + YYDEBUG(84, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy85; + if (yych != 't') goto yy53; yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'H') goto yy87; - if(yych <= 'M') goto yy53; + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'H') goto yy87; + if (yych <= 'M') goto yy53; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy87; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy87; - } else { - if(yych != 'n') goto yy53; - } + if (yych != 'n') goto yy53; } - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy92; - if(yych == 'i') goto yy92; - goto yy53; + } + YYDEBUG(86, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy92; + if (yych == 'i') goto yy92; + goto yy53; yy87: - YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy88; - if(yych != 'n') goto yy53; + YYDEBUG(87, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy88; + if (yych != 'n') goto yy53; yy88: - YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy89; - if(yych != 'i') goto yy53; + YYDEBUG(88, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy89; + if (yych != 'i') goto yy53; yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy90; - if(yych != 'g') goto yy53; + YYDEBUG(89, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy90; + if (yych != 'g') goto yy53; yy90: - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy91; - if(yych != 'h') goto yy53; + YYDEBUG(90, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy91; + if (yych != 'h') goto yy53; yy91: - YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy81; - if(yych == 't') goto yy81; - goto yy53; + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy81; + if (yych == 't') goto yy81; + goto yy53; yy92: - YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy93; - if(yych != 'g') goto yy53; + YYDEBUG(92, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy93; + if (yych != 'g') goto yy53; yy93: - YYDEBUG(93, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy94; - if(yych != 'h') goto yy53; + YYDEBUG(93, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy94; + if (yych != 'h') goto yy53; yy94: - YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy81; - if(yych == 't') goto yy81; - goto yy53; + YYDEBUG(94, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy81; + if (yych == 't') goto yy81; + goto yy53; yy95: - YYDEBUG(95, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy96; - if(yych != 'd') goto yy69; + YYDEBUG(95, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy96; + if (yych != 'd') goto yy69; yy96: - YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy97; - if(yych != 'a') goto yy53; + YYDEBUG(96, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy97; + if (yych != 'a') goto yy53; yy97: - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(97, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy98: - YYDEBUG(98, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= 'C') goto yy53; - if(yych <= 'D') goto yy100; - } else { - if(yych <= 'c') goto yy53; - if(yych <= 'd') goto yy100; - if(yych >= 'f') goto yy53; - } - YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'K') goto yy106; - if(yych == 'k') goto yy106; - goto yy53; + YYDEBUG(98, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= 'C') goto yy53; + if (yych <= 'D') goto yy100; + } else { + if (yych <= 'c') goto yy53; + if (yych <= 'd') goto yy100; + if (yych >= 'f') goto yy53; + } + YYDEBUG(99, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy106; + if (yych == 'k') goto yy106; + goto yy53; yy100: - YYDEBUG(100, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'N') goto yy101; - if(yych != 'n') goto yy69; + YYDEBUG(100, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'N') goto yy101; + if (yych != 'n') goto yy69; yy101: - YYDEBUG(101, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy102; - if(yych != 'e') goto yy53; + YYDEBUG(101, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy102; + if (yych != 'e') goto yy53; yy102: - YYDEBUG(102, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy103; - if(yych != 's') goto yy53; + YYDEBUG(102, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy103; + if (yych != 's') goto yy53; yy103: - YYDEBUG(103, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy104; - if(yych != 'd') goto yy53; + YYDEBUG(103, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy104; + if (yych != 'd') goto yy53; yy104: - YYDEBUG(104, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy105; - if(yych != 'a') goto yy53; + YYDEBUG(104, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy105; + if (yych != 'a') goto yy53; yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy106: - YYDEBUG(106, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'D') goto yy107; - if(yych <= 'R') goto yy69; - goto yy73; + YYDEBUG(106, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'D') goto yy107; + if (yych <= 'R') goto yy69; + goto yy73; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy69; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy69; - } else { - if(yych == 's') goto yy73; - goto yy69; - } + if (yych == 's') goto yy73; + goto yy69; } + } yy107: - YYDEBUG(107, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy108; - if(yych != 'a') goto yy53; + YYDEBUG(107, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy108; + if (yych != 'a') goto yy53; yy108: - YYDEBUG(108, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy109; - if(yych != 'y') goto yy53; + YYDEBUG(108, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy109; + if (yych != 'y') goto yy53; yy109: - YYDEBUG(109, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy73; - if(yych == 's') goto yy73; - goto yy69; + YYDEBUG(109, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy73; + if (yych == 's') goto yy73; + goto yy69; yy110: - YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy81; - if(yych == 'y') goto yy81; - goto yy53; + YYDEBUG(110, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy81; + if (yych == 'y') goto yy81; + goto yy53; yy111: - YYDEBUG(111, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy112; - if(yych != 'u') goto yy53; + YYDEBUG(111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy112; + if (yych != 'u') goto yy53; yy112: - YYDEBUG(112, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy81; - if(yych == 'r') goto yy81; - goto yy53; + YYDEBUG(112, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy81; + if (yych == 'r') goto yy81; + goto yy53; yy113: - YYDEBUG(113, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy118; - if(yych == 'n') goto yy118; - goto yy53; + YYDEBUG(113, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy118; + if (yych == 'n') goto yy118; + goto yy53; yy114: - YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy115; - if(yych != 'n') goto yy53; + YYDEBUG(114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy115; + if (yych != 'n') goto yy53; yy115: - YYDEBUG(115, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych == 'S') goto yy73; - if(yych <= 'T') goto yy69; + YYDEBUG(115, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych == 'S') goto yy73; + if (yych <= 'T') goto yy69; + } else { + if (yych <= 's') { + if (yych <= 'r') goto yy69; + goto yy73; } else { - if(yych <= 's') { - if(yych <= 'r') goto yy69; - goto yy73; - } else { - if(yych != 'u') goto yy69; - } + if (yych != 'u') goto yy69; } - YYDEBUG(116, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy117; - if(yych != 't') goto yy53; + } + YYDEBUG(116, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy117; + if (yych != 't') goto yy53; yy117: - YYDEBUG(117, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy81; - if(yych == 'e') goto yy81; - goto yy53; + YYDEBUG(117, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy81; + if (yych == 'e') goto yy81; + goto yy53; yy118: - YYDEBUG(118, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == 'D') goto yy119; - if(yych <= 'S') goto yy69; - goto yy120; + YYDEBUG(118, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == 'D') goto yy119; + if (yych <= 'S') goto yy69; + goto yy120; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy69; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy69; - } else { - if(yych == 't') goto yy120; - goto yy69; - } + if (yych == 't') goto yy120; + goto yy69; } + } yy119: - YYDEBUG(119, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy121; - if(yych == 'a') goto yy121; - goto yy53; + YYDEBUG(119, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy121; + if (yych == 'a') goto yy121; + goto yy53; yy120: - YYDEBUG(120, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy81; - if(yych == 'h') goto yy81; - goto yy53; + YYDEBUG(120, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy81; + if (yych == 'h') goto yy81; + goto yy53; yy121: - YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(121, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy122: - YYDEBUG(122, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy133; - if(yych == 'n') goto yy133; - goto yy53; + YYDEBUG(122, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy133; + if (yych == 'n') goto yy133; + goto yy53; yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy128; - if(yych == 't') goto yy128; - goto yy53; + YYDEBUG(123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy128; + if (yych == 't') goto yy128; + goto yy53; yy124: - YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy125; - if(yych != 'c') goto yy53; + YYDEBUG(124, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy125; + if (yych != 'c') goto yy53; yy125: - YYDEBUG(125, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'O') goto yy126; - if(yych <= 'R') goto yy69; - goto yy73; + YYDEBUG(125, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'O') goto yy126; + if (yych <= 'R') goto yy69; + goto yy73; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy69; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy69; - } else { - if(yych == 's') goto yy73; - goto yy69; - } + if (yych == 's') goto yy73; + goto yy69; } + } yy126: - YYDEBUG(126, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy127; - if(yych != 'n') goto yy53; + YYDEBUG(126, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy127; + if (yych != 'n') goto yy53; yy127: - YYDEBUG(127, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy81; - if(yych == 'd') goto yy81; - goto yy53; + YYDEBUG(127, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy81; + if (yych == 'd') goto yy81; + goto yy53; yy128: - YYDEBUG(128, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy129; - if(yych != 'u') goto yy69; + YYDEBUG(128, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy129; + if (yych != 'u') goto yy69; yy129: - YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy130; - if(yych != 'r') goto yy53; + YYDEBUG(129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy130; + if (yych != 'r') goto yy53; yy130: - YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy131; - if(yych != 'd') goto yy53; + YYDEBUG(130, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy131; + if (yych != 'd') goto yy53; yy131: - YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy132; - if(yych != 'a') goto yy53; + YYDEBUG(131, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy132; + if (yych != 'a') goto yy53; yy132: - YYDEBUG(132, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy133: - YYDEBUG(133, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy134; - if(yych != 'd') goto yy69; + YYDEBUG(133, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy134; + if (yych != 'd') goto yy69; yy134: - YYDEBUG(134, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy135; - if(yych != 'a') goto yy53; + YYDEBUG(134, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy135; + if (yych != 'a') goto yy53; yy135: - YYDEBUG(135, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(135, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy136: - YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - goto yy3; + YYDEBUG(136, *YYCURSOR); + yych = *++YYCURSOR; + goto yy3; yy137: - YYDEBUG(137, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(138, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy139: - YYDEBUG(139, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(139, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy140: - YYDEBUG(140, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } -yy141: - YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy136; + YYDEBUG(140, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; goto yy3; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } +yy141: + YYDEBUG(141, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy136; + goto yy3; yy142: - YYDEBUG(142, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(142, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy138; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy138; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy143: - YYDEBUG(143, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych != '/') goto yy3; - } + YYDEBUG(143, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy3; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych != '/') goto yy3; } -yy144: - YYDEBUG(144, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '@') goto yy53; - if(yych >= '[') goto yy53; - YYDEBUG(145, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 16) { - goto yy146; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy3; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy148; + goto yy3; } - goto yy53; + } +yy144: + YYDEBUG(144, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy53; + if (yych >= '[') goto yy53; + YYDEBUG(145, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy146; + } + goto yy53; yy146: - YYDEBUG(146, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(147, *YYCURSOR); - if(yybm[0+yych] & 16) { - goto yy146; - } - if(yych == '/') goto yy144; - if(yych == '_') goto yy144; - goto yy3; + YYDEBUG(146, *YYCURSOR); + yyaccept = 0; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(147, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy146; + } + if (yych == '/') goto yy144; + if (yych == '_') goto yy144; + goto yy3; yy148: - YYDEBUG(148, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(148, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy149: - YYDEBUG(149, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(149, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy150: - YYDEBUG(150, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; + YYDEBUG(150, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy3; goto yy144; } else { - if(yych <= '_') { - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy151: - YYDEBUG(151, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + YYDEBUG(151, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy152: - YYDEBUG(152, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy53; + YYDEBUG(152, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy53; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy151; + goto yy53; + } +yy153: + YYDEBUG(153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy137; + goto yy3; + } +yy154: + YYDEBUG(154, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy151; - goto yy53; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; } -yy153: - YYDEBUG(153, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy137; + if (yych <= 'e') goto yy155; + if (yych <= 'z') goto yy138; goto yy3; } -yy154: - YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - } + } +yy155: + YYDEBUG(155, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy155; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; } -yy155: - YYDEBUG(155, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - } + } else { + if (yych <= 'u') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'u') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'v') goto yy156; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'v') goto yy156; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy156: - YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - } + YYDEBUG(156, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'i') goto yy157; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'i') goto yy157; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy141; - } + YYDEBUG(157, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'o') goto yy158; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy141; } -yy158: - YYDEBUG(158, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'U') goto yy159; - if(yych != 'u') goto yy3; + if (yych <= 'o') goto yy158; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy158: + YYDEBUG(158, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'U') goto yy159; + if (yych != 'u') goto yy3; + } yy159: - YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy160; - if(yych != 's') goto yy53; + YYDEBUG(159, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy160; + if (yych != 's') goto yy53; yy160: - YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 0x09) goto yy161; - if(yych != ' ') goto yy53; + YYDEBUG(160, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\t') goto yy161; + if (yych != ' ') goto yy53; yy161: - YYDEBUG(161, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; - YYDEBUG(162, *YYCURSOR); - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy161; - if(yych <= 0x1F) goto yy53; - goto yy161; - } else { - if(yych == 'D') goto yy166; - if(yych <= 'E') goto yy53; - goto yy168; - } + YYDEBUG(161, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; + YYDEBUG(162, *YYCURSOR); + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy161; + if (yych <= 0x1F) goto yy53; + goto yy161; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy165; - if(yych <= 'L') goto yy53; - goto yy164; - } else { - if(yych <= 'S') { - if(yych <= 'R') goto yy53; - } else { - if(yych <= 'T') goto yy170; - if(yych <= 'V') goto yy53; - goto yy167; - } - } + if (yych == 'D') goto yy166; + if (yych <= 'E') goto yy53; + goto yy168; } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy169; - if(yych <= 'c') goto yy53; - goto yy166; - } else { - if(yych <= 'f') { - if(yych <= 'e') goto yy53; - goto yy168; - } else { - if(yych == 'h') goto yy165; - goto yy53; - } - } + if (yych <= 'M') { + if (yych == 'H') goto yy165; + if (yych <= 'L') goto yy53; + goto yy164; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy164; - if(yych <= 'r') goto yy53; - if(yych >= 't') goto yy170; + if (yych <= 'S') { + if (yych <= 'R') goto yy53; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy53; - goto yy167; - } else { - if(yych == 'y') goto yy169; - goto yy53; - } + if (yych <= 'T') goto yy170; + if (yych <= 'V') goto yy53; + goto yy167; } } } - YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy228; - goto yy53; - } else { - if(yych <= 'E') goto yy229; - if(yych <= 'T') goto yy53; - goto yy227; + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy169; + if (yych <= 'c') goto yy53; + goto yy166; + } else { + if (yych <= 'f') { + if (yych <= 'e') goto yy53; + goto yy168; + } else { + if (yych == 'h') goto yy165; + goto yy53; + } } } else { - if(yych <= 'd') { - if(yych == 'a') goto yy228; - goto yy53; + if (yych <= 't') { + if (yych <= 'm') goto yy164; + if (yych <= 'r') goto yy53; + if (yych >= 't') goto yy170; } else { - if(yych <= 'e') goto yy229; - if(yych == 'u') goto yy227; - goto yy53; + if (yych <= 'w') { + if (yych <= 'v') goto yy53; + goto yy167; + } else { + if (yych == 'y') goto yy169; + goto yy53; + } } } + } + YYDEBUG(163, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy228; + goto yy53; + } else { + if (yych <= 'E') goto yy229; + if (yych <= 'T') goto yy53; + goto yy227; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy228; + goto yy53; + } else { + if (yych <= 'e') goto yy229; + if (yych == 'u') goto yy227; + goto yy53; + } + } yy164: - YYDEBUG(164, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych == 'I') goto yy219; - if(yych <= 'N') goto yy53; - goto yy218; - } else { - if(yych <= 'i') { - if(yych <= 'h') goto yy53; - goto yy219; - } else { - if(yych == 'o') goto yy218; - goto yy53; - } + YYDEBUG(164, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy219; + if (yych <= 'N') goto yy53; + goto yy218; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy53; + goto yy219; + } else { + if (yych == 'o') goto yy218; + goto yy53; } + } yy165: - YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy216; - if(yych == 'o') goto yy216; - goto yy53; + YYDEBUG(165, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy216; + if (yych == 'o') goto yy216; + goto yy53; yy166: - YYDEBUG(166, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy215; - if(yych == 'a') goto yy215; - goto yy53; + YYDEBUG(166, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy215; + if (yych == 'a') goto yy215; + goto yy53; yy167: - YYDEBUG(167, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy203; - if(yych == 'e') goto yy203; - goto yy53; + YYDEBUG(167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy203; + if (yych == 'e') goto yy203; + goto yy53; yy168: - YYDEBUG(168, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych == 'O') goto yy188; - if(yych <= 'Q') goto yy53; - goto yy187; - } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy53; - goto yy188; - } else { - if(yych == 'r') goto yy187; - goto yy53; - } + YYDEBUG(168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'O') goto yy188; + if (yych <= 'Q') goto yy53; + goto yy187; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy53; + goto yy188; + } else { + if (yych == 'r') goto yy187; + goto yy53; } + } yy169: - YYDEBUG(169, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy184; - if(yych == 'e') goto yy184; - goto yy53; + YYDEBUG(169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy184; + if (yych == 'e') goto yy184; + goto yy53; yy170: - YYDEBUG(170, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy171; - if(yych <= 'T') goto yy53; - goto yy172; + YYDEBUG(170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy171; + if (yych <= 'T') goto yy53; + goto yy172; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - } else { - if(yych == 'u') goto yy172; - goto yy53; - } + if (yych == 'u') goto yy172; + goto yy53; } + } yy171: - YYDEBUG(171, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy179; - if(yych == 'u') goto yy179; - goto yy53; + YYDEBUG(171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy179; + if (yych == 'u') goto yy179; + goto yy53; yy172: - YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy173; - if(yych != 'e') goto yy53; + YYDEBUG(172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy173; + if (yych != 'e') goto yy53; yy173: - YYDEBUG(173, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'S') goto yy175; - if(yych == 's') goto yy175; + YYDEBUG(173, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'S') goto yy175; + if (yych == 's') goto yy175; yy174: - YYDEBUG(174, *YYCURSOR); - { + YYDEBUG(174, *YYCURSOR); + { timelib_sll i; int behavior = 0; DEBUG_OUTPUT("relativetext"); @@ -3575,1180 +3574,1180 @@ yy174: return TIMELIB_RELATIVE; } yy175: - YYDEBUG(175, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy176; - if(yych != 'd') goto yy53; + YYDEBUG(175, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy176; + if (yych != 'd') goto yy53; yy176: - YYDEBUG(176, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy177; - if(yych != 'a') goto yy53; + YYDEBUG(176, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy177; + if (yych != 'a') goto yy53; yy177: - YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych != 'y') goto yy53; + YYDEBUG(177, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych != 'y') goto yy53; yy178: - YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - goto yy174; + YYDEBUG(178, *YYCURSOR); + yych = *++YYCURSOR; + goto yy174; yy179: - YYDEBUG(179, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy180; - if(yych != 'r') goto yy174; + YYDEBUG(179, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy180; + if (yych != 'r') goto yy174; yy180: - YYDEBUG(180, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy181; - if(yych != 's') goto yy53; + YYDEBUG(180, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy181; + if (yych != 's') goto yy53; yy181: - YYDEBUG(181, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy182; - if(yych != 'd') goto yy53; + YYDEBUG(181, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy182; + if (yych != 'd') goto yy53; yy182: - YYDEBUG(182, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy183; - if(yych != 'a') goto yy53; + YYDEBUG(182, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy183; + if (yych != 'a') goto yy53; yy183: - YYDEBUG(183, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(183, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy184: - YYDEBUG(184, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy185; - if(yych != 'a') goto yy53; + YYDEBUG(184, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy185; + if (yych != 'a') goto yy53; yy185: - YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy186; - if(yych != 'r') goto yy53; + YYDEBUG(185, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy186; + if (yych != 'r') goto yy53; yy186: - YYDEBUG(186, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy178; - if(yych == 's') goto yy178; - goto yy174; + YYDEBUG(186, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy178; + if (yych == 's') goto yy178; + goto yy174; yy187: - YYDEBUG(187, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy200; - if(yych == 'i') goto yy200; - goto yy53; + YYDEBUG(187, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy200; + if (yych == 'i') goto yy200; + goto yy53; yy188: - YYDEBUG(188, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy189; - if(yych != 'r') goto yy53; + YYDEBUG(188, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy189; + if (yych != 'r') goto yy53; yy189: - YYDEBUG(189, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy190; - if(yych != 't') goto yy53; + YYDEBUG(189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy190; + if (yych != 't') goto yy53; yy190: - YYDEBUG(190, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'H') goto yy192; - if(yych <= 'M') goto yy53; + YYDEBUG(190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'H') goto yy192; + if (yych <= 'M') goto yy53; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy192; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy192; - } else { - if(yych != 'n') goto yy53; - } + if (yych != 'n') goto yy53; } - YYDEBUG(191, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy197; - if(yych == 'i') goto yy197; - goto yy53; + } + YYDEBUG(191, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy197; + if (yych == 'i') goto yy197; + goto yy53; yy192: - YYDEBUG(192, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy193; - if(yych != 'n') goto yy53; + YYDEBUG(192, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy193; + if (yych != 'n') goto yy53; yy193: - YYDEBUG(193, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy194; - if(yych != 'i') goto yy53; + YYDEBUG(193, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy194; + if (yych != 'i') goto yy53; yy194: - YYDEBUG(194, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy195; - if(yych != 'g') goto yy53; + YYDEBUG(194, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy195; + if (yych != 'g') goto yy53; yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy196; - if(yych != 'h') goto yy53; + YYDEBUG(195, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy196; + if (yych != 'h') goto yy53; yy196: - YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy186; - if(yych == 't') goto yy186; - goto yy53; + YYDEBUG(196, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy186; + if (yych == 't') goto yy186; + goto yy53; yy197: - YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy198; - if(yych != 'g') goto yy53; + YYDEBUG(197, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy198; + if (yych != 'g') goto yy53; yy198: - YYDEBUG(198, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy199; - if(yych != 'h') goto yy53; + YYDEBUG(198, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy199; + if (yych != 'h') goto yy53; yy199: - YYDEBUG(199, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy186; - if(yych == 't') goto yy186; - goto yy53; + YYDEBUG(199, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy186; + if (yych == 't') goto yy186; + goto yy53; yy200: - YYDEBUG(200, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy201; - if(yych != 'd') goto yy174; + YYDEBUG(200, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy201; + if (yych != 'd') goto yy174; yy201: - YYDEBUG(201, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy202; - if(yych != 'a') goto yy53; + YYDEBUG(201, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy202; + if (yych != 'a') goto yy53; yy202: - YYDEBUG(202, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(202, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy203: - YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= 'C') goto yy53; - if(yych <= 'D') goto yy205; - } else { - if(yych <= 'c') goto yy53; - if(yych <= 'd') goto yy205; - if(yych >= 'f') goto yy53; - } - YYDEBUG(204, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'K') goto yy211; - if(yych == 'k') goto yy211; - goto yy53; + YYDEBUG(203, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= 'C') goto yy53; + if (yych <= 'D') goto yy205; + } else { + if (yych <= 'c') goto yy53; + if (yych <= 'd') goto yy205; + if (yych >= 'f') goto yy53; + } + YYDEBUG(204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy211; + if (yych == 'k') goto yy211; + goto yy53; yy205: - YYDEBUG(205, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'N') goto yy206; - if(yych != 'n') goto yy174; + YYDEBUG(205, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'N') goto yy206; + if (yych != 'n') goto yy174; yy206: - YYDEBUG(206, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy207; - if(yych != 'e') goto yy53; + YYDEBUG(206, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy207; + if (yych != 'e') goto yy53; yy207: - YYDEBUG(207, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy208; - if(yych != 's') goto yy53; + YYDEBUG(207, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy208; + if (yych != 's') goto yy53; yy208: - YYDEBUG(208, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy209; - if(yych != 'd') goto yy53; + YYDEBUG(208, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy209; + if (yych != 'd') goto yy53; yy209: - YYDEBUG(209, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy210; - if(yych != 'a') goto yy53; + YYDEBUG(209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy210; + if (yych != 'a') goto yy53; yy210: - YYDEBUG(210, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(210, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy211: - YYDEBUG(211, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'D') goto yy212; - if(yych <= 'R') goto yy174; - goto yy178; + YYDEBUG(211, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'D') goto yy212; + if (yych <= 'R') goto yy174; + goto yy178; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy174; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy174; - } else { - if(yych == 's') goto yy178; - goto yy174; - } + if (yych == 's') goto yy178; + goto yy174; } + } yy212: - YYDEBUG(212, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy213; - if(yych != 'a') goto yy53; + YYDEBUG(212, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy213; + if (yych != 'a') goto yy53; yy213: - YYDEBUG(213, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy214; - if(yych != 'y') goto yy53; + YYDEBUG(213, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy214; + if (yych != 'y') goto yy53; yy214: - YYDEBUG(214, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy178; - if(yych == 's') goto yy178; - goto yy174; + YYDEBUG(214, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy178; + if (yych == 's') goto yy178; + goto yy174; yy215: - YYDEBUG(215, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy186; - if(yych == 'y') goto yy186; - goto yy53; + YYDEBUG(215, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy186; + if (yych == 'y') goto yy186; + goto yy53; yy216: - YYDEBUG(216, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy217; - if(yych != 'u') goto yy53; + YYDEBUG(216, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy217; + if (yych != 'u') goto yy53; yy217: - YYDEBUG(217, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy186; - if(yych == 'r') goto yy186; - goto yy53; + YYDEBUG(217, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy186; + if (yych == 'r') goto yy186; + goto yy53; yy218: - YYDEBUG(218, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy223; - if(yych == 'n') goto yy223; - goto yy53; + YYDEBUG(218, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy223; + if (yych == 'n') goto yy223; + goto yy53; yy219: - YYDEBUG(219, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy220; - if(yych != 'n') goto yy53; + YYDEBUG(219, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy220; + if (yych != 'n') goto yy53; yy220: - YYDEBUG(220, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych == 'S') goto yy178; - if(yych <= 'T') goto yy174; + YYDEBUG(220, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych == 'S') goto yy178; + if (yych <= 'T') goto yy174; + } else { + if (yych <= 's') { + if (yych <= 'r') goto yy174; + goto yy178; } else { - if(yych <= 's') { - if(yych <= 'r') goto yy174; - goto yy178; - } else { - if(yych != 'u') goto yy174; - } + if (yych != 'u') goto yy174; } - YYDEBUG(221, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy222; - if(yych != 't') goto yy53; + } + YYDEBUG(221, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy222; + if (yych != 't') goto yy53; yy222: - YYDEBUG(222, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy186; - if(yych == 'e') goto yy186; - goto yy53; + YYDEBUG(222, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy186; + if (yych == 'e') goto yy186; + goto yy53; yy223: - YYDEBUG(223, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == 'D') goto yy224; - if(yych <= 'S') goto yy174; - goto yy225; + YYDEBUG(223, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == 'D') goto yy224; + if (yych <= 'S') goto yy174; + goto yy225; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy174; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy174; - } else { - if(yych == 't') goto yy225; - goto yy174; - } + if (yych == 't') goto yy225; + goto yy174; } + } yy224: - YYDEBUG(224, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy226; - if(yych == 'a') goto yy226; - goto yy53; + YYDEBUG(224, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy226; + if (yych == 'a') goto yy226; + goto yy53; yy225: - YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy186; - if(yych == 'h') goto yy186; - goto yy53; + YYDEBUG(225, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy186; + if (yych == 'h') goto yy186; + goto yy53; yy226: - YYDEBUG(226, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(226, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy227: - YYDEBUG(227, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy238; - if(yych == 'n') goto yy238; - goto yy53; + YYDEBUG(227, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy238; + if (yych == 'n') goto yy238; + goto yy53; yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy233; - if(yych == 't') goto yy233; - goto yy53; + YYDEBUG(228, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy233; + if (yych == 't') goto yy233; + goto yy53; yy229: - YYDEBUG(229, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy230; - if(yych != 'c') goto yy53; + YYDEBUG(229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy230; + if (yych != 'c') goto yy53; yy230: - YYDEBUG(230, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'O') goto yy231; - if(yych <= 'R') goto yy174; - goto yy178; + YYDEBUG(230, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'O') goto yy231; + if (yych <= 'R') goto yy174; + goto yy178; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy174; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy174; - } else { - if(yych == 's') goto yy178; - goto yy174; - } + if (yych == 's') goto yy178; + goto yy174; } + } yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy232; - if(yych != 'n') goto yy53; + YYDEBUG(231, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy232; + if (yych != 'n') goto yy53; yy232: - YYDEBUG(232, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy186; - if(yych == 'd') goto yy186; - goto yy53; + YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy186; + if (yych == 'd') goto yy186; + goto yy53; yy233: - YYDEBUG(233, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy234; - if(yych != 'u') goto yy174; + YYDEBUG(233, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy234; + if (yych != 'u') goto yy174; yy234: - YYDEBUG(234, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy235; - if(yych != 'r') goto yy53; + YYDEBUG(234, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy235; + if (yych != 'r') goto yy53; yy235: - YYDEBUG(235, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy236; - if(yych != 'd') goto yy53; + YYDEBUG(235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy236; + if (yych != 'd') goto yy53; yy236: - YYDEBUG(236, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy237; - if(yych != 'a') goto yy53; + YYDEBUG(236, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy237; + if (yych != 'a') goto yy53; yy237: - YYDEBUG(237, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(237, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy238: - YYDEBUG(238, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy239; - if(yych != 'd') goto yy174; + YYDEBUG(238, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy239; + if (yych != 'd') goto yy174; yy239: - YYDEBUG(239, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy240; - if(yych != 'a') goto yy53; + YYDEBUG(239, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy240; + if (yych != 'a') goto yy53; yy240: - YYDEBUG(240, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(240, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy241: - YYDEBUG(241, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy155; - } + YYDEBUG(241, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy242; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy155; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy242; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy242: - YYDEBUG(242, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - goto yy156; - } + YYDEBUG(242, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'v') goto yy243; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; + goto yy156; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'v') goto yy243; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy243: - YYDEBUG(243, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - goto yy157; - } + YYDEBUG(243, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy244; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + goto yy157; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy244; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy244: - YYDEBUG(244, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy141; - goto yy158; - } + YYDEBUG(244, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy245; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy141; + goto yy158; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy245; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy245: - YYDEBUG(245, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'T') goto yy3; - goto yy159; - } + YYDEBUG(245, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy246; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'T') goto yy3; + goto yy159; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy246; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy246: - YYDEBUG(246, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy160; - if(yych != 's') goto yy152; + YYDEBUG(246, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy160; + if (yych != 's') goto yy152; yy247: - YYDEBUG(247, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy53; - } + YYDEBUG(247, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy53; + } + } else { + if (yych <= '_') { + if (yych <= '/') goto yy144; + if (yych <= '^') goto yy53; + goto yy144; } else { - if(yych <= '_') { - if(yych <= '/') goto yy144; - if(yych <= '^') goto yy53; - goto yy144; - } else { - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy151; - goto yy53; - } + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy151; + goto yy53; } + } yy248: - YYDEBUG(248, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - } + YYDEBUG(248, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 's') goto yy249; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 's') goto yy249; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy249: - YYDEBUG(249, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(249, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy250; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy250: - YYDEBUG(250, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy3; - } + YYDEBUG(250, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy3; + } + } else { + if (yych <= 'Z') { + if (yych <= ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy140; } else { - if(yych <= 'Z') { - if(yych <= ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy140; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy251: - YYDEBUG(251, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - goto yy249; - } + YYDEBUG(251, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy252; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + goto yy249; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy252; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy252: - YYDEBUG(252, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + YYDEBUG(252, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy253; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy253: - YYDEBUG(253, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; - } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; - goto yy3; - } + YYDEBUG(253, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy140; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy254: - YYDEBUG(254, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy261; - } + YYDEBUG(254, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'g') goto yy261; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy261; } -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy256; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'g') goto yy261; + if (yych <= 'z') goto yy138; + goto yy3; } -yy256: - YYDEBUG(256, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - } + } +yy255: + YYDEBUG(255, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'u') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'v') goto yy257; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; } -yy257: - YYDEBUG(257, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy258; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'e') goto yy256; + if (yych <= 'z') goto yy138; + goto yy3; } -yy258: - YYDEBUG(258, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy141; - } + } +yy256: + YYDEBUG(256, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'n') goto yy259; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; } -yy259: - YYDEBUG(259, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'u') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'v') goto yy257; + if (yych <= 'z') goto yy139; goto yy3; + } + } +yy257: + YYDEBUG(257, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'T') goto yy260; - if(yych != 't') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; } -yy260: - YYDEBUG(260, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy160; - if(yych == 'h') goto yy160; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'e') goto yy258; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy258: + YYDEBUG(258, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'n') goto yy259; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy259: + YYDEBUG(259, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'T') goto yy260; + if (yych != 't') goto yy3; + } +yy260: + YYDEBUG(260, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy53; yy261: - YYDEBUG(261, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy139; - } + YYDEBUG(261, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'h') goto yy262; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy139; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'h') goto yy262; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy262: - YYDEBUG(262, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - } + YYDEBUG(262, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 't') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy263: - YYDEBUG(263, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy3; - } + YYDEBUG(263, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy3; + } + } else { + if (yych <= 'Z') { + if (yych <= ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy141; } else { - if(yych <= 'Z') { - if(yych <= ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy141; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy264: - YYDEBUG(264, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy261; - } + YYDEBUG(264, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy271; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy261; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy271; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy265: - YYDEBUG(265, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy256; - } + YYDEBUG(265, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy266; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy256; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy266; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy266: - YYDEBUG(266, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - goto yy257; - } + YYDEBUG(266, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'v') goto yy267; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; + goto yy257; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'v') goto yy267; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy267: - YYDEBUG(267, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy258; - } + YYDEBUG(267, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy268; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy258; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy268; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy268: - YYDEBUG(268, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy141; - goto yy259; - } + YYDEBUG(268, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy269; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; + goto yy259; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy269; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy269: - YYDEBUG(269, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'S') goto yy3; - goto yy260; - } + YYDEBUG(269, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy270; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'S') goto yy3; + goto yy260; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy270; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy270: - YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy160; - if(yych == 'h') goto yy247; - goto yy152; + YYDEBUG(270, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy160; + if (yych == 'h') goto yy247; + goto yy152; yy271: - YYDEBUG(271, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy139; - goto yy262; - } + YYDEBUG(271, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy272; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy139; + goto yy262; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy272; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy272: - YYDEBUG(272, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; - } + YYDEBUG(272, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy273: - YYDEBUG(273, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; - } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; - goto yy3; - } + YYDEBUG(273, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy141; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy274: - YYDEBUG(274, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'C') goto yy138; - if(yych >= 'E') goto yy277; - } + YYDEBUG(274, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'd') goto yy275; - if(yych <= 'e') goto yy277; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'C') goto yy138; + if (yych >= 'E') goto yy277; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'd') goto yy275; + if (yych <= 'e') goto yy277; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy275: - YYDEBUG(275, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'N') { - if(yych <= ')') { - if(yych >= ')') goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'M') goto yy139; - goto yy283; - } + YYDEBUG(275, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'N') { + if (yych <= ')') { + if (yych >= ')') goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych >= 'a') goto yy139; - } else { - if(yych <= 'n') goto yy283; - if(yych <= 'z') goto yy139; - } + if (yych <= '@') goto yy276; + if (yych <= 'M') goto yy139; + goto yy283; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych >= 'a') goto yy139; + } else { + if (yych <= 'n') goto yy283; + if (yych <= 'z') goto yy139; } + } yy276: - YYDEBUG(276, *YYCURSOR); - { + YYDEBUG(276, *YYCURSOR); + { const timelib_relunit* relunit; DEBUG_OUTPUT("daytext"); TIMELIB_INIT; @@ -4757,488 +4756,490 @@ yy276: TIMELIB_UNHAVE_TIME(); relunit = timelib_lookup_relunit((char**) &ptr); s->time->relative.weekday = relunit->multiplier; - s->time->relative.weekday_behavior = 1; + if (s->time->relative.weekday_behavior != 2) { + s->time->relative.weekday_behavior = 1; + } TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } yy277: - YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'K') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'J') goto yy139; - } + YYDEBUG(277, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'K') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'j') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'k') goto yy278; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy139; + } + } else { + if (yych <= 'j') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'k') goto yy278; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy278: - YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - } + YYDEBUG(278, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy279; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; } -yy279: - YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy280; - if(yych <= 'z') goto yy141; - goto yy3; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'd') goto yy279; + if (yych <= 'z') goto yy140; + goto yy3; } -yy280: - YYDEBUG(280, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; + } +yy279: + YYDEBUG(279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; goto yy3; } else { - if(yych <= 'Y') goto yy281; - if(yych != 'y') goto yy3; + if (yych <= 'a') goto yy280; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy280: + YYDEBUG(280, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy281; + if (yych != 'y') goto yy3; + } yy281: - YYDEBUG(281, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy282; - if(yych != 's') goto yy276; + YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy282; + if (yych != 's') goto yy276; yy282: - YYDEBUG(282, *YYCURSOR); - yych = *++YYCURSOR; - goto yy276; + YYDEBUG(282, *YYCURSOR); + yych = *++YYCURSOR; + goto yy276; yy283: - YYDEBUG(283, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + YYDEBUG(283, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy284; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; } -yy284: - YYDEBUG(284, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy141; - } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 's') goto yy285; - if(yych <= 'z') goto yy141; - goto yy3; - } - } -yy285: - YYDEBUG(285, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych == ')') goto yy136; + if (yych <= 'e') goto yy284; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy284: + YYDEBUG(284, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'D') goto yy286; - if(yych != 'd') goto yy3; + if (yych <= 's') goto yy285; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy285: + YYDEBUG(285, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'D') goto yy286; + if (yych != 'd') goto yy3; + } yy286: - YYDEBUG(286, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy287; - if(yych != 'a') goto yy53; + YYDEBUG(286, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy287; + if (yych != 'a') goto yy53; yy287: - YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; + YYDEBUG(287, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; yy288: - YYDEBUG(288, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - if(yych <= 'D') goto yy275; - goto yy277; - } + YYDEBUG(288, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy143; - } else { - if(yych <= 'e') goto yy290; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + if (yych <= 'D') goto yy275; + goto yy277; } - YYDEBUG(289, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'M') goto yy139; - goto yy283; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; + if (yych <= 'd') { + if (yych <= 'c') goto yy143; } else { - if(yych == 'n') goto yy296; - if(yych <= 'z') goto yy148; - goto yy276; + if (yych <= 'e') goto yy290; + if (yych <= 'z') goto yy143; + goto yy3; } } + } + YYDEBUG(289, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'M') goto yy139; + goto yy283; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'n') goto yy296; + if (yych <= 'z') goto yy148; + goto yy276; + } + } yy290: - YYDEBUG(290, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'K') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'J') goto yy139; - goto yy278; - } + YYDEBUG(290, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'K') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'k') goto yy291; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy139; + goto yy278; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'k') goto yy291; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy291: - YYDEBUG(291, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy279; - } + YYDEBUG(291, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy292; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy279; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy292; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy292: - YYDEBUG(292, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy280; - } + YYDEBUG(292, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy293; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy280; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy293; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy293: - YYDEBUG(293, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy281; - } + YYDEBUG(293, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy294; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy281; } -yy294: - YYDEBUG(294, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych <= '/') { - if(yych <= '.') goto yy276; - goto yy144; - } else { - if(yych == 'S') goto yy282; - goto yy276; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'r') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy276; - goto yy151; - } else { - if(yych <= 's') goto yy295; - if(yych <= 'z') goto yy151; - goto yy276; - } + if (yych == 'y') goto yy294; + if (yych <= 'z') goto yy151; + goto yy3; } -yy295: - YYDEBUG(295, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; + } +yy294: + YYDEBUG(294, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych <= '/') { + if (yych <= '.') goto yy276; + goto yy144; + } else { + if (yych == 'S') goto yy282; goto yy276; + } + } else { + if (yych <= 'r') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy276; + goto yy151; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy276; - if(yych <= 'z') goto yy151; + if (yych <= 's') goto yy295; + if (yych <= 'z') goto yy151; goto yy276; } + } +yy295: + YYDEBUG(295, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy276; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy276; + if (yych <= 'z') goto yy151; + goto yy276; + } yy296: - YYDEBUG(296, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy284; - } + YYDEBUG(296, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy297; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy284; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy297; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy297: - YYDEBUG(297, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy141; - goto yy285; - } + YYDEBUG(297, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy298; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; + goto yy285; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy298; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy298: - YYDEBUG(298, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'C') goto yy3; - goto yy286; - } + YYDEBUG(298, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy299; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'C') goto yy3; + goto yy286; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy299; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy299: - YYDEBUG(299, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy287; - if(yych != 'a') goto yy152; - YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; + YYDEBUG(299, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy287; + if (yych != 'a') goto yy152; + YYDEBUG(300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy138; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'c') goto yy302; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy302: + YYDEBUG(302, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych >= '\t') goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy138; + if (yych == ' ') goto yy305; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= ',') { + if (yych <= ')') goto yy136; } else { - if(yych <= 'c') goto yy302; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; } } -yy302: - YYDEBUG(302, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych >= 0x09) goto yy305; - } else { - if(yych == ' ') goto yy305; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - } + if (yych == 'E') goto yy311; + goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - } else { - if(yych == 'E') goto yy311; - goto yy139; - } + if (yych <= 'd') { + if (yych >= 'a') goto yy139; } else { - if(yych <= 'd') { - if(yych >= 'a') goto yy139; - } else { - if(yych <= 'e') goto yy311; - if(yych <= 'z') goto yy139; - } + if (yych <= 'e') goto yy311; + if (yych <= 'z') goto yy139; } } + } yy303: - YYDEBUG(303, *YYCURSOR); - { + YYDEBUG(303, *YYCURSOR); + { DEBUG_OUTPUT("monthtext"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5247,56 +5248,56 @@ yy303: return TIMELIB_DATE_TEXT; } yy304: - YYDEBUG(304, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 20) YYFILL(20); - yych = *YYCURSOR; + YYDEBUG(304, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 20) YYFILL(20); + yych = *YYCURSOR; yy305: - YYDEBUG(305, *YYCURSOR); - if(yybm[0+yych] & 32) { - goto yy304; - } - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy307; - if(yych <= '3') goto yy309; - if(yych <= '9') goto yy310; - goto yy53; + YYDEBUG(305, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy304; + } + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy307; + if (yych <= '3') goto yy309; + if (yych <= '9') goto yy310; + goto yy53; yy306: - YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy305; - if(yych <= '0') goto yy466; - if(yych <= '2') goto yy467; - if(yych <= '3') goto yy468; - goto yy305; + YYDEBUG(306, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy305; + if (yych <= '0') goto yy464; + if (yych <= '2') goto yy465; + if (yych <= '3') goto yy466; + goto yy305; yy307: - YYDEBUG(307, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy405; - goto yy406; - } else { - if(yych <= '2') goto yy464; - if(yych <= '9') goto yy465; - goto yy325; - } + YYDEBUG(307, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy405; + goto yy406; + } else { + if (yych <= '2') goto yy462; + if (yych <= '9') goto yy463; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy308: - YYDEBUG(308, *YYCURSOR); - { + YYDEBUG(308, *YYCURSOR); + { DEBUG_OUTPUT("datetextual | datenoyear"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5308,278 +5309,274 @@ yy308: return TIMELIB_DATE_TEXT; } yy309: - YYDEBUG(309, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy405; - goto yy406; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(309, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy405; + goto yy406; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy310: - YYDEBUG(310, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy316; - goto yy317; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(310, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy316; + goto yy317; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy311: - YYDEBUG(311, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - } + YYDEBUG(311, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'm') goto yy312; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'm') goto yy312; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy312: - YYDEBUG(312, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - } + YYDEBUG(312, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'b') goto yy313; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; } -yy313: - YYDEBUG(313, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'E') goto yy314; - if(yych != 'e') goto yy3; + if (yych <= 'b') goto yy313; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy313: + YYDEBUG(313, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'E') goto yy314; + if (yych != 'e') goto yy3; + } yy314: - YYDEBUG(314, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych != 'r') goto yy53; + YYDEBUG(314, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych != 'r') goto yy53; yy315: - YYDEBUG(315, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; + YYDEBUG(315, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy303; goto yy305; } else { - if(yych <= '.') { - if(yych <= ',') goto yy303; - goto yy305; - } else { - if(yych <= '/') goto yy303; - if(yych <= '9') goto yy305; - goto yy303; - } + if (yych <= '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } + } yy316: - YYDEBUG(316, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy403; - if(yych <= '9') goto yy404; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '0') goto yy403; + if (yych <= '9') goto yy404; + if (yych <= ':') goto yy330; + goto yy53; + } yy317: - YYDEBUG(317, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy404; - if(yych <= '9') goto yy403; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '2') goto yy404; + if (yych <= '9') goto yy403; + if (yych <= ':') goto yy371; + goto yy53; + } yy318: - YYDEBUG(318, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy403; - if(yych <= '9') goto yy400; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '3') goto yy403; + if (yych <= '9') goto yy400; + if (yych <= ':') goto yy371; + goto yy53; + } yy319: - YYDEBUG(319, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy400; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '9') goto yy400; + if (yych <= ':') goto yy371; + goto yy53; + } yy320: - YYDEBUG(320, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(320, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy321: - YYDEBUG(321, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(321, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy322: - YYDEBUG(322, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(322, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy323: - YYDEBUG(323, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(323, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy324: - YYDEBUG(324, *YYCURSOR); - yyaccept = 7; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 17) YYFILL(17); - yych = *YYCURSOR; + YYDEBUG(324, *YYCURSOR); + yyaccept = 7; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17); + yych = *YYCURSOR; yy325: - YYDEBUG(325, *YYCURSOR); - if(yybm[0+yych] & 64) { - goto yy324; - } - if(yych <= '2') { - if(yych <= '/') goto yy308; - if(yych <= '0') goto yy366; - if(yych <= '1') goto yy367; - goto yy368; - } else { - if(yych <= '9') goto yy369; - if(yych != 'T') goto yy308; - } - YYDEBUG(326, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy327; - if(yych <= '2') goto yy328; - if(yych <= '9') goto yy329; - goto yy53; + YYDEBUG(325, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy324; + } + if (yych <= '2') { + if (yych <= '/') goto yy308; + if (yych <= '0') goto yy366; + if (yych <= '1') goto yy367; + goto yy368; + } else { + if (yych <= '9') goto yy369; + if (yych != 'T') goto yy308; + } + YYDEBUG(326, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy327; + if (yych <= '2') goto yy328; + if (yych <= '9') goto yy329; + goto yy53; yy327: - YYDEBUG(327, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy53; - } else { - if(yych <= '9') goto yy329; - if(yych <= ':') goto yy330; - goto yy53; - } + YYDEBUG(327, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '9') goto yy329; + if (yych <= ':') goto yy330; + goto yy53; + } yy328: - YYDEBUG(328, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy53; - } else { - if(yych <= '3') goto yy329; - if(yych == ':') goto yy330; - goto yy53; - } + YYDEBUG(328, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '3') goto yy329; + if (yych == ':') goto yy330; + goto yy53; + } yy329: - YYDEBUG(329, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '.') goto yy330; - if(yych != ':') goto yy53; + YYDEBUG(329, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy330; + if (yych != ':') goto yy53; yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy331; - if(yych <= '9') goto yy333; - goto yy53; + YYDEBUG(330, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy331; + if (yych <= '9') goto yy333; + goto yy53; yy331: - YYDEBUG(331, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - } else { - if(yych <= '9') goto yy333; - if(yych <= ':') goto yy334; - } + YYDEBUG(331, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + } else { + if (yych <= '9') goto yy333; + if (yych <= ':') goto yy334; + } yy332: - YYDEBUG(332, *YYCURSOR); - { + YYDEBUG(332, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); TIMELIB_INIT; @@ -5608,616 +5605,616 @@ yy332: return TIMELIB_SHORTDATE_WITH_TIME; } yy333: - YYDEBUG(333, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy334; - if(yych != ':') goto yy332; + YYDEBUG(333, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy334; + if (yych != ':') goto yy332; yy334: - YYDEBUG(334, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy335; - if(yych <= '6') goto yy336; - if(yych <= '9') goto yy337; - goto yy53; + YYDEBUG(334, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy335; + if (yych <= '6') goto yy336; + if (yych <= '9') goto yy337; + goto yy53; yy335: - YYDEBUG(335, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy338; - goto yy332; + YYDEBUG(335, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy338; + goto yy332; yy336: - YYDEBUG(336, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy338; - goto yy332; + YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy338; + goto yy332; yy337: - YYDEBUG(337, *YYCURSOR); - yych = *++YYCURSOR; - goto yy332; + YYDEBUG(337, *YYCURSOR); + yych = *++YYCURSOR; + goto yy332; yy338: - YYDEBUG(338, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy332; - } else { - if(yych <= ' ') goto yy339; - if(yych == '(') goto yy342; - goto yy332; - } + YYDEBUG(338, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy332; + } else { + if (yych <= ' ') goto yy339; + if (yych == '(') goto yy342; + goto yy332; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy332; + if (yych <= '-') goto yy341; + goto yy332; } else { - if(yych <= '@') { - if(yych == ',') goto yy332; - if(yych <= '-') goto yy341; - goto yy332; - } else { - if(yych <= 'Z') goto yy343; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy344; - goto yy332; - } + if (yych <= 'Z') goto yy343; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy344; + goto yy332; } + } yy339: - YYDEBUG(339, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; - YYDEBUG(340, *YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy339; - goto yy53; - } else { - if(yych <= ' ') goto yy339; - if(yych == '(') goto yy342; - goto yy53; - } + YYDEBUG(339, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; + YYDEBUG(340, *YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy339; + goto yy53; } else { - if(yych <= '@') { - if(yych == ',') goto yy53; - if(yych >= '.') goto yy53; - } else { - if(yych <= 'Z') goto yy343; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych <= ' ') goto yy339; + if (yych == '(') goto yy342; + goto yy53; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy53; + if (yych >= '.') goto yy53; + } else { + if (yych <= 'Z') goto yy343; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy344; + goto yy53; } + } yy341: - YYDEBUG(341, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy361; - if(yych <= '2') goto yy362; - if(yych <= '9') goto yy363; - goto yy53; + YYDEBUG(341, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy361; + if (yych <= '2') goto yy362; + if (yych <= '9') goto yy363; + goto yy53; yy342: - YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') goto yy53; - if(yych <= 'Z') goto yy344; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy344; - goto yy53; + YYDEBUG(342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') goto yy53; + if (yych <= 'Z') goto yy344; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy344; + goto yy53; yy343: - YYDEBUG(343, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy345; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy350; - goto yy332; - } + YYDEBUG(343, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy345; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy350; + goto yy332; + } yy344: - YYDEBUG(344, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy345; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(344, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy345; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy345: - YYDEBUG(345, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(345, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy346: - YYDEBUG(346, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy347; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(346, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy347; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy347: - YYDEBUG(347, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy348; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(347, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy348; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy348: - YYDEBUG(348, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy349; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } -yy349: - YYDEBUG(349, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy337; + YYDEBUG(348, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; goto yy332; + } else { + if (yych <= 'Z') goto yy349; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } +yy349: + YYDEBUG(349, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy337; + goto yy332; yy350: - YYDEBUG(350, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } + YYDEBUG(350, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy346; + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy346; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } + } yy351: - YYDEBUG(351, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych != '/') goto yy332; - } + YYDEBUG(351, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy347; - if(yych <= '^') goto yy332; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy356; - goto yy332; - } + if (yych != '/') goto yy332; } -yy352: - YYDEBUG(352, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '@') goto yy53; - if(yych >= '[') goto yy53; - YYDEBUG(353, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '`') goto yy53; - if(yych >= '{') goto yy53; -yy354: - YYDEBUG(354, *YYCURSOR); - yyaccept = 8; - YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(355, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy352; - goto yy332; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy347; + if (yych <= '^') goto yy332; } else { - if(yych <= '_') goto yy352; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy354; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy356; goto yy332; } + } +yy352: + YYDEBUG(352, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy53; + if (yych >= '[') goto yy53; + YYDEBUG(353, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '`') goto yy53; + if (yych >= '{') goto yy53; +yy354: + YYDEBUG(354, *YYCURSOR); + yyaccept = 8; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(355, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy352; + goto yy332; + } else { + if (yych <= '_') goto yy352; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy354; + goto yy332; + } yy356: - YYDEBUG(356, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } - } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy348; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(356, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; } - YYDEBUG(357, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy348; + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy349; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } - YYDEBUG(358, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy337; - if(yych <= '.') goto yy332; + } + YYDEBUG(357, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy349; + if (yych <= '^') goto yy332; goto yy352; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } -yy359: - YYDEBUG(359, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(360, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy352; - goto yy53; + } + YYDEBUG(358, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy337; + if (yych <= '.') goto yy332; + goto yy352; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') goto yy352; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy359; - goto yy53; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } + } +yy359: + YYDEBUG(359, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(360, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy352; + goto yy53; + } else { + if (yych <= '_') goto yy352; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy359; + goto yy53; + } yy361: - YYDEBUG(361, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy363; - if(yych <= ':') goto yy364; - goto yy332; + YYDEBUG(361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy363; + if (yych <= ':') goto yy364; + goto yy332; yy362: - YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy332; - if(yych >= '4') goto yy365; - } else { - if(yych <= '9') goto yy337; - if(yych <= ':') goto yy364; - goto yy332; - } + YYDEBUG(362, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy332; + if (yych >= '4') goto yy365; + } else { + if (yych <= '9') goto yy337; + if (yych <= ':') goto yy364; + goto yy332; + } yy363: - YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '5') goto yy365; - if(yych <= '9') goto yy337; - if(yych >= ';') goto yy332; + YYDEBUG(363, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '5') goto yy365; + if (yych <= '9') goto yy337; + if (yych >= ';') goto yy332; yy364: - YYDEBUG(364, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '5') goto yy365; - if(yych <= '9') goto yy337; - goto yy332; + YYDEBUG(364, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '5') goto yy365; + if (yych <= '9') goto yy337; + goto yy332; yy365: - YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy337; - goto yy332; + YYDEBUG(365, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy337; + goto yy332; yy366: - YYDEBUG(366, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy398; - if(yych <= '9') goto yy399; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(366, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy308; + } else { + if (yych <= '0') goto yy398; + if (yych <= '9') goto yy399; + if (yych <= ':') goto yy330; + goto yy308; + } yy367: - YYDEBUG(367, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy399; - if(yych <= '9') goto yy398; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(367, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '2') goto yy399; + if (yych <= '9') goto yy398; + if (yych <= ':') goto yy371; + goto yy308; + } yy368: - YYDEBUG(368, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy398; - if(yych <= '9') goto yy370; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(368, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '3') goto yy398; + if (yych <= '9') goto yy370; + if (yych <= ':') goto yy371; + goto yy308; + } yy369: - YYDEBUG(369, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych <= ':') goto yy371; - goto yy308; - } -yy370: - YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; + YYDEBUG(369, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych <= ':') goto yy371; goto yy308; + } +yy370: + YYDEBUG(370, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy308; yy371: - YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy372; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(371, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy372; + if (yych <= '9') goto yy373; + goto yy53; yy372: - YYDEBUG(372, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy389; - if(yych <= ':') goto yy374; - goto yy332; - } + YYDEBUG(372, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy389; + if (yych <= ':') goto yy374; + goto yy332; + } yy373: - YYDEBUG(373, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy374; - if(yych != ':') goto yy332; + YYDEBUG(373, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy374; + if (yych != ':') goto yy332; yy374: - YYDEBUG(374, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy375; - if(yych <= '6') goto yy376; - if(yych <= '9') goto yy337; - goto yy53; + YYDEBUG(374, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy375; + if (yych <= '6') goto yy376; + if (yych <= '9') goto yy337; + goto yy53; yy375: - YYDEBUG(375, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy377; - goto yy332; + YYDEBUG(375, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy377; + goto yy332; yy376: - YYDEBUG(376, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy332; + YYDEBUG(376, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy332; yy377: - YYDEBUG(377, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy379; - goto yy332; - } else { - if(yych <= ' ') goto yy379; - if(yych == '(') goto yy379; - goto yy332; - } + YYDEBUG(377, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy379; + goto yy332; } else { - if(yych <= '@') { - if(yych == ',') goto yy332; - if(yych <= '-') goto yy379; - goto yy332; - } else { - if(yych <= 'Z') goto yy379; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy379; - goto yy332; - } + if (yych <= ' ') goto yy379; + if (yych == '(') goto yy379; + goto yy332; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy332; + if (yych <= '-') goto yy379; + goto yy332; + } else { + if (yych <= 'Z') goto yy379; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy379; + goto yy332; } + } yy378: - YYDEBUG(378, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; + YYDEBUG(378, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; yy379: - YYDEBUG(379, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy378; - } else { - if(yych == ' ') goto yy378; - goto yy53; - } - } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } + YYDEBUG(379, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy378; + } else { + if (yych == ' ') goto yy378; + goto yy53; } } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy381; - goto yy344; - } else { - if(yych <= 'p') goto yy381; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych == ',') goto yy53; + goto yy341; } } - YYDEBUG(380, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= '.') goto yy382; - if(yych <= '@') goto yy332; - goto yy345; + if (yych != 'P') goto yy343; } } else { - if(yych <= '`') { - if(yych <= 'M') goto yy383; - if(yych <= 'Z') goto yy345; - goto yy332; + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy381; + goto yy344; } else { - if(yych == 'm') goto yy388; - if(yych <= 'z') goto yy350; - goto yy332; + if (yych <= 'p') goto yy381; + if (yych <= 'z') goto yy344; + goto yy53; } } -yy381: - YYDEBUG(381, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy382; - if(yych <= '@') goto yy332; - goto yy345; - } + } + YYDEBUG(380, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy383; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy383; - if(yych <= 'z') goto yy345; - goto yy332; - } + if (yych <= '.') goto yy382; + if (yych <= '@') goto yy332; + goto yy345; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy383; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy388; + if (yych <= 'z') goto yy350; + goto yy332; + } + } +yy381: + YYDEBUG(381, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= '.') goto yy382; + if (yych <= '@') goto yy332; + goto yy345; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy383; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy383; + if (yych <= 'z') goto yy345; + goto yy332; } + } yy382: - YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy387; - if(yych == 'm') goto yy387; - goto yy53; + YYDEBUG(382, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy387; + if (yych == 'm') goto yy387; + goto yy53; yy383: - YYDEBUG(383, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych != '.') goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; - } + YYDEBUG(383, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; + goto yy385; + } else { + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy384: - YYDEBUG(384, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= '@') { + if (yych != '.') goto yy332; } else { - if(yych != ' ') goto yy53; + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; } + } +yy384: + YYDEBUG(384, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + } else { + if (yych != ' ') goto yy53; + } yy385: - YYDEBUG(385, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(386, *YYCURSOR); - { + YYDEBUG(385, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(386, *YYCURSOR); + { DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -6240,181 +6237,178 @@ yy385: return TIMELIB_SHORTDATE_WITH_TIME; } yy387: - YYDEBUG(387, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; + YYDEBUG(387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych == '.') goto yy384; + goto yy53; + } +yy388: + YYDEBUG(388, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; } else { - if(yych <= ' ') goto yy385; - if(yych == '.') goto yy384; - goto yy53; + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; } -yy388: - YYDEBUG(388, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy384; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; goto yy332; } - } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy384; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } - } } + } yy389: - YYDEBUG(389, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy332; - } else { - if(yych == '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; - } + YYDEBUG(389, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy332; + } else { + if (yych == '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy332; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy332; + if (yych <= 'a') { + if (yych <= '`') goto yy332; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy332; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy332; - } + if (yych == 'p') goto yy392; + goto yy332; } } + } yy390: - YYDEBUG(390, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(391, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy390; - goto yy53; - } else { - if(yych <= ' ') goto yy390; - if(yych <= '@') goto yy53; - } + YYDEBUG(390, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(391, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy390; + goto yy53; } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy392; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy390; + if (yych <= '@') goto yy53; } -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych <= 'M') goto yy394; - if(yych == 'm') goto yy394; - goto yy53; + if (yych <= 'a') goto yy392; + if (yych != 'p') goto yy53; } + } +yy392: + YYDEBUG(392, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy394; + if (yych == 'm') goto yy394; + goto yy53; + } yy393: - YYDEBUG(393, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy394; - if(yych != 'm') goto yy53; + YYDEBUG(393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy394; + if (yych != 'm') goto yy53; yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; - } else { - if(yych <= ' ') goto yy385; - if(yych != '.') goto yy53; - } + YYDEBUG(394, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych != '.') goto yy53; + } yy395: - YYDEBUG(395, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; - goto yy385; - } else { - if(yych == ' ') goto yy385; - goto yy53; - } + YYDEBUG(395, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + goto yy385; + } else { + if (yych == ' ') goto yy385; + goto yy53; + } yy396: - YYDEBUG(396, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych >= ':') goto yy308; -yy397: - YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - goto yy308; + YYDEBUG(396, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy308; + if (yych >= ':') goto yy308; + YYDEBUG(397, *YYCURSOR); + yych = *++YYCURSOR; + goto yy308; yy398: - YYDEBUG(398, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(398, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy330; + goto yy308; + } yy399: - YYDEBUG(399, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(399, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy371; + goto yy308; + } yy400: - YYDEBUG(400, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych >= ':') goto yy308; + YYDEBUG(400, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy401: - YYDEBUG(401, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy402; - if(yych <= '9') goto yy397; + YYDEBUG(401, *YYCURSOR); + ++YYCURSOR; yy402: - YYDEBUG(402, *YYCURSOR); - { + YYDEBUG(402, *YYCURSOR); + { DEBUG_OUTPUT("datenoday"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -6426,1241 +6420,1207 @@ yy402: return TIMELIB_DATE_NO_DAY; } yy403: - YYDEBUG(403, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '9') goto yy401; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy330; + goto yy53; + } yy404: - YYDEBUG(404, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy371; + goto yy53; + } +yy405: + YYDEBUG(405, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy438; + goto yy325; } else { - if(yych <= '9') goto yy401; - if(yych <= ':') goto yy371; - goto yy308; + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy405: - YYDEBUG(405, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy440; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy330; + if (yych == 'n') goto yy321; + goto yy325; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy330; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy406: - YYDEBUG(406, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych != '.') goto yy325; - } else { - if(yych <= '0') goto yy408; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + YYDEBUG(406, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych != '.') goto yy325; + } else { + if (yych <= '0') goto yy408; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy407: - YYDEBUG(407, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy415; - goto yy416; - } else { - if(yych <= '2') goto yy417; - if(yych <= '5') goto yy418; - if(yych <= '9') goto yy419; + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; goto yy325; } + } +yy407: + YYDEBUG(407, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy413; + goto yy414; + } else { + if (yych <= '2') goto yy415; + if (yych <= '5') goto yy416; + if (yych <= '9') goto yy417; + goto yy325; + } yy408: - YYDEBUG(408, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '0') goto yy413; - if(yych <= '9') goto yy414; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(408, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '0') goto yy411; + if (yych <= '9') goto yy412; + if (yych <= ':') goto yy371; + goto yy53; + } yy409: - YYDEBUG(409, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy414; - if(yych <= '9') goto yy413; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(409, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '2') goto yy412; + if (yych <= '9') goto yy411; + if (yych <= ':') goto yy371; + goto yy53; + } yy410: - YYDEBUG(410, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy413; - if(yych <= '9') goto yy412; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(410, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '3') goto yy411; + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy371; + goto yy53; + } yy411: - YYDEBUG(411, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy412; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(411, *YYCURSOR); + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy330; + if (yych == ':') goto yy330; + goto yy402; yy412: - YYDEBUG(412, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy402; - if(yych <= '9') goto yy396; - goto yy402; + YYDEBUG(412, *YYCURSOR); + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy371; + if (yych == ':') goto yy371; + goto yy402; yy413: - YYDEBUG(413, *YYCURSOR); - yyaccept = 9; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy402; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy330; - goto yy402; - } + YYDEBUG(413, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy433; + goto yy308; + } else { + if (yych <= '0') goto yy432; + if (yych <= '9') goto yy437; + if (yych <= ':') goto yy433; + goto yy308; + } yy414: - YYDEBUG(414, *YYCURSOR); - yyaccept = 9; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy402; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy371; - goto yy402; - } + YYDEBUG(414, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '2') goto yy437; + if (yych <= '9') goto yy432; + if (yych <= ':') goto yy418; + goto yy308; + } yy415: - YYDEBUG(415, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy435; - goto yy308; - } else { - if(yych <= '0') goto yy434; - if(yych <= '9') goto yy439; - if(yych <= ':') goto yy435; - goto yy308; - } + YYDEBUG(415, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '3') goto yy432; + if (yych <= '9') goto yy431; + if (yych <= ':') goto yy418; + goto yy308; + } yy416: - YYDEBUG(416, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '2') goto yy439; - if(yych <= '9') goto yy434; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(416, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '9') goto yy431; + if (yych <= ':') goto yy418; + goto yy308; + } yy417: - YYDEBUG(417, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '3') goto yy434; - if(yych <= '9') goto yy433; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(417, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych >= ';') goto yy308; + } yy418: - YYDEBUG(418, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '9') goto yy433; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy419; + if (yych <= '6') goto yy420; + if (yych <= '9') goto yy373; + goto yy53; yy419: - YYDEBUG(419, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych >= ';') goto yy308; - } + YYDEBUG(419, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy421; + if (yych <= ':') goto yy374; + goto yy332; + } yy420: - YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy421; - if(yych <= '6') goto yy422; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(420, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '0') goto yy377; + if (yych == ':') goto yy374; + goto yy332; + } yy421: - YYDEBUG(421, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy423; - if(yych <= ':') goto yy374; - goto yy332; + YYDEBUG(421, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy423; + if (yych <= 0x1F) goto yy332; + goto yy423; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy423; + } else { + if (yych == '+') goto yy423; + goto yy332; + } } -yy422: - YYDEBUG(422, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '0') goto yy377; - if(yych == ':') goto yy374; - goto yy332; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy423; + if (yych <= '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy423; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy423; + goto yy332; + } } + } +yy422: + YYDEBUG(422, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; yy423: - YYDEBUG(423, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy425; - if(yych <= 0x1F) goto yy332; - goto yy425; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy425; - } else { - if(yych == '+') goto yy425; - goto yy332; - } + YYDEBUG(423, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy422; + } else { + if (yych == ' ') goto yy422; + goto yy53; } } else { - if(yych <= ':') { - if(yych <= '-') goto yy425; - if(yych <= '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy425; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy425; - goto yy332; - } + if (yych == ',') goto yy53; + goto yy341; } } -yy424: - YYDEBUG(424, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; -yy425: - YYDEBUG(425, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy424; - } else { - if(yych == ' ') goto yy424; - goto yy53; - } + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } + if (yych != 'P') goto yy343; } } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy425; + goto yy344; } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy427; - goto yy344; - } else { - if(yych <= 'p') goto yy427; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych <= 'p') goto yy425; + if (yych <= 'z') goto yy344; + goto yy53; } } - YYDEBUG(426, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy429; - if(yych <= '@') goto yy332; - goto yy345; - } + } + YYDEBUG(424, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy428; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy432; - if(yych <= 'z') goto yy350; - goto yy332; - } + if (yych <= '.') goto yy427; + if (yych <= '@') goto yy332; + goto yy345; } -yy427: - YYDEBUG(427, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy429; - if(yych <= '@') goto yy332; - goto yy345; - } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy426; + if (yych <= 'Z') goto yy345; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy428; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy428; - if(yych <= 'z') goto yy345; - goto yy332; - } - } -yy428: - YYDEBUG(428, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych == '.') goto yy431; - goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; - } + if (yych == 'm') goto yy430; + if (yych <= 'z') goto yy350; + goto yy332; } -yy429: - YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy430; - if(yych != 'm') goto yy53; -yy430: - YYDEBUG(430, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; + } +yy425: + YYDEBUG(425, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= ' ') goto yy385; - if(yych != '.') goto yy53; + if (yych <= '.') goto yy427; + if (yych <= '@') goto yy332; + goto yy345; } -yy431: - YYDEBUG(431, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy426; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy426; + if (yych <= 'z') goto yy345; + goto yy332; + } + } +yy426: + YYDEBUG(426, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; goto yy385; } else { - if(yych == ' ') goto yy385; - goto yy53; + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy432: - YYDEBUG(432, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= '@') { + if (yych == '.') goto yy429; + goto yy332; + } else { + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; + } + } +yy427: + YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy428; + if (yych != 'm') goto yy53; +yy428: + YYDEBUG(428, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych != '.') goto yy53; + } +yy429: + YYDEBUG(429, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + goto yy385; + } else { + if (yych == ' ') goto yy385; + goto yy53; + } +yy430: + YYDEBUG(430, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; + } else { + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; + } + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy429; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; goto yy332; } - } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy431; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; + } + } +yy431: + YYDEBUG(431, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; + } else { + if (yych <= '.') { + if (yych <= '-') goto yy308; + goto yy374; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy374; } } -yy433: - YYDEBUG(433, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - goto yy374; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - goto yy374; - } - } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } -yy434: - YYDEBUG(434, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - } + } +yy432: + YYDEBUG(432, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; + } else { + if (yych <= '.') { + if (yych <= '-') goto yy308; + } else { + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; } + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } + } +yy433: + YYDEBUG(433, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy434; + if (yych <= '6') goto yy435; + if (yych <= '9') goto yy333; + goto yy53; +yy434: + YYDEBUG(434, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '9') goto yy436; + if (yych <= ':') goto yy334; + goto yy332; + } yy435: - YYDEBUG(435, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy436; - if(yych <= '6') goto yy437; - if(yych <= '9') goto yy333; - goto yy53; + YYDEBUG(435, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '0') goto yy377; + if (yych == ':') goto yy334; + goto yy332; + } yy436: - YYDEBUG(436, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy332; - } else { - if(yych <= '9') goto yy438; - if(yych <= ':') goto yy334; - goto yy332; - } -yy437: - YYDEBUG(437, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy332; - } else { - if(yych <= '0') goto yy377; - if(yych == ':') goto yy334; - goto yy332; + YYDEBUG(436, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy379; + if (yych <= 0x1F) goto yy332; + goto yy379; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy379; + } else { + if (yych == '+') goto yy379; + goto yy332; + } } -yy438: - YYDEBUG(438, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy379; - if(yych <= 0x1F) goto yy332; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy379; + if (yych <= '.') goto yy334; + if (yych <= '9') goto yy332; + goto yy334; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; goto yy379; } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy379; - } else { - if(yych == '+') goto yy379; - goto yy332; - } + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy379; + goto yy332; } + } + } +yy437: + YYDEBUG(437, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; } else { - if(yych <= ':') { - if(yych <= '-') goto yy379; - if(yych <= '.') goto yy334; - if(yych <= '9') goto yy332; - goto yy334; + if (yych <= '.') { + if (yych <= '-') goto yy308; + goto yy418; } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy379; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy379; - goto yy332; - } + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy418; } } -yy439: - YYDEBUG(439, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - goto yy420; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - goto yy420; - } - } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } + } +yy438: + YYDEBUG(438, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy440; + goto yy441; + } else { + if (yych <= '2') goto yy442; + if (yych <= '5') goto yy443; + if (yych <= '9') goto yy444; + goto yy325; + } +yy439: + YYDEBUG(439, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '0') goto yy411; + if (yych <= '9') goto yy412; + if (yych <= ':') goto yy330; + goto yy53; + } yy440: - YYDEBUG(440, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy442; - goto yy443; - } else { - if(yych <= '2') goto yy444; - if(yych <= '5') goto yy445; - if(yych <= '9') goto yy446; - goto yy325; - } + YYDEBUG(440, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy457; + goto yy308; + } else { + if (yych <= '0') goto yy456; + if (yych <= '9') goto yy461; + if (yych <= ':') goto yy457; + goto yy308; + } yy441: - YYDEBUG(441, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy413; - if(yych <= '9') goto yy414; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(441, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '2') goto yy461; + if (yych <= '9') goto yy456; + if (yych <= ':') goto yy445; + goto yy308; + } yy442: - YYDEBUG(442, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy459; - goto yy308; - } else { - if(yych <= '0') goto yy458; - if(yych <= '9') goto yy463; - if(yych <= ':') goto yy459; - goto yy308; - } + YYDEBUG(442, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '3') goto yy456; + if (yych <= '9') goto yy455; + if (yych <= ':') goto yy445; + goto yy308; + } yy443: - YYDEBUG(443, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '2') goto yy463; - if(yych <= '9') goto yy458; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(443, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '9') goto yy455; + if (yych <= ':') goto yy445; + goto yy308; + } yy444: - YYDEBUG(444, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '3') goto yy458; - if(yych <= '9') goto yy457; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(444, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych >= ';') goto yy308; + } yy445: - YYDEBUG(445, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '9') goto yy457; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(445, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy446; + if (yych <= '6') goto yy447; + if (yych <= '9') goto yy373; + goto yy53; yy446: - YYDEBUG(446, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych >= ';') goto yy308; - } + YYDEBUG(446, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy448; + if (yych <= ':') goto yy374; + goto yy332; + } yy447: - YYDEBUG(447, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy448; - if(yych <= '6') goto yy449; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(447, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '0') goto yy338; + if (yych == ':') goto yy374; + goto yy332; + } yy448: - YYDEBUG(448, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy450; - if(yych <= ':') goto yy374; - goto yy332; - } -yy449: - YYDEBUG(449, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '0') goto yy338; - if(yych == ':') goto yy374; - goto yy332; - } -yy450: - YYDEBUG(450, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy452; - if(yych <= 0x1F) goto yy332; - goto yy452; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy452; - } else { - if(yych == '+') goto yy452; - goto yy332; - } - } - } else { - if(yych <= ':') { - if(yych <= '-') goto yy452; - if(yych <= '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; - } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy452; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy452; - goto yy332; - } - } - } -yy451: - YYDEBUG(451, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; -yy452: - YYDEBUG(452, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy451; - } else { - if(yych == ' ') goto yy451; - goto yy53; - } - } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } - } - } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } - } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy454; - goto yy344; - } else { - if(yych <= 'p') goto yy454; - if(yych <= 'z') goto yy344; - goto yy53; - } - } - } - YYDEBUG(453, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; + YYDEBUG(448, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy450; + if (yych <= 0x1F) goto yy332; + goto yy450; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy450; + } else { + if (yych == '+') goto yy450; goto yy332; - } else { - if(yych <= '.') goto yy393; - if(yych <= '@') goto yy332; - goto yy345; } - } else { - if(yych <= '`') { - if(yych <= 'M') goto yy455; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy456; - if(yych <= 'z') goto yy350; + } + } else { + if (yych <= ':') { + if (yych <= '-') goto yy450; + if (yych <= '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy450; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy450; goto yy332; } } -yy454: - YYDEBUG(454, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy393; - if(yych <= '@') goto yy332; - goto yy345; + } +yy449: + YYDEBUG(449, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; +yy450: + YYDEBUG(450, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy449; + } else { + if (yych == ' ') goto yy449; + goto yy53; } } else { - if(yych <= '`') { - if(yych <= 'M') goto yy455; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy455; - if(yych <= 'z') goto yy345; - goto yy332; - } - } -yy455: - YYDEBUG(455, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych == '.') goto yy395; - goto yy332; + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; + if (yych == ',') goto yy53; + goto yy341; } } -yy456: - YYDEBUG(456, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; - goto yy332; + if (yych != 'P') goto yy343; } } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy395; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy452; + goto yy344; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } + if (yych <= 'p') goto yy452; + if (yych <= 'z') goto yy344; + goto yy53; } } -yy457: - YYDEBUG(457, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy308; + } + YYDEBUG(451, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy334; - goto yy308; + if (yych <= '.') goto yy393; + if (yych <= '@') goto yy332; + goto yy345; } -yy458: - YYDEBUG(458, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy453; + if (yych <= 'Z') goto yy345; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych >= ';') goto yy308; + if (yych == 'm') goto yy454; + if (yych <= 'z') goto yy350; + goto yy332; } -yy459: - YYDEBUG(459, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy460; - if(yych <= '6') goto yy461; - if(yych <= '9') goto yy333; - goto yy53; -yy460: - YYDEBUG(460, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; + } +yy452: + YYDEBUG(452, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; goto yy332; } else { - if(yych <= '9') goto yy462; - if(yych <= ':') goto yy334; - goto yy332; + if (yych <= '.') goto yy393; + if (yych <= '@') goto yy332; + goto yy345; } -yy461: - YYDEBUG(461, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy453; + if (yych <= 'Z') goto yy345; goto yy332; } else { - if(yych <= '0') goto yy338; - if(yych == ':') goto yy334; + if (yych == 'm') goto yy453; + if (yych <= 'z') goto yy345; goto yy332; } -yy462: - YYDEBUG(462, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy339; - if(yych <= 0x1F) goto yy332; - goto yy339; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy342; - } else { - if(yych == '+') goto yy341; - goto yy332; - } - } + } +yy453: + YYDEBUG(453, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; + goto yy385; } else { - if(yych <= ':') { - if(yych <= '-') goto yy341; - if(yych <= '.') goto yy334; - if(yych <= '9') goto yy332; - goto yy334; - } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy343; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy344; - goto yy332; - } - } + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy463: - YYDEBUG(463, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; + } else { + if (yych <= '@') { + if (yych == '.') goto yy395; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy447; - goto yy308; + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; } -yy464: - YYDEBUG(464, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + } +yy454: + YYDEBUG(454, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; } -yy465: - YYDEBUG(465, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy407; - goto yy325; + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy395; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; + goto yy332; } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; + } + } +yy455: + YYDEBUG(455, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy334; + goto yy308; + } +yy456: + YYDEBUG(456, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych >= ';') goto yy308; + } +yy457: + YYDEBUG(457, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy458; + if (yych <= '6') goto yy459; + if (yych <= '9') goto yy333; + goto yy53; +yy458: + YYDEBUG(458, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '9') goto yy460; + if (yych <= ':') goto yy334; + goto yy332; + } +yy459: + YYDEBUG(459, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '0') goto yy338; + if (yych == ':') goto yy334; + goto yy332; + } +yy460: + YYDEBUG(460, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy339; + if (yych <= 0x1F) goto yy332; + goto yy339; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy342; + } else { + if (yych == '+') goto yy341; + goto yy332; } } -yy466: - YYDEBUG(466, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy469; - goto yy470; - } else { - if(yych <= '2') goto yy477; - if(yych <= '9') goto yy478; - goto yy325; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy341; + if (yych <= '.') goto yy334; + if (yych <= '9') goto yy332; + goto yy334; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy343; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy344; + goto yy332; } + } + } +yy461: + YYDEBUG(461, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy445; + goto yy308; + } +yy462: + YYDEBUG(462, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy407; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy463: + YYDEBUG(463, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy464: + YYDEBUG(464, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy467; + goto yy468; + } else { + if (yych <= '2') goto yy475; + if (yych <= '9') goto yy476; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy465: + YYDEBUG(465, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy467; + goto yy468; + } else { + if (yych <= '2') goto yy475; + if (yych <= '9') goto yy476; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy466: + YYDEBUG(466, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych >= '1') goto yy468; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy467: - YYDEBUG(467, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy469; - goto yy470; - } else { - if(yych <= '2') goto yy477; - if(yych <= '9') goto yy478; - goto yy325; - } + YYDEBUG(467, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy438; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy330; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy468: - YYDEBUG(468, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych >= '1') goto yy470; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(468, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy408; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy469: - YYDEBUG(469, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy440; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy330; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } - } -yy470: - YYDEBUG(470, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy408; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } +yy469: + YYDEBUG(469, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(470, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy471; + if (yych <= '9') goto yy472; yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy473; - if(yych <= '9') goto yy474; -yy473: - YYDEBUG(473, *YYCURSOR); - { + YYDEBUG(471, *YYCURSOR); + { DEBUG_OUTPUT("pgtextshort"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -7671,1887 +7631,1887 @@ yy473: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy473; - if(yych >= ':') goto yy473; - YYDEBUG(475, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy473; - if(yych >= ':') goto yy473; - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - goto yy473; +yy472: + YYDEBUG(472, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy471; + if (yych >= ':') goto yy471; + YYDEBUG(473, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy471; + if (yych >= ':') goto yy471; + YYDEBUG(474, *YYCURSOR); + yych = *++YYCURSOR; + goto yy471; +yy475: + YYDEBUG(475, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy476: + YYDEBUG(476, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } yy477: - YYDEBUG(477, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + YYDEBUG(477, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy138; + goto yy302; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'c') goto yy478; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy478: - YYDEBUG(478, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; + YYDEBUG(478, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; + if (yych == '/') goto yy144; + goto yy305; } } -yy479: - YYDEBUG(479, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy138; - goto yy302; + if (yych <= 'E') goto yy311; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 'c') goto yy480; - if(yych <= 'z') goto yy143; - goto yy3; + if (yych <= 'e') goto yy479; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy479: + YYDEBUG(479, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + goto yy312; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'm') goto yy480; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy480: - YYDEBUG(480, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(480, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy311; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy481; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; + goto yy313; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy481; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy481: - YYDEBUG(481, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - goto yy312; - } + YYDEBUG(481, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy482; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'D') goto yy3; + goto yy314; } -yy482: - YYDEBUG(482, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - goto yy313; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy483; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'e') goto yy482; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy482: + YYDEBUG(482, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych != 'r') goto yy152; yy483: - YYDEBUG(483, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'D') goto yy3; - goto yy314; - } + YYDEBUG(483, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy484; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy151; + goto yy303; } + } yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych != 'r') goto yy152; + YYDEBUG(484, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 't') goto yy485; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy485: - YYDEBUG(485, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; - } else { - if(yych <= ' ') goto yy305; - if(yych <= ',') goto yy303; + YYDEBUG(485, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; + } else { + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy151; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; + if (yych != 'O') goto yy139; } } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'n') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') goto yy487; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'o') goto yy486; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy487: - YYDEBUG(487, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy486: + YYDEBUG(486, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'O') goto yy139; - } - } else { - if(yych <= 'n') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'o') goto yy488; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy140; } -yy488: - YYDEBUG(488, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy140; - } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'b') goto yy489; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'b') goto yy487; + if (yych <= 'z') goto yy140; + goto yy3; } -yy489: - YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy141; - } + } +yy487: + YYDEBUG(487, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'e') goto yy490; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; } -yy490: - YYDEBUG(490, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Q') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'e') goto yy488; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy488: + YYDEBUG(488, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Q') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy3; + } +yy489: + YYDEBUG(489, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy485; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; goto yy3; } else { - if(yych <= 'R') goto yy315; - if(yych == 'r') goto yy315; + if (yych == 't') goto yy490; + if (yych <= 'z') goto yy143; goto yy3; } -yy491: - YYDEBUG(491, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } +yy490: + YYDEBUG(490, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy487; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 't') goto yy492; - if(yych <= 'z') goto yy143; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy492: - YYDEBUG(492, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= '^') { + if (yych <= 'N') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych <= 'O') goto yy486; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'N') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'O') goto yy488; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 'n') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'n') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'o') goto yy493; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'o') goto yy491; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy491: + YYDEBUG(491, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy140; + goto yy487; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy492; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy492: + YYDEBUG(492, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; + goto yy488; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy493; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy493: - YYDEBUG(493, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy140; - goto yy489; - } + YYDEBUG(493, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '/') goto yy144; + if (yych <= 'Q') goto yy3; + goto yy315; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy483; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy494: + YYDEBUG(494, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= 'B') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'O') { + if (yych <= 'C') goto yy510; + goto yy138; } else { - if(yych == 'b') goto yy494; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'P') goto yy509; + if (yych <= 'U') goto yy138; + goto yy511; } } -yy494: - YYDEBUG(494, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy141; - goto yy490; + if (yych == 'c') goto yy510; + goto yy138; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'u') { + if (yych <= 'p') goto yy509; + goto yy138; } else { - if(yych == 'e') goto yy495; - if(yych <= 'z') goto yy150; + if (yych <= 'v') goto yy511; + if (yych <= 'z') goto yy138; goto yy3; } } + } yy495: - YYDEBUG(495, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'Q') goto yy3; - goto yy315; - } + YYDEBUG(495, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy485; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy504; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 't') goto yy504; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy496: - YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= 'B') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'O') { - if(yych <= 'C') goto yy512; - goto yy138; - } else { - if(yych <= 'P') goto yy511; - if(yych <= 'U') goto yy138; - goto yy513; - } - } + YYDEBUG(496, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych == 'c') goto yy512; - goto yy138; - } - } else { - if(yych <= 'u') { - if(yych <= 'p') goto yy511; - goto yy138; - } else { - if(yych <= 'v') goto yy513; - if(yych <= 'z') goto yy138; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy502; + } + } else { + if (yych <= 'w') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'x') goto yy502; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy497: - YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy506; - } + YYDEBUG(497, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 't') goto yy506; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy498; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy498: - YYDEBUG(498, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy504; - } + YYDEBUG(498, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'w') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'x') goto yy504; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy499; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - } + YYDEBUG(499, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy500; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy500; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy500: - YYDEBUG(500, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(500, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy501; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; } -yy501: - YYDEBUG(501, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy502; - if(yych <= 'z') goto yy140; - goto yy3; - } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy501: + YYDEBUG(501, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy136; + goto yy276; yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - } + YYDEBUG(502, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy503; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy503: - YYDEBUG(503, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy136; - goto yy276; + YYDEBUG(503, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; + } + } yy504: - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(504, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy505; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'T') goto yy139; + } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'u') goto yy505; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy505: - YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(505, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'r') goto yy506; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy506: - YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'T') goto yy139; - } + YYDEBUG(506, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'u') goto yy507; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'd') goto yy507; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy507: - YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(507, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy508; + if (yych != 'a') goto yy3; + } +yy508: + YYDEBUG(508, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; +yy509: + YYDEBUG(509, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'r') goto yy508; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy508: - YYDEBUG(508, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; + if (yych == 'T') goto yy518; + goto yy139; } } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 's') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'd') goto yy509; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 't') goto yy518; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy509: - YYDEBUG(509, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } +yy510: + YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy510; - if(yych != 'a') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + goto yy515; } -yy510: - YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'o') goto yy515; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy511: - YYDEBUG(511, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + YYDEBUG(511, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'T') goto yy520; - goto yy139; - } - } else { - if(yych <= 's') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 't') goto yy520; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy139; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'e') goto yy512; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy512: - YYDEBUG(512, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy517; - } + YYDEBUG(512, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'o') goto yy517; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'n') goto yy513; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy513: - YYDEBUG(513, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy139; - } + YYDEBUG(513, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'e') goto yy514; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; } -yy514: - YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'n') goto yy515; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 't') goto yy514; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy514: + YYDEBUG(514, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy3; + } yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(515, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy516; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; } -yy516: - YYDEBUG(516, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'n') goto yy516; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy516: + YYDEBUG(516, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'H') goto yy160; - if(yych == 'h') goto yy160; + if (yych <= 'd') goto yy517; + if (yych <= 'z') goto yy141; goto yy3; } + } yy517: - YYDEBUG(517, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(517, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; + } else { + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } +yy518: + YYDEBUG(518, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'n') goto yy518; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy518: - YYDEBUG(518, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; + if (yych != 'E') goto yy140; } } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy140; } else { - if(yych <= 'd') goto yy519; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 'e') goto yy519; + if (yych <= 'z') goto yy140; + goto yy303; } } + } yy519: - YYDEBUG(519, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; + YYDEBUG(519, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy141; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; + if (yych <= 'm') goto yy520; + if (yych <= 'z') goto yy141; goto yy3; } + } yy520: - YYDEBUG(520, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + YYDEBUG(520, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'B') goto yy521; + if (yych != 'b') goto yy3; + } +yy521: + YYDEBUG(521, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy522; + if (yych != 'e') goto yy53; +yy522: + YYDEBUG(522, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy53; +yy523: + YYDEBUG(523, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy3; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'E') goto yy140; - } + if (yych <= 'O') { + if (yych == 'C') goto yy510; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy140; - } else { - if(yych <= 'e') goto yy521; - if(yych <= 'z') goto yy140; - goto yy303; - } + if (yych <= 'P') goto yy509; + if (yych <= 'U') goto yy138; + goto yy511; } } -yy521: - YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'c') { + if (yych <= '_') { + if (yych <= 'Z') goto yy138; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'b') goto yy143; + goto yy539; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'u') { + if (yych == 'p') goto yy538; + goto yy143; } else { - if(yych <= 'm') goto yy522; - if(yych <= 'z') goto yy141; + if (yych <= 'v') goto yy540; + if (yych <= 'z') goto yy143; goto yy3; } } -yy522: - YYDEBUG(522, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych == ')') goto yy136; + } +yy524: + YYDEBUG(524, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; goto yy3; } else { - if(yych <= 'B') goto yy523; - if(yych != 'b') goto yy3; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy504; } -yy523: - YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy524; - if(yych != 'e') goto yy53; -yy524: - YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy315; - goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy533; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy525: - YYDEBUG(525, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } - } else { - if(yych <= 'O') { - if(yych == 'C') goto yy512; - goto yy138; - } else { - if(yych <= 'P') goto yy511; - if(yych <= 'U') goto yy138; - goto yy513; - } - } + YYDEBUG(525, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= '_') { - if(yych <= 'Z') goto yy138; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'b') goto yy143; - goto yy541; - } - } else { - if(yych <= 'u') { - if(yych == 'p') goto yy540; - goto yy143; - } else { - if(yych <= 'v') goto yy542; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy502; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'x') goto yy531; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy526: - YYDEBUG(526, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy506; - } + YYDEBUG(526, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy535; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy498; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy527; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy527: - YYDEBUG(527, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy504; - } + YYDEBUG(527, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'x') goto yy533; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy499; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy528; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy528: - YYDEBUG(528, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy500; - } + YYDEBUG(528, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy529; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy500; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy529; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy529: - YYDEBUG(529, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy501; - } + YYDEBUG(529, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy530; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy530: - YYDEBUG(530, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy502; - } + YYDEBUG(530, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy276; + goto yy144; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy276; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy531; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '`') goto yy276; + if (yych <= 'z') goto yy151; + goto yy276; } + } yy531: - YYDEBUG(531, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(531, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy503; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy532; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy532: - YYDEBUG(532, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy276; - goto yy144; + YYDEBUG(532, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= '^') goto yy276; - goto yy144; - } else { - if(yych <= '`') goto yy276; - if(yych <= 'z') goto yy151; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } -yy533: - YYDEBUG(533, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy505; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy534; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } -yy534: - YYDEBUG(534, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + } +yy533: + YYDEBUG(533, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'T') goto yy139; + goto yy505; } -yy535: - YYDEBUG(535, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'T') goto yy139; - goto yy507; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'u') goto yy536; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych == 'u') goto yy534; + if (yych <= 'z') goto yy148; + goto yy276; } -yy536: - YYDEBUG(536, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - goto yy508; - } + } +yy534: + YYDEBUG(534, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy537; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy506; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy535; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy535: + YYDEBUG(535, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy507; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy536; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy536: + YYDEBUG(536, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy508; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych <= 'a') goto yy537; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy537: - YYDEBUG(537, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(537, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; +yy538: + YYDEBUG(538, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy509; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'd') goto yy538; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy538: - YYDEBUG(538, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'S') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy510; + if (yych <= 'T') goto yy518; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 's') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'a') goto yy539; - if(yych <= 'z') goto yy151; - goto yy3; + if (yych <= 't') goto yy547; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy539: - YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; + YYDEBUG(539, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + goto yy515; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy544; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy540: - YYDEBUG(540, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(540, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'S') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'T') goto yy520; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 's') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 't') goto yy549; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy139; + goto yy512; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy541; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy541: - YYDEBUG(541, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy517; - } + YYDEBUG(541, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy546; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + goto yy513; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy542; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy542: - YYDEBUG(542, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy139; - goto yy514; - } + YYDEBUG(542, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy543; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy514; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy543; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy543: - YYDEBUG(543, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - goto yy515; - } + YYDEBUG(543, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy544; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy160; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy247; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy544: - YYDEBUG(544, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy516; - } + YYDEBUG(544, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy545; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + goto yy516; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy545; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy545: - YYDEBUG(545, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy160; - } + YYDEBUG(545, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy247; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy517; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy546; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy546: - YYDEBUG(546, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - goto yy518; - } + YYDEBUG(546, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy547; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych <= '(') goto yy3; + goto yy136; + } + } else { + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy547: - YYDEBUG(547, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(547, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy519; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'd') goto yy548; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy548: - YYDEBUG(548, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy140; } else { - if(yych <= ' ') goto yy161; - if(yych <= '(') goto yy3; - goto yy136; + if (yych <= 'E') goto yy519; + if (yych <= 'Z') goto yy140; + goto yy303; } } else { - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy149; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy151; - goto yy3; + if (yych <= 'e') goto yy548; + if (yych <= 'z') goto yy149; + goto yy303; } } -yy549: - YYDEBUG(549, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } +yy548: + YYDEBUG(548, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy140; - } else { - if(yych <= 'E') goto yy521; - if(yych <= 'Z') goto yy140; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy149; - } else { - if(yych <= 'e') goto yy550; - if(yych <= 'z') goto yy149; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy141; + goto yy520; } -yy550: - YYDEBUG(550, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy141; - goto yy522; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy551; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'm') goto yy549; + if (yych <= 'z') goto yy150; + goto yy3; } -yy551: - YYDEBUG(551, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'A') goto yy3; - goto yy523; - } + } +yy549: + YYDEBUG(549, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy552; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'A') goto yy3; + goto yy521; } -yy552: - YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy524; - if(yych != 'e') goto yy152; - YYDEBUG(553, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy485; - goto yy152; -yy554: - YYDEBUG(554, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy562; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'g') goto yy562; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'b') goto yy550; + if (yych <= 'z') goto yy151; + goto yy3; } -yy555: - YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy138; - goto yy559; - } + } +yy550: + YYDEBUG(550, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy522; + if (yych != 'e') goto yy152; + YYDEBUG(551, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy483; + goto yy152; +yy552: + YYDEBUG(552, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'r') goto yy559; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy560; } -yy556: - YYDEBUG(556, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy138; - } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'o') goto yy557; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'g') goto yy560; + if (yych <= 'z') goto yy138; + goto yy3; } -yy557: - YYDEBUG(557, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } +yy553: + YYDEBUG(553, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy138; + goto yy557; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy558; - if(yych <= 'z') goto yy139; + if (yych <= 'r') goto yy557; + if (yych <= 'z') goto yy138; + goto yy3; } -yy558: - YYDEBUG(558, *YYCURSOR); - { + } +yy554: + YYDEBUG(554, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy138; + } + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'o') goto yy555; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy555: + YYDEBUG(555, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy556; + if (yych <= 'z') goto yy139; + } +yy556: + YYDEBUG(556, *YYCURSOR); + { DEBUG_OUTPUT("ago"); TIMELIB_INIT; s->time->relative.y = 0 - s->time->relative.y; @@ -9567,2601 +9527,2601 @@ yy558: TIMELIB_DEINIT; return TIMELIB_AGO; } -yy559: - YYDEBUG(559, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } +yy557: + YYDEBUG(557, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'I') goto yy139; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'h') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'i') goto yy560; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy560: - YYDEBUG(560, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy140; + if (yych != 'I') goto yy139; } } else { - if(yych <= 'k') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'h') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'l') goto yy561; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'i') goto yy558; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy561: - YYDEBUG(561, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } +yy558: + YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy140; + } + } else { + if (yych <= 'k') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'l') goto yy559; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy559: + YYDEBUG(559, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy141; + goto yy303; + } + } +yy560: + YYDEBUG(560, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych == ' ') goto yy305; goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy141; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy562: - YYDEBUG(562, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych != 'U') goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'U') goto yy139; - } + if (yych <= 't') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'u') goto yy563; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= 'u') goto yy561; + if (yych <= 'z') goto yy139; + goto yy303; } } + } +yy561: + YYDEBUG(561, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 's') goto yy562; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy562: + YYDEBUG(562, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 't') goto yy563; + if (yych <= 'z') goto yy141; + goto yy3; + } + } yy563: - YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - } + YYDEBUG(563, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 's') goto yy564; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych == ' ') goto yy305; + goto yy303; + } + } else { + if (yych <= '.') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } else { + if (yych <= '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } + } yy564: - YYDEBUG(564, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(564, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy565; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy560; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy571; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy565: - YYDEBUG(565, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + YYDEBUG(565, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '.') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } else { - if(yych <= '/') goto yy303; - if(yych <= '9') goto yy305; - goto yy303; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy138; + goto yy557; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy568; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy566: - YYDEBUG(566, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy562; - } + YYDEBUG(566, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy573; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy138; + goto yy555; } -yy567: - YYDEBUG(567, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy138; - goto yy559; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy570; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == 'o') goto yy567; + if (yych <= 'z') goto yy143; + goto yy3; } -yy568: - YYDEBUG(568, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy138; - goto yy557; - } + } +yy567: + YYDEBUG(567, *YYCURSOR); + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy556; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy569; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy556; } -yy569: - YYDEBUG(569, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy558; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy558; - } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy556; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy558; - goto yy144; - } else { - if(yych <= '`') goto yy558; - if(yych <= 'z') goto yy148; - goto yy558; - } + if (yych <= '`') goto yy556; + if (yych <= 'z') goto yy148; + goto yy556; } -yy570: - YYDEBUG(570, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy568: + YYDEBUG(568, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'H') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'I') goto yy560; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'h') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'i') goto yy571; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy571: - YYDEBUG(571, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'H') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy140; - goto yy561; + if (yych <= 'I') goto yy558; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'h') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 'l') goto yy572; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'i') goto yy569; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy572: - YYDEBUG(572, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } + } +yy569: + YYDEBUG(569, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy141; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy150; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy140; + goto yy559; } -yy573: - YYDEBUG(573, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'T') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'U') goto yy563; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 't') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'u') goto yy574; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych == 'l') goto yy570; + if (yych <= 'z') goto yy149; + goto yy3; } -yy574: - YYDEBUG(574, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - goto yy564; - } + } +yy570: + YYDEBUG(570, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy141; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych == 's') goto yy575; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy150; + goto yy303; } } -yy575: - YYDEBUG(575, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } +yy571: + YYDEBUG(571, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy565; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 't') goto yy576; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy576: - YYDEBUG(576, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } else { + if (yych <= '^') { + if (yych <= 'T') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych <= 'U') goto yy561; + if (yych <= 'Z') goto yy139; goto yy303; } } else { - if(yych <= '^') { - if(yych == '/') goto yy144; - if(yych <= '9') goto yy305; - goto yy303; + if (yych <= 't') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy151; + if (yych <= 'u') goto yy572; + if (yych <= 'z') goto yy148; goto yy303; } } -yy577: - YYDEBUG(577, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy138; - goto yy591; - } + } +yy572: + YYDEBUG(572, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'b') goto yy591; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + goto yy562; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy573; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy573: + YYDEBUG(573, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy563; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy574; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy574: + YYDEBUG(574, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '^') { + if (yych == '/') goto yy144; + if (yych <= '9') goto yy305; + goto yy303; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy151; + goto yy303; + } + } +yy575: + YYDEBUG(575, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy138; + goto yy589; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'b') goto yy589; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy576: + YYDEBUG(576, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych == 'F') goto yy586; + if (yych <= 'Q') goto yy138; + goto yy585; + } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'e') goto yy138; + goto yy586; + } else { + if (yych == 'r') goto yy585; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy577: + YYDEBUG(577, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy138; + goto yy582; + } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'u') goto yy582; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy578: - YYDEBUG(578, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'F') goto yy588; - if(yych <= 'Q') goto yy138; - goto yy587; - } + YYDEBUG(578, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'e') goto yy138; - goto yy588; - } else { - if(yych == 'r') goto yy587; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy138; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'i') goto yy579; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy579: - YYDEBUG(579, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy138; - goto yy584; - } + YYDEBUG(579, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'u') goto yy584; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy580; + if (yych <= 'z') goto yy139; + goto yy276; + } + } yy580: - YYDEBUG(580, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy138; - } + YYDEBUG(580, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'i') goto yy581; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy581; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy581: - YYDEBUG(581, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(581, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy582; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy582: - YYDEBUG(582, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy583; - if(yych <= 'z') goto yy140; - goto yy3; - } + YYDEBUG(582, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'r') goto yy583; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy583: - YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(583, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy584; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy584: - YYDEBUG(584, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - } + YYDEBUG(584, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'r') goto yy585; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy141; + goto yy517; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'h') goto yy517; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy585: - YYDEBUG(585, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - } + YYDEBUG(585, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 't') goto yy586; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy139; + goto yy588; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 's') goto yy588; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy586: - YYDEBUG(586, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy141; - goto yy519; - } + YYDEBUG(586, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'h') goto yy519; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy587; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy139; - goto yy590; - } + YYDEBUG(587, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 's') goto yy590; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy588: - YYDEBUG(588, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(588, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy589; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy589: - YYDEBUG(589, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(589, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy590: - YYDEBUG(590, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; + if (yych != 'R') goto yy139; } } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'q') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'r') goto yy590; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy591: - YYDEBUG(591, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy590: + YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'R') goto yy139; - } - } else { - if(yych <= 'q') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'r') goto yy592; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy140; } -yy592: - YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy140; - } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'u') goto yy593; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'u') goto yy591; + if (yych <= 'z') goto yy140; + goto yy3; } -yy593: - YYDEBUG(593, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy594; - if(yych <= 'z') goto yy141; - goto yy3; - } + } +yy591: + YYDEBUG(591, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + goto yy3; + } else { + if (yych <= 'a') goto yy592; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy592: + YYDEBUG(592, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Q') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'R') goto yy593; + if (yych != 'r') goto yy3; + } +yy593: + YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy315; + if (yych == 'y') goto yy315; + goto yy53; yy594: - YYDEBUG(594, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Q') { - if(yych == ')') goto yy136; + YYDEBUG(594, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy138; + goto yy589; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; goto yy3; } else { - if(yych <= 'R') goto yy595; - if(yych != 'r') goto yy3; + if (yych == 'b') goto yy608; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy595: - YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy315; - if(yych == 'y') goto yy315; - goto yy53; -yy596: - YYDEBUG(596, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; + YYDEBUG(595, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; + } else { + if (yych <= 'E') { + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'F') goto yy586; + if (yych <= 'Q') goto yy138; + goto yy585; + } + } + } else { + if (yych <= 'e') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy138; - goto yy591; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'q') { + if (yych <= 'f') goto yy605; + goto yy143; } else { - if(yych == 'b') goto yy610; - if(yych <= 'z') goto yy143; + if (yych <= 'r') goto yy604; + if (yych <= 'z') goto yy143; goto yy3; } } -yy597: - YYDEBUG(597, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'E') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'F') goto yy588; - if(yych <= 'Q') goto yy138; - goto yy587; - } - } + } +yy596: + YYDEBUG(596, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'e') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'q') { - if(yych <= 'f') goto yy607; - goto yy143; - } else { - if(yych <= 'r') goto yy606; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy138; + goto yy582; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy601; + if (yych <= 'z') goto yy143; + goto yy3; + } + } +yy597: + YYDEBUG(597, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy138; + goto yy579; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy598; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy598: - YYDEBUG(598, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy138; - goto yy584; - } + YYDEBUG(598, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy603; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy580; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy599; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy599: - YYDEBUG(599, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy138; - goto yy581; - } + YYDEBUG(599, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy600; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy581; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy600; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy600: - YYDEBUG(600, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy582; - } + YYDEBUG(600, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy601; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy601: - YYDEBUG(601, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy583; - } + YYDEBUG(601, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy602; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; + goto yy583; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy602; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy602: - YYDEBUG(602, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(602, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy584; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy603; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy603: - YYDEBUG(603, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - goto yy585; - } + YYDEBUG(603, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy604; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy141; + goto yy517; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy546; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy604: - YYDEBUG(604, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy586; - } + YYDEBUG(604, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy605; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy139; + goto yy588; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy607; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy605: - YYDEBUG(605, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy141; - goto yy519; - } + YYDEBUG(605, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy548; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy587; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy606; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy606: - YYDEBUG(606, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy139; - goto yy590; - } + YYDEBUG(606, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy609; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy607: - YYDEBUG(607, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy589; - } + YYDEBUG(607, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy608; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy608: - YYDEBUG(608, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(608, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy609: - YYDEBUG(609, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'Q') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; + if (yych <= 'R') goto yy590; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'q') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 't') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'r') goto yy609; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy609: + YYDEBUG(609, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy140; + goto yy591; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy610; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy610: - YYDEBUG(610, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(610, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'Q') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'R') goto yy592; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'q') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'r') goto yy611; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy592; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy611; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy611: - YYDEBUG(611, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy140; - goto yy593; - } + YYDEBUG(611, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy612; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'Q') goto yy3; + goto yy593; } -yy612: - YYDEBUG(612, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy594; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy613; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'r') goto yy612; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy612: + YYDEBUG(612, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy315; + if (yych == 'y') goto yy483; + goto yy152; yy613: - YYDEBUG(613, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'Q') goto yy3; - goto yy595; - } + YYDEBUG(613, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy614; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == 'L') goto yy620; + if (yych <= 'M') goto yy138; + goto yy619; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'k') goto yy138; + goto yy620; + } else { + if (yych == 'n') goto yy619; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy315; - if(yych == 'y') goto yy485; - goto yy152; + YYDEBUG(614, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy615; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy615: - YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(615, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych == 'L') goto yy622; - if(yych <= 'M') goto yy138; - goto yy621; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'k') goto yy138; - goto yy622; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych == 'n') goto yy621; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy616: - YYDEBUG(616, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; + if (yych != 'U') goto yy139; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 't') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'n') goto yy617; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'u') goto yy616; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy617: - YYDEBUG(617, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy616: + YYDEBUG(616, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'U') goto yy139; - } - } else { - if(yych <= 't') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'u') goto yy618; - if(yych <= 'z') goto yy139; - goto yy303; - } - } - } -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy619; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'a') goto yy617; + if (yych <= 'z') goto yy140; + goto yy3; } -yy619: - YYDEBUG(619, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + } +yy617: + YYDEBUG(617, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy620; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; } -yy620: - YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Y') goto yy315; - if(yych == 'y') goto yy315; + if (yych <= 'r') goto yy618; + if (yych <= 'z') goto yy141; goto yy3; } -yy621: - YYDEBUG(621, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy618: + YYDEBUG(618, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy315; + if (yych == 'y') goto yy315; + goto yy3; + } +yy619: + YYDEBUG(619, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'E') goto yy623; - goto yy139; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'e') goto yy623; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy622: - YYDEBUG(622, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == 'E') goto yy621; + goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'Y') goto yy139; - } + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'x') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'y') goto yy623; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= 'e') goto yy621; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy623: - YYDEBUG(623, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } +yy620: + YYDEBUG(620, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych == ' ') goto yy305; goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy140; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy624: - YYDEBUG(624, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= 'K') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'L') goto yy622; - if(yych <= 'M') goto yy138; - goto yy621; - } + if (yych != 'Y') goto yy139; } } else { - if(yych <= 'k') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } + if (yych <= 'x') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'm') { - if(yych <= 'l') goto yy631; - goto yy143; - } else { - if(yych <= 'n') goto yy630; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'y') goto yy621; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy625: - YYDEBUG(625, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy617; - } + } +yy621: + YYDEBUG(621, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy626; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy140; + goto yy303; } -yy626: - YYDEBUG(626, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } +yy622: + YYDEBUG(622, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '^') { - if(yych <= 'T') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'U') goto yy618; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 'K') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych <= 't') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'u') goto yy627; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'L') goto yy620; + if (yych <= 'M') goto yy138; + goto yy619; } } -yy627: - YYDEBUG(627, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'k') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy619; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; + if (yych <= 'm') { + if (yych <= 'l') goto yy629; + goto yy143; } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy628; - if(yych <= 'z') goto yy149; + if (yych <= 'n') goto yy628; + if (yych <= 'z') goto yy143; goto yy3; } } -yy628: - YYDEBUG(628, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy620; - } + } +yy623: + YYDEBUG(623, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy629; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy615; } -yy629: - YYDEBUG(629, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy315; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy485; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == 'n') goto yy624; + if (yych <= 'z') goto yy143; + goto yy3; } -yy630: - YYDEBUG(630, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy624: + YYDEBUG(624, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy623; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy632; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy631: - YYDEBUG(631, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= '^') { + if (yych <= 'T') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych <= 'U') goto yy616; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'X') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'Y') goto yy623; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 't') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'x') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'y') goto yy632; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'u') goto yy625; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy632: - YYDEBUG(632, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } + } +yy625: + YYDEBUG(625, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy140; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy149; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy617; } -yy633: - YYDEBUG(633, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy626; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy626: + YYDEBUG(626, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy618; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy627; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy627: + YYDEBUG(627, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy315; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy483; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy628: + YYDEBUG(628, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy634: - YYDEBUG(634, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; - goto yy3; + if (yych <= 'E') goto yy621; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy139; - goto yy3; + if (yych <= 'e') goto yy630; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy635: - YYDEBUG(635, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; + } +yy629: + YYDEBUG(629, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy305; } } - YYDEBUG(636, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } else { + if (yych <= '^') { + if (yych <= 'X') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= 'Y') goto yy621; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy139; + if (yych <= 'x') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy139; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'y') goto yy630; + if (yych <= 'z') goto yy148; + goto yy303; } } - YYDEBUG(637, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; - } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; - goto yy3; - } + } +yy630: + YYDEBUG(630, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy140; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy149; + goto yy303; } } -yy638: - YYDEBUG(638, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; + } +yy631: + YYDEBUG(631, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy138; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; goto yy3; } + } + } +yy632: + YYDEBUG(632, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy633: + YYDEBUG(633, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy138; } else { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; goto yy3; } } -yy639: - YYDEBUG(639, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } + YYDEBUG(634, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy139; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy139; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy139; + goto yy3; } + } + } + YYDEBUG(635, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy636: + YYDEBUG(636, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy637: + YYDEBUG(637, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy632; goto yy138; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy634; - goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; + goto yy3; } } -yy640: - YYDEBUG(640, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } +yy638: + YYDEBUG(638, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '9') { + if (yych <= '/') goto yy3; + goto yy660; + } else { + if (yych <= ':') goto yy645; + if (yych <= 'C') goto yy3; goto yy57; - } else { - if(yych <= '9') { - if(yych <= '/') goto yy3; - goto yy662; - } else { - if(yych <= ':') goto yy647; - if(yych <= 'C') goto yy3; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy641: - YYDEBUG(641, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '3') { - if(yych <= '/') goto yy3; - goto yy662; - } else { - if(yych <= '5') goto yy645; - if(yych <= '9') goto yy646; - goto yy647; - } - } + } +yy639: + YYDEBUG(639, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy3; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy3; - } + if (yych <= '3') { + if (yych <= '/') goto yy3; + goto yy660; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } + if (yych <= '5') goto yy643; + if (yych <= '9') goto yy644; + goto yy645; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy3; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } + if (yych == 'F') goto yy57; + goto yy3; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; + goto yy57; } } } -yy642: - YYDEBUG(642, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= 'C') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= '5') { - if(yych <= '/') goto yy3; - goto yy645; - } else { - if(yych <= '9') goto yy646; - if(yych <= ':') goto yy647; - goto yy3; - } - } - } else { - if(yych <= 'G') { - if(yych == 'E') goto yy3; - if(yych <= 'F') goto yy57; + if (yych == 'f') goto yy57; goto yy3; - } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; - goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy3; + goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy643: - YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(644, *YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= ',') { - if(yych == '+') goto yy643; - goto yy53; + } +yy640: + YYDEBUG(640, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '5') { + if (yych <= '/') goto yy3; + goto yy643; + } else { + if (yych <= '9') goto yy644; + if (yych <= ':') goto yy645; + goto yy3; + } + } } else { - if(yych <= '-') goto yy643; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy51; - goto yy53; - } -yy645: - YYDEBUG(645, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; + if (yych <= 'G') { + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy57; + goto yy3; + } else { + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy661; - if(yych <= 'C') goto yy3; + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; goto yy57; } - } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + } + } + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'f') goto yy57; + goto yy3; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy646: - YYDEBUG(646, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } +yy641: + YYDEBUG(641, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(642, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= ',') { + if (yych == '+') goto yy641; + goto yy53; + } else { + if (yych <= '-') goto yy641; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy51; + goto yy53; + } +yy643: + YYDEBUG(643, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy659; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy649; - if(yych <= 'C') goto yy3; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; + } else { + if (yych == 'g') goto yy3; goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + } + } +yy644: + YYDEBUG(644, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy647; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; + goto yy57; + } else { + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } + } +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy3; + if (yych <= '5') goto yy646; + if (yych <= '9') goto yy136; + goto yy3; +yy646: + YYDEBUG(646, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy136; + goto yy3; yy647: - YYDEBUG(647, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy3; - if(yych <= '5') goto yy648; - if(yych <= '9') goto yy136; - goto yy3; + YYDEBUG(647, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych >= ':') goto yy57; yy648: - YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy136; - goto yy3; + YYDEBUG(648, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych != '-') goto yy57; yy649: - YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych >= ':') goto yy57; + YYDEBUG(649, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy650; + if (yych <= '1') goto yy651; + goto yy53; yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych != '-') goto yy57; + YYDEBUG(650, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy652; + goto yy53; yy651: - YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy652; - if(yych <= '1') goto yy653; - goto yy53; + YYDEBUG(651, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy652: - YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy654; - goto yy53; -yy653: - YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + YYDEBUG(652, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; + YYDEBUG(653, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy654; + if (yych <= '2') goto yy655; + if (yych <= '3') goto yy656; + goto yy53; yy654: - YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; - YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy656; - if(yych <= '2') goto yy657; - if(yych <= '3') goto yy658; - goto yy53; + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy657; + goto yy53; +yy655: + YYDEBUG(655, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy657; + goto yy53; yy656: - YYDEBUG(656, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy659; - goto yy53; + YYDEBUG(656, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy659; - goto yy53; + YYDEBUG(657, *YYCURSOR); + ++YYCURSOR; yy658: - YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; -yy659: - YYDEBUG(659, *YYCURSOR); - ++YYCURSOR; -yy660: - YYDEBUG(660, *YYCURSOR); - { + YYDEBUG(658, *YYCURSOR); + { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -12171,566 +12131,566 @@ yy660: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -yy661: - YYDEBUG(661, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; +yy659: + YYDEBUG(659, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy648; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy650; - if(yych <= 'C') goto yy3; - goto yy57; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'g') goto yy3; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; - goto yy3; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy662: - YYDEBUG(662, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= 'C') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '5') { - if(yych <= '/') goto yy3; - } else { - if(yych <= '9') goto yy661; - if(yych <= ':') goto yy647; - goto yy3; - } - } - } else { - if(yych <= 'G') { - if(yych == 'E') goto yy3; - if(yych <= 'F') goto yy57; + } +yy660: + YYDEBUG(660, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '5') { + if (yych <= '/') goto yy3; + } else { + if (yych <= '9') goto yy659; + if (yych <= ':') goto yy645; goto yy3; - } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; - goto yy57; - } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } - } + if (yych <= 'G') { + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy57; + goto yy3; } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; + goto yy57; } } } - YYDEBUG(663, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy664; - if(yych <= 'C') goto yy3; - goto yy57; - } - } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'f') goto yy57; + goto yy3; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy664: - YYDEBUG(664, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } + YYDEBUG(661, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy662; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych == '-') goto yy651; - if(yych <= 'C') goto yy3; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; + } else { + if (yych == 'g') goto yy3; goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } + } + } +yy662: + YYDEBUG(662, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych == '-') goto yy649; + if (yych <= 'C') goto yy3; + goto yy57; + } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; + goto yy57; + } else { + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } + } +yy663: + YYDEBUG(663, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy665; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy665; +yy664: + YYDEBUG(664, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; yy665: - YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy667; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy667; + YYDEBUG(665, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy664; + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy683; + case 'D': + case 'd': goto yy669; + case 'F': + case 'f': goto yy670; + case 'H': + case 'h': goto yy60; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy668; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'P': + case 'p': goto yy687; + case 'S': + case 's': goto yy666; + case 'T': + case 't': goto yy65; + case 'V': goto yy680; + case 'W': + case 'w': goto yy62; + case 'X': goto yy681; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } yy666: - YYDEBUG(666, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(666, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1229; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy1229; + if (yych == 'u') goto yy122; + goto yy53; + } + } yy667: - YYDEBUG(667, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy666; - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy685; - case 'D': - case 'd': goto yy671; - case 'F': - case 'f': goto yy672; - case 'H': - case 'h': goto yy60; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy670; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'P': - case 'p': goto yy689; - case 'S': - case 's': goto yy668; - case 'T': - case 't': goto yy65; - case 'V': goto yy682; - case 'W': - case 'w': goto yy62; - case 'X': goto yy683; - case 'Y': - case 'y': goto yy64; - default: goto yy53; + YYDEBUG(667, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '`') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1229; + if (yych == 'U') goto yy122; + goto yy53; + } + } else { + if (yych <= 'e') { + if (yych <= 'a') goto yy123; + if (yych <= 'd') goto yy53; + goto yy1229; + } else { + if (yych <= 's') goto yy53; + if (yych <= 't') goto yy912; + if (yych <= 'u') goto yy122; + goto yy53; } + } yy668: - YYDEBUG(668, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1224; - if(yych <= 'T') goto yy53; - goto yy122; - } + YYDEBUG(668, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'A') goto yy779; + goto yy53; } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; - } else { - if(yych <= 'e') goto yy1224; - if(yych == 'u') goto yy122; - goto yy53; - } + if (yych <= 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } + } else { + if (yych <= 'h') { + if (yych == 'a') goto yy779; + goto yy53; + } else { + if (yych <= 'i') goto yy114; + if (yych == 'o') goto yy113; + goto yy53; } + } yy669: - YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '`') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1224; - if(yych == 'U') goto yy122; - goto yy53; - } + YYDEBUG(669, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy110; + if (yych <= 'D') goto yy53; + goto yy766; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy110; } else { - if(yych <= 'e') { - if(yych <= 'a') goto yy123; - if(yych <= 'd') goto yy53; - goto yy1224; - } else { - if(yych <= 's') goto yy53; - if(yych <= 't') goto yy913; - if(yych <= 'u') goto yy122; - goto yy53; - } + if (yych == 'e') goto yy766; + goto yy53; } + } yy670: - YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'H') { - if(yych == 'A') goto yy781; - goto yy53; - } else { - if(yych <= 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; - } + YYDEBUG(670, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'N') { + if (yych == 'E') goto yy782; + goto yy53; } else { - if(yych <= 'h') { - if(yych == 'a') goto yy781; - goto yy53; - } else { - if(yych <= 'i') goto yy114; - if(yych == 'o') goto yy113; - goto yy53; - } + if (yych <= 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; } -yy671: - YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych == 'A') goto yy110; - if(yych <= 'D') goto yy53; - goto yy768; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy110; - } else { - if(yych == 'e') goto yy768; - goto yy53; - } + } else { + if (yych <= 'n') { + if (yych == 'e') goto yy782; + goto yy53; + } else { + if (yych <= 'o') goto yy83; + if (yych == 'r') goto yy82; + goto yy53; } -yy672: - YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'N') { - if(yych == 'E') goto yy784; - goto yy53; - } else { - if(yych <= 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; - } + } +yy671: + YYDEBUG(671, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy66; + if (yych <= 'T') goto yy53; + goto yy67; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy1228; } else { - if(yych <= 'n') { - if(yych == 'e') goto yy784; - goto yy53; - } else { - if(yych <= 'o') goto yy83; - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'u') goto yy67; + goto yy53; } + } +yy672: + YYDEBUG(672, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy925; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy924; + goto yy57; yy673: - YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy66; - if(yych <= 'T') goto yy53; - goto yy67; - } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy1223; - } else { - if(yych == 'u') goto yy67; - goto yy53; - } - } + YYDEBUG(673, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'c') { + if (yych == 'O') goto yy717; + goto yy53; + } else { + if (yych <= 'd') goto yy912; + if (yych == 'o') goto yy717; + goto yy53; + } yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy920; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy919; - goto yy57; + YYDEBUG(674, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy912; + goto yy53; yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'c') { - if(yych == 'O') goto yy719; - goto yy53; - } else { - if(yych <= 'd') goto yy913; - if(yych == 'o') goto yy719; - goto yy53; - } + YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': + case '1': + case '2': goto yy852; + case '3': goto yy854; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy855; + case 'A': + case 'a': goto yy859; + case 'D': + case 'd': goto yy863; + case 'F': + case 'f': goto yy857; + case 'J': + case 'j': goto yy856; + case 'M': + case 'm': goto yy858; + case 'N': + case 'n': goto yy862; + case 'O': + case 'o': goto yy861; + case 'S': + case 's': goto yy860; + default: goto yy53; + } yy676: - YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy913; - goto yy53; + YYDEBUG(676, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy802; + case '1': goto yy803; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy804; + case 'A': + case 'a': goto yy808; + case 'D': + case 'd': goto yy812; + case 'F': + case 'f': goto yy806; + case 'J': + case 'j': goto yy805; + case 'M': + case 'm': goto yy807; + case 'N': + case 'n': goto yy811; + case 'O': + case 'o': goto yy810; + case 'S': + case 's': goto yy809; + default: goto yy765; + } yy677: - YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': - case '1': - case '2': goto yy853; - case '3': goto yy855; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy856; - case 'A': - case 'a': goto yy860; - case 'D': - case 'd': goto yy864; - case 'F': - case 'f': goto yy858; - case 'J': - case 'j': goto yy857; - case 'M': - case 'm': goto yy859; - case 'N': - case 'n': goto yy863; - case 'O': - case 'o': goto yy862; - case 'S': - case 's': goto yy861; - default: goto yy53; - } + YYDEBUG(677, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '1') { + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy755; + goto yy756; + } else { + if (yych <= '5') goto yy757; + if (yych <= '9') goto yy758; + goto yy765; + } yy678: - YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy803; - case '1': goto yy804; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy805; - case 'A': - case 'a': goto yy809; - case 'D': - case 'd': goto yy813; - case 'F': - case 'f': goto yy807; - case 'J': - case 'j': goto yy806; - case 'M': - case 'm': goto yy808; - case 'N': - case 'n': goto yy812; - case 'O': - case 'o': goto yy811; - case 'S': - case 's': goto yy810; - default: goto yy767; - } -yy679: - YYDEBUG(679, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '1') { - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy757; - goto yy758; + YYDEBUG(678, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; } else { - if(yych <= '5') goto yy759; - if(yych <= '9') goto yy760; - goto yy767; + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '.') goto yy719; } -yy680: - YYDEBUG(680, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '.') goto yy721; - } + } else { + if (yych <= 'U') { + if (yych <= '9') goto yy721; + if (yych == 'I') goto yy754; } else { - if(yych <= 'U') { - if(yych <= '9') goto yy723; - if(yych == 'I') goto yy756; - } else { - if(yych == 'W') goto yy681; - if(yych <= 'X') goto yy729; - } + if (yych == 'W') goto yy679; + if (yych <= 'X') goto yy727; } -yy681: - YYDEBUG(681, *YYCURSOR); - { + } +yy679: + YYDEBUG(679, *YYCURSOR); + { DEBUG_OUTPUT("datenoyearrev"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -12740,147 +12700,147 @@ yy681: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -yy682: - YYDEBUG(682, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } +yy680: + YYDEBUG(680, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy754; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy683: - YYDEBUG(683, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy753; - goto yy681; - } + if (yych == 'I') goto yy752; + goto yy679; } -yy684: - YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy746; - if(yych <= 'T') goto yy53; - goto yy745; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy746; - } else { - if(yych == 'u') goto yy745; - goto yy53; - } + } +yy681: + YYDEBUG(681, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; + } else { + if (yych == ' ') goto yy719; + goto yy679; } -yy685: - YYDEBUG(685, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= 'L') { - if(yych == '.') goto yy690; - goto yy53; - } else { - if(yych <= 'M') goto yy691; - if(yych == 'P') goto yy739; - goto yy53; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= 'o') { - if(yych <= 'U') goto yy738; - if(yych == 'm') goto yy691; - goto yy53; - } else { - if(yych <= 'p') goto yy739; - if(yych == 'u') goto yy738; - goto yy53; - } + if (yych == 'I') goto yy751; + goto yy679; } -yy686: - YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy733; - if(yych == 'c') goto yy733; - goto yy53; -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy719; - if(yych == 'o') goto yy719; - goto yy53; -yy688: - YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy695; - if(yych <= '9') goto yy697; - goto yy53; -yy689: - YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } +yy682: + YYDEBUG(682, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy744; + if (yych <= 'T') goto yy53; + goto yy743; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy744; } else { - if(yych <= 'M') goto yy691; - if(yych == 'm') goto yy691; + if (yych == 'u') goto yy743; goto yy53; } -yy690: - YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy691; - if(yych != 'm') goto yy53; -yy691: - YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; + } +yy683: + YYDEBUG(683, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych == '.') goto yy688; goto yy53; } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + if (yych <= 'M') goto yy689; + if (yych == 'P') goto yy737; + goto yy53; } - YYDEBUG(692, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= 'o') { + if (yych <= 'U') goto yy736; + if (yych == 'm') goto yy689; + goto yy53; } else { - if(yych != ' ') goto yy53; + if (yych <= 'p') goto yy737; + if (yych == 'u') goto yy736; + goto yy53; } -yy693: - YYDEBUG(693, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(694, *YYCURSOR); - { + } +yy684: + YYDEBUG(684, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy731; + if (yych == 'c') goto yy731; + goto yy53; +yy685: + YYDEBUG(685, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy717; + if (yych == 'o') goto yy717; + goto yy53; +yy686: + YYDEBUG(686, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy693; + if (yych <= '9') goto yy695; + goto yy53; +yy687: + YYDEBUG(687, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy689; + if (yych == 'm') goto yy689; + goto yy53; + } +yy688: + YYDEBUG(688, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy689; + if (yych != 'm') goto yy53; +yy689: + YYDEBUG(689, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(690, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + } else { + if (yych != ' ') goto yy53; + } +yy691: + YYDEBUG(691, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(692, *YYCURSOR); + { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); TIMELIB_INIT; TIMELIB_HAVE_TIME(); @@ -12895,19 +12855,19 @@ yy693: TIMELIB_DEINIT; return TIMELIB_TIME12; } -yy695: - YYDEBUG(695, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy698; - } else { - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - } -yy696: - YYDEBUG(696, *YYCURSOR); - { +yy693: + YYDEBUG(693, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy696; + } else { + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + } +yy694: + YYDEBUG(694, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); TIMELIB_INIT; @@ -12931,274 +12891,274 @@ yy696: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } +yy695: + YYDEBUG(695, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy696; + if (yych != ':') goto yy694; +yy696: + YYDEBUG(696, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy697; + if (yych <= '6') goto yy698; + if (yych <= '9') goto yy699; + goto yy53; yy697: - YYDEBUG(697, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy698; - if(yych != ':') goto yy696; + YYDEBUG(697, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy703; + goto yy694; yy698: - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy699; - if(yych <= '6') goto yy700; - if(yych <= '9') goto yy701; - goto yy53; + YYDEBUG(698, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych == '0') goto yy703; + goto yy694; yy699: - YYDEBUG(699, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy705; - goto yy696; + YYDEBUG(699, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '.') goto yy694; yy700: - YYDEBUG(700, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych == '0') goto yy705; - goto yy696; + YYDEBUG(700, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy701: - YYDEBUG(701, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '.') goto yy696; -yy702: - YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(701, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(702, *YYCURSOR); + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy701; + goto yy694; yy703: - YYDEBUG(703, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(704, *YYCURSOR); - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy703; - goto yy696; -yy705: - YYDEBUG(705, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy696; - } else { - if(yych <= ' ') goto yy706; - if(yych == '.') goto yy702; - goto yy696; - } + YYDEBUG(703, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy694; } else { - if(yych <= '`') { - if(yych <= 'A') goto yy708; - if(yych == 'P') goto yy708; - goto yy696; - } else { - if(yych <= 'a') goto yy708; - if(yych == 'p') goto yy708; - goto yy696; - } - } -yy706: - YYDEBUG(706, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(707, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy706; - goto yy53; - } else { - if(yych <= ' ') goto yy706; - if(yych <= '@') goto yy53; - } - } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy708; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy704; + if (yych == '.') goto yy700; + goto yy694; } -yy708: - YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'A') goto yy706; + if (yych == 'P') goto yy706; + goto yy694; } else { - if(yych <= 'M') goto yy710; - if(yych == 'm') goto yy710; - goto yy53; + if (yych <= 'a') goto yy706; + if (yych == 'p') goto yy706; + goto yy694; } - YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy710; - if(yych != 'm') goto yy53; -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; + } +yy704: + YYDEBUG(704, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(705, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy704; goto yy53; } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + if (yych <= ' ') goto yy704; + if (yych <= '@') goto yy53; } - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; - goto yy693; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych == ' ') goto yy693; - goto yy53; + if (yych <= 'a') goto yy706; + if (yych != 'p') goto yy53; } -yy712: - YYDEBUG(712, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy713; - if(yych <= 0x1F) goto yy696; - } else { - if(yych == '.') goto yy698; - if(yych <= '9') goto yy696; - goto yy698; - } + } +yy706: + YYDEBUG(706, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy708; + if (yych == 'm') goto yy708; + goto yy53; + } + YYDEBUG(707, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy708; + if (yych != 'm') goto yy53; +yy708: + YYDEBUG(708, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(709, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + goto yy691; + } else { + if (yych == ' ') goto yy691; + goto yy53; + } +yy710: + YYDEBUG(710, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy711; + if (yych <= 0x1F) goto yy694; + } else { + if (yych == '.') goto yy696; + if (yych <= '9') goto yy694; + goto yy696; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy713; + if (yych <= 'O') goto yy694; + goto yy713; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy715; - if(yych <= 'O') goto yy696; - goto yy715; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy713; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy715; - } else { - if(yych == 'p') goto yy715; - goto yy696; - } + if (yych == 'p') goto yy713; + goto yy694; } } -yy713: - YYDEBUG(713, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(714, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy713; - goto yy53; - } else { - if(yych <= ' ') goto yy713; - if(yych <= '@') goto yy53; - } + } +yy711: + YYDEBUG(711, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(712, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy711; + goto yy53; } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy715; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy711; + if (yych <= '@') goto yy53; } -yy715: - YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych <= 'M') goto yy717; - if(yych == 'm') goto yy717; - goto yy53; + if (yych <= 'a') goto yy713; + if (yych != 'p') goto yy53; } - YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy717; - if(yych != 'm') goto yy53; + } +yy713: + YYDEBUG(713, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy715; + if (yych == 'm') goto yy715; + goto yy53; + } + YYDEBUG(714, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy715; + if (yych != 'm') goto yy53; +yy715: + YYDEBUG(715, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + goto yy691; + } else { + if (yych == ' ') goto yy691; + goto yy53; + } yy717: - YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; - goto yy53; - } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy718; + if (yych != 'v') goto yy53; +yy718: + YYDEBUG(718, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; } - YYDEBUG(718, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; - goto yy693; + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych == ' ') goto yy693; - goto yy53; + if (yych <= 'E') goto yy723; + if (yych == 'e') goto yy723; + goto yy679; } + } yy719: - YYDEBUG(719, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy720; - if(yych != 'v') goto yy53; + YYDEBUG(719, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; yy720: - YYDEBUG(720, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - } + YYDEBUG(720, *YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy719; + if (yych <= 0x1F) goto yy53; + goto yy719; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy53; + goto yy719; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy725; - if(yych == 'e') goto yy725; - goto yy681; - } + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; } + } yy721: - YYDEBUG(721, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; + YYDEBUG(721, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy722; + if (yych <= '9') goto yy728; yy722: - YYDEBUG(722, *YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy721; - if(yych <= 0x1F) goto yy53; - goto yy721; - } else { - if(yych <= '.') { - if(yych <= ',') goto yy53; - goto yy721; - } else { - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - } - } -yy723: - YYDEBUG(723, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy724; - if(yych <= '9') goto yy730; -yy724: - YYDEBUG(724, *YYCURSOR); - { + YYDEBUG(722, *YYCURSOR); + { DEBUG_OUTPUT("datefull"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -13210,1408 +13170,1410 @@ yy724: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } +yy723: + YYDEBUG(723, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy724; + if (yych != 'm') goto yy53; +yy724: + YYDEBUG(724, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy725; + if (yych != 'b') goto yy53; yy725: - YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy726; - if(yych != 'm') goto yy53; + YYDEBUG(725, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy726; + if (yych != 'e') goto yy53; yy726: - YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy727; - if(yych != 'b') goto yy53; + YYDEBUG(726, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych != 'r') goto yy53; yy727: - YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy728; - if(yych != 'e') goto yy53; + YYDEBUG(727, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy719; + if (yych <= 0x1F) goto yy679; + goto yy719; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy679; + goto yy719; + } else { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } + } yy728: - YYDEBUG(728, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych != 'r') goto yy53; + YYDEBUG(728, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych >= ':') goto yy722; yy729: - YYDEBUG(729, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy721; - if(yych <= 0x1F) goto yy681; - goto yy721; + YYDEBUG(729, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych >= ':') goto yy722; + YYDEBUG(730, *YYCURSOR); + yych = *++YYCURSOR; + goto yy722; +yy731: + YYDEBUG(731, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy732; + if (yych != 't') goto yy53; +yy732: + YYDEBUG(732, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'N') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= '.') { - if(yych <= ',') goto yy681; - goto yy721; - } else { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } + if (yych <= 'O') goto yy733; + if (yych != 'o') goto yy679; } -yy730: - YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych >= ':') goto yy724; -yy731: - YYDEBUG(731, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych >= ':') goto yy724; - YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - goto yy724; + } yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy734; - if(yych != 't') goto yy53; + YYDEBUG(733, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy734; + if (yych != 'b') goto yy53; yy734: - YYDEBUG(734, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } - } else { - if(yych <= 'N') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'O') goto yy735; - if(yych != 'o') goto yy681; - } - } + YYDEBUG(734, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy735; + if (yych != 'e') goto yy53; yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy736; - if(yych != 'b') goto yy53; + YYDEBUG(735, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy737; - if(yych != 'e') goto yy53; + YYDEBUG(736, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy740; + if (yych == 'g') goto yy740; + goto yy53; yy737: - YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; + YYDEBUG(737, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy738; + if (yych != 'r') goto yy53; yy738: - YYDEBUG(738, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy742; - if(yych == 'g') goto yy742; - goto yy53; + YYDEBUG(738, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'I') goto yy739; + if (yych != 'i') goto yy679; + } + } yy739: - YYDEBUG(739, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy740; - if(yych != 'r') goto yy53; + YYDEBUG(739, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy727; + if (yych == 'l') goto yy727; + goto yy53; yy740: - YYDEBUG(740, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(740, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'I') goto yy741; - if(yych != 'i') goto yy681; - } + if (yych <= 'U') goto yy741; + if (yych != 'u') goto yy679; } + } yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'L') goto yy729; - if(yych == 'l') goto yy729; - goto yy53; + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy742; + if (yych != 's') goto yy53; yy742: - YYDEBUG(742, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(742, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy727; + if (yych == 't') goto yy727; + goto yy53; +yy743: + YYDEBUG(743, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy750; + if (yych <= 'M') goto yy53; + goto yy749; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy750; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy743; - if(yych != 'u') goto yy681; - } + if (yych == 'n') goto yy749; + goto yy53; } -yy743: - YYDEBUG(743, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy744; - if(yych != 's') goto yy53; + } yy744: - YYDEBUG(744, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy729; - if(yych == 't') goto yy729; - goto yy53; + YYDEBUG(744, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy745; + if (yych != 'n') goto yy53; yy745: - YYDEBUG(745, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy752; - if(yych <= 'M') goto yy53; - goto yy751; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy752; - } else { - if(yych == 'n') goto yy751; - goto yy53; - } + YYDEBUG(745, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; } -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy747; - if(yych != 'n') goto yy53; -yy747: - YYDEBUG(747, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy748; - if(yych != 'u') goto yy681; - } + if (yych <= 'U') goto yy746; + if (yych != 'u') goto yy679; } + } +yy746: + YYDEBUG(746, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy747; + if (yych != 'a') goto yy53; +yy747: + YYDEBUG(747, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy748; + if (yych != 'r') goto yy53; yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy749; - if(yych != 'a') goto yy53; + YYDEBUG(748, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy53; yy749: - YYDEBUG(749, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy750; - if(yych != 'r') goto yy53; + YYDEBUG(749, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'E') goto yy727; + if (yych == 'e') goto yy727; + goto yy679; + } + } yy750: - YYDEBUG(750, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy53; + YYDEBUG(750, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'X') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy679; + } + } yy751: - YYDEBUG(751, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(751, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy729; - if(yych == 'e') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy752: - YYDEBUG(752, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= 'X') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy681; - } + if (yych == 'I') goto yy727; + goto yy679; } -yy753: - YYDEBUG(753, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } +yy752: + YYDEBUG(752, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy754: - YYDEBUG(754, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych != 'I') goto yy681; - } + if (yych != 'I') goto yy679; } - YYDEBUG(755, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } + YYDEBUG(753, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy756: - YYDEBUG(756, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == 'I') goto yy727; + goto yy679; } -yy757: - YYDEBUG(757, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy802; - if(yych <= ':') goto yy698; - goto yy696; + } +yy754: + YYDEBUG(754, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; + } else { + if (yych == ' ') goto yy719; + goto yy679; } -yy758: - YYDEBUG(758, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - if(yych <= '.') goto yy791; - goto yy696; + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '2') goto yy802; - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - goto yy696; + if (yych == 'I') goto yy727; + goto yy679; } + } +yy755: + YYDEBUG(755, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy801; + if (yych <= ':') goto yy696; + goto yy694; + } +yy756: + YYDEBUG(756, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + if (yych <= '.') goto yy788; + goto yy694; + } else { + if (yych <= '2') goto yy801; + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + goto yy694; + } +yy757: + YYDEBUG(757, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + goto yy694; + } +yy758: + YYDEBUG(758, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych == ':') goto yy696; + goto yy694; + } yy759: - YYDEBUG(759, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - goto yy696; - } + YYDEBUG(759, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy782; + if (yych == 'e') goto yy782; + goto yy53; yy760: - YYDEBUG(760, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych == ':') goto yy698; - goto yy696; - } + YYDEBUG(760, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy779; + if (yych == 'a') goto yy779; + goto yy53; yy761: - YYDEBUG(761, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy784; - if(yych == 'e') goto yy784; - goto yy53; + YYDEBUG(761, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy737; + if (yych <= 'T') goto yy53; + goto yy736; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy737; + } else { + if (yych == 'u') goto yy736; + goto yy53; + } + } yy762: - YYDEBUG(762, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy781; - if(yych == 'a') goto yy781; - goto yy53; + YYDEBUG(762, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy772; + if (yych == 'e') goto yy772; + goto yy53; yy763: - YYDEBUG(763, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy739; - if(yych <= 'T') goto yy53; - goto yy738; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy739; - } else { - if(yych == 'u') goto yy738; - goto yy53; - } - } + YYDEBUG(763, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy766; + if (yych == 'e') goto yy766; + goto yy53; yy764: - YYDEBUG(764, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy774; - if(yych == 'e') goto yy774; - goto yy53; + YYDEBUG(764, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; yy765: - YYDEBUG(765, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy768; - if(yych == 'e') goto yy768; - goto yy53; + YYDEBUG(765, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy761; + case 'D': + case 'd': goto yy763; + case 'F': + case 'f': goto yy759; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy760; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'S': + case 's': goto yy762; + case 'V': goto yy680; + case 'X': goto yy681; + default: goto yy53; + } yy766: - YYDEBUG(766, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(766, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy767; + if (yych != 'c') goto yy53; yy767: - YYDEBUG(767, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy763; - case 'D': - case 'd': goto yy765; - case 'F': - case 'f': goto yy761; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy762; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'S': - case 's': goto yy764; - case 'V': goto yy682; - case 'X': goto yy683; - default: goto yy53; + YYDEBUG(767, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; } -yy768: - YYDEBUG(768, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy769; - if(yych != 'c') goto yy53; -yy769: - YYDEBUG(769, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy770; - if(yych != 'e') goto yy681; - } + if (yych <= 'E') goto yy768; + if (yych != 'e') goto yy679; } + } +yy768: + YYDEBUG(768, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy769; + if (yych != 'm') goto yy53; +yy769: + YYDEBUG(769, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy770; + if (yych != 'b') goto yy53; yy770: - YYDEBUG(770, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy771; - if(yych != 'm') goto yy53; + YYDEBUG(770, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy771; + if (yych != 'e') goto yy53; yy771: - YYDEBUG(771, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy772; - if(yych != 'b') goto yy53; + YYDEBUG(771, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy772: - YYDEBUG(772, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy773; - if(yych != 'e') goto yy53; + YYDEBUG(772, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy773; + if (yych != 'p') goto yy53; yy773: - YYDEBUG(773, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; -yy774: - YYDEBUG(774, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy775; - if(yych != 'p') goto yy53; -yy775: - YYDEBUG(775, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(773, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'S') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'S') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'T') goto yy776; - if(yych != 't') goto yy681; - } + if (yych <= 'T') goto yy774; + if (yych != 't') goto yy679; } -yy776: - YYDEBUG(776, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } +yy774: + YYDEBUG(774, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy777; - if(yych != 'e') goto yy681; - } + if (yych <= 'E') goto yy775; + if (yych != 'e') goto yy679; } + } +yy775: + YYDEBUG(775, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy776; + if (yych != 'm') goto yy53; +yy776: + YYDEBUG(776, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy777; + if (yych != 'b') goto yy53; yy777: - YYDEBUG(777, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy778; - if(yych != 'm') goto yy53; + YYDEBUG(777, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy778; + if (yych != 'e') goto yy53; yy778: - YYDEBUG(778, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy779; - if(yych != 'b') goto yy53; + YYDEBUG(778, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy779: - YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy780; - if(yych != 'e') goto yy53; + YYDEBUG(779, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy780; + if (yych <= 'X') goto yy53; + goto yy727; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy727; + goto yy53; + } + } yy780: - YYDEBUG(780, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; -yy781: - YYDEBUG(781, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy782; - if(yych <= 'X') goto yy53; - goto yy729; + YYDEBUG(780, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'B') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy729; - goto yy53; - } + if (yych <= 'C') goto yy781; + if (yych != 'c') goto yy679; } + } +yy781: + YYDEBUG(781, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy727; + if (yych == 'h') goto yy727; + goto yy53; yy782: - YYDEBUG(782, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(782, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy783; + if (yych != 'b') goto yy53; +yy783: + YYDEBUG(783, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'Q') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'B') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'C') goto yy783; - if(yych != 'c') goto yy681; - } + if (yych <= 'R') goto yy784; + if (yych != 'r') goto yy679; } -yy783: - YYDEBUG(783, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy729; - if(yych == 'h') goto yy729; - goto yy53; + } yy784: - YYDEBUG(784, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy785; - if(yych != 'b') goto yy53; + YYDEBUG(784, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy785; + if (yych != 'u') goto yy53; yy785: - YYDEBUG(785, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } - } else { - if(yych <= 'Q') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'R') goto yy786; - if(yych != 'r') goto yy681; - } - } + YYDEBUG(785, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy786; + if (yych != 'a') goto yy53; yy786: - YYDEBUG(786, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy787; - if(yych != 'u') goto yy53; + YYDEBUG(786, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy787; + if (yych != 'r') goto yy53; yy787: - YYDEBUG(787, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy788; - if(yych != 'a') goto yy53; + YYDEBUG(787, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy53; yy788: - YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy789; - if(yych != 'r') goto yy53; + YYDEBUG(788, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy795; + if (yych <= '6') goto yy796; + if (yych <= '9') goto yy797; + goto yy53; yy789: - YYDEBUG(789, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy53; -yy790: - YYDEBUG(790, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy801; - goto yy53; + YYDEBUG(789, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(790, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy791: - YYDEBUG(791, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy792; - if(yych <= '6') goto yy793; - if(yych <= '9') goto yy794; - goto yy53; + YYDEBUG(791, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy792: - YYDEBUG(792, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy800; - goto yy696; -yy793: - YYDEBUG(793, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy702; - goto yy696; - } else { - if(yych <= '0') goto yy800; - if(yych <= '9') goto yy795; - goto yy696; - } -yy794: - YYDEBUG(794, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych >= ':') goto yy696; -yy795: - YYDEBUG(795, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') goto yy796; - if(yych <= '9') goto yy797; -yy796: - YYDEBUG(796, *YYCURSOR); - { - DEBUG_OUTPUT("pointed date YY"); + YYDEBUG(792, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(793, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(794, *YYCURSOR); + { + 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, 2); - TIMELIB_PROCESS_YEAR(s->time->y); + s->time->y = timelib_get_nr((char **) &ptr, 4); TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } +yy795: + YYDEBUG(795, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy800; + goto yy694; +yy796: + YYDEBUG(796, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy700; + goto yy694; + } else { + if (yych <= '0') goto yy800; + if (yych <= '9') goto yy798; + goto yy694; + } yy797: - YYDEBUG(797, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(798, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(799, *YYCURSOR); - { - DEBUG_OUTPUT("pointed date YYYY"); + YYDEBUG(797, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych >= ':') goto yy694; +yy798: + YYDEBUG(798, *YYCURSOR); + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy799; + if (yych <= '9') goto yy792; +yy799: + YYDEBUG(799, *YYCURSOR); + { + 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, 4); + s->time->y = timelib_get_nr((char **) &ptr, 2); + TIMELIB_PROCESS_YEAR(s->time->y); TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } yy800: - YYDEBUG(800, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy706; - if(yych <= 0x1F) goto yy696; - goto yy706; - } else { - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - goto yy797; - } + YYDEBUG(800, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy704; + if (yych <= 0x1F) goto yy694; + goto yy704; + } else { + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + goto yy792; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy706; + if (yych <= 'O') goto yy694; + goto yy706; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy708; - if(yych <= 'O') goto yy696; - goto yy708; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy706; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy708; - } else { - if(yych == 'p') goto yy708; - goto yy696; - } + if (yych == 'p') goto yy706; + goto yy694; } } + } yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy795; - goto yy53; -yy802: - YYDEBUG(802, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy713; - if(yych <= 0x1F) goto yy696; - goto yy713; - } else { - if(yych <= '-') { - if(yych <= ',') goto yy696; - goto yy790; - } else { - if(yych <= '.') goto yy791; - if(yych <= '9') goto yy696; - goto yy698; - } + YYDEBUG(801, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy711; + if (yych <= 0x1F) goto yy694; + goto yy711; + } else { + if (yych <= '-') { + if (yych <= ',') goto yy694; + goto yy789; + } else { + if (yych <= '.') goto yy788; + if (yych <= '9') goto yy694; + goto yy696; } + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy713; + if (yych <= 'O') goto yy694; + goto yy713; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy715; - if(yych <= 'O') goto yy696; - goto yy715; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy713; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy715; - } else { - if(yych == 'p') goto yy715; - goto yy696; - } + if (yych == 'p') goto yy713; + goto yy694; } } + } +yy802: + YYDEBUG(802, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy804; + goto yy53; + } yy803: - YYDEBUG(803, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy805; - goto yy53; - } + YYDEBUG(803, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } yy804: - YYDEBUG(804, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; - } + YYDEBUG(804, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + if (yych <= '.') goto yy789; + goto yy53; yy805: - YYDEBUG(805, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - if(yych <= '.') goto yy790; - goto yy53; -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy838; - if(yych <= 'T') goto yy53; + YYDEBUG(805, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy837; + if (yych <= 'T') goto yy53; + goto yy836; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; goto yy837; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy838; - } else { - if(yych == 'u') goto yy837; - goto yy53; - } + if (yych == 'u') goto yy836; + goto yy53; } + } +yy806: + YYDEBUG(806, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy834; + if (yych == 'e') goto yy834; + goto yy53; yy807: - YYDEBUG(807, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy835; - if(yych == 'e') goto yy835; - goto yy53; + YYDEBUG(807, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy831; + if (yych == 'a') goto yy831; + goto yy53; yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy832; - if(yych == 'a') goto yy832; - goto yy53; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy829; - if(yych <= 'T') goto yy53; + YYDEBUG(808, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy828; + if (yych <= 'T') goto yy53; + goto yy827; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; goto yy828; } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy829; - } else { - if(yych == 'u') goto yy828; - goto yy53; - } + if (yych == 'u') goto yy827; + goto yy53; } + } +yy809: + YYDEBUG(809, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy824; + if (yych == 'e') goto yy824; + goto yy53; yy810: - YYDEBUG(810, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy825; - if(yych == 'e') goto yy825; - goto yy53; + YYDEBUG(810, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy822; + if (yych == 'c') goto yy822; + goto yy53; yy811: - YYDEBUG(811, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy823; - if(yych == 'c') goto yy823; - goto yy53; + YYDEBUG(811, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy820; + if (yych == 'o') goto yy820; + goto yy53; yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy821; - if(yych == 'o') goto yy821; - goto yy53; + YYDEBUG(812, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy813; + if (yych != 'e') goto yy53; yy813: - YYDEBUG(813, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy814; - if(yych != 'e') goto yy53; + YYDEBUG(813, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy814; + if (yych != 'c') goto yy53; yy814: - YYDEBUG(814, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy815; - if(yych != 'c') goto yy53; -yy815: - YYDEBUG(815, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych >= '.') goto yy721; - } + YYDEBUG(814, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych >= '.') goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy770; - if(yych == 'e') goto yy770; - goto yy681; - } + if (yych <= 'E') goto yy768; + if (yych == 'e') goto yy768; + goto yy679; } + } +yy815: + YYDEBUG(815, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy720; + if (yych <= '0') goto yy816; + if (yych <= '2') goto yy817; + if (yych <= '3') goto yy818; + goto yy720; yy816: - YYDEBUG(816, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy722; - if(yych <= '0') goto yy817; - if(yych <= '2') goto yy818; - if(yych <= '3') goto yy819; - goto yy722; + YYDEBUG(816, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy819; + goto yy722; yy817: - YYDEBUG(817, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy820; - goto yy724; + YYDEBUG(817, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy819; + goto yy722; yy818: - YYDEBUG(818, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy820; - goto yy724; + YYDEBUG(818, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '1') goto yy819; + if (yych <= '9') goto yy728; + goto yy722; yy819: - YYDEBUG(819, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '1') goto yy820; - if(yych <= '9') goto yy730; - goto yy724; + YYDEBUG(819, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy729; + goto yy722; yy820: - YYDEBUG(820, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy731; - goto yy724; + YYDEBUG(820, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy821; + if (yych != 'v') goto yy53; yy821: - YYDEBUG(821, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy822; - if(yych != 'v') goto yy53; -yy822: - YYDEBUG(822, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(821, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy725; - if(yych == 'e') goto yy725; - goto yy681; - } + if (yych <= 'E') goto yy723; + if (yych == 'e') goto yy723; + goto yy679; } + } +yy822: + YYDEBUG(822, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy823; + if (yych != 't') goto yy53; yy823: - YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy824; - if(yych != 't') goto yy53; -yy824: - YYDEBUG(824, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(823, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'N') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'N') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'O') goto yy735; - if(yych == 'o') goto yy735; - goto yy681; - } + if (yych <= 'O') goto yy733; + if (yych == 'o') goto yy733; + goto yy679; } + } +yy824: + YYDEBUG(824, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy825; + if (yych != 'p') goto yy53; yy825: - YYDEBUG(825, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy826; - if(yych != 'p') goto yy53; -yy826: - YYDEBUG(826, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(825, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'S') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'S') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'T') goto yy827; - if(yych != 't') goto yy681; - } + if (yych <= 'T') goto yy826; + if (yych != 't') goto yy679; } -yy827: - YYDEBUG(827, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + } +yy826: + YYDEBUG(826, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy777; - if(yych == 'e') goto yy777; - goto yy681; - } + if (yych <= 'E') goto yy775; + if (yych == 'e') goto yy775; + goto yy679; } + } +yy827: + YYDEBUG(827, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy830; + if (yych == 'g') goto yy830; + goto yy53; yy828: - YYDEBUG(828, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy831; - if(yych == 'g') goto yy831; - goto yy53; + YYDEBUG(828, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy829; + if (yych != 'r') goto yy53; yy829: - YYDEBUG(829, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy830; - if(yych != 'r') goto yy53; + YYDEBUG(829, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'I') goto yy739; + if (yych == 'i') goto yy739; + goto yy679; + } + } yy830: - YYDEBUG(830, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(830, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'I') goto yy741; - if(yych == 'i') goto yy741; - goto yy681; - } + if (yych <= 'U') goto yy741; + if (yych == 'u') goto yy741; + goto yy679; } + } yy831: - YYDEBUG(831, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(831, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy832; + if (yych <= 'X') goto yy53; + goto yy833; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy743; - if(yych == 'u') goto yy743; - goto yy681; - } + if (yych == 'y') goto yy833; + goto yy53; } + } yy832: - YYDEBUG(832, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy833; - if(yych <= 'X') goto yy53; - goto yy834; + YYDEBUG(832, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'B') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy834; - goto yy53; - } + if (yych <= 'C') goto yy781; + if (yych == 'c') goto yy781; + goto yy679; } + } yy833: - YYDEBUG(833, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(833, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= 'B') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'C') goto yy783; - if(yych == 'c') goto yy783; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy834: - YYDEBUG(834, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '.') { + if (yych <= '-') goto yy815; + goto yy719; } else { - if(yych <= '.') { - if(yych <= '-') goto yy816; - goto yy721; - } else { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } + } +yy834: + YYDEBUG(834, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy835; + if (yych != 'b') goto yy53; yy835: - YYDEBUG(835, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy836; - if(yych != 'b') goto yy53; -yy836: - YYDEBUG(836, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(835, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'Q') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'Q') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'R') goto yy786; - if(yych == 'r') goto yy786; - goto yy681; - } + if (yych <= 'R') goto yy784; + if (yych == 'r') goto yy784; + goto yy679; } -yy837: - YYDEBUG(837, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy841; - if(yych <= 'M') goto yy53; + } +yy836: + YYDEBUG(836, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy840; + if (yych <= 'M') goto yy53; + goto yy839; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; goto yy840; } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy841; - } else { - if(yych == 'n') goto yy840; - goto yy53; - } + if (yych == 'n') goto yy839; + goto yy53; } + } +yy837: + YYDEBUG(837, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy838; + if (yych != 'n') goto yy53; yy838: - YYDEBUG(838, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy839; - if(yych != 'n') goto yy53; + YYDEBUG(838, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'U') goto yy746; + if (yych == 'u') goto yy746; + goto yy679; + } + } yy839: - YYDEBUG(839, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(839, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy748; - if(yych == 'u') goto yy748; - goto yy681; - } + if (yych <= 'E') goto yy727; + if (yych == 'e') goto yy727; + goto yy679; } + } yy840: - YYDEBUG(840, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } - } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy729; - if(yych == 'e') goto yy729; - goto yy681; - } + YYDEBUG(840, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; } -yy841: - YYDEBUG(841, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + } else { + if (yych <= 'X') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'X') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy681; - } + if (yych <= 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy679; } + } +yy841: + YYDEBUG(841, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy842; + if (yych <= '3') goto yy844; + if (yych <= '9') goto yy845; + goto yy53; yy842: - YYDEBUG(842, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy843; - if(yych <= '3') goto yy845; - if(yych <= '9') goto yy846; - goto yy53; -yy843: - YYDEBUG(843, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy852; - if(yych >= 'n') goto yy848; + YYDEBUG(842, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy851; + if (yych >= 'n') goto yy847; + } else { + if (yych <= 'r') { + if (yych >= 'r') goto yy848; } else { - if(yych <= 'r') { - if(yych >= 'r') goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; } -yy844: - YYDEBUG(844, *YYCURSOR); - { + } +yy843: + YYDEBUG(843, *YYCURSOR); + { DEBUG_OUTPUT("gnudateshort"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -14622,112 +14584,112 @@ yy844: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -yy845: - YYDEBUG(845, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - goto yy852; - } else { - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; - goto yy848; - } +yy844: + YYDEBUG(844, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '1') { + if (yych <= '/') goto yy843; + goto yy851; + } else { + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; + } + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; + goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy846: - YYDEBUG(846, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; + } +yy845: + YYDEBUG(845, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } + } +yy846: + YYDEBUG(846, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy850; + goto yy53; yy847: - YYDEBUG(847, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy851; - goto yy53; + YYDEBUG(847, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy850; + goto yy53; yy848: - YYDEBUG(848, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy851; - goto yy53; + YYDEBUG(848, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy850; + goto yy53; yy849: - YYDEBUG(849, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy851; - goto yy53; + YYDEBUG(849, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != 'h') goto yy53; yy850: - YYDEBUG(850, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 'h') goto yy53; + YYDEBUG(850, *YYCURSOR); + yych = *++YYCURSOR; + goto yy843; yy851: - YYDEBUG(851, *YYCURSOR); - yych = *++YYCURSOR; - goto yy844; -yy852: - YYDEBUG(852, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy797; - if(yych <= 'm') goto yy844; + YYDEBUG(851, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy792; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy853: - YYDEBUG(853, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') { - if(yych >= '/') goto yy907; - } else { - if(yych <= '9') goto yy856; - if(yych >= 'n') goto yy904; - } + } +yy852: + YYDEBUG(852, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') { + if (yych >= '/') goto yy906; } else { - if(yych <= 'r') { - if(yych >= 'r') goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - } + if (yych <= '9') goto yy855; + if (yych >= 'n') goto yy903; } -yy854: - YYDEBUG(854, *YYCURSOR); - { + } else { + if (yych <= 'r') { + if (yych >= 'r') goto yy904; + } else { + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + } + } +yy853: + YYDEBUG(853, *YYCURSOR); + { DEBUG_OUTPUT("americanshort | american"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -14740,229 +14702,229 @@ yy854: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -yy855: - YYDEBUG(855, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') { - if(yych <= '.') goto yy854; - goto yy907; - } else { - if(yych <= '1') goto yy856; - if(yych <= 'm') goto yy854; - goto yy904; - } +yy854: + YYDEBUG(854, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') { + if (yych <= '.') goto yy853; + goto yy906; + } else { + if (yych <= '1') goto yy855; + if (yych <= 'm') goto yy853; + goto yy903; + } + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy853; + goto yy904; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy854; - goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - goto yy854; - } + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + goto yy853; } -yy856: - YYDEBUG(856, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == '/') goto yy907; - if(yych <= 'm') goto yy854; + } +yy855: + YYDEBUG(855, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == '/') goto yy906; + if (yych <= 'm') goto yy853; + goto yy903; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy853; goto yy904; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy854; - goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - goto yy854; - } + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + goto yy853; } -yy857: - YYDEBUG(857, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy902; - if(yych <= 'T') goto yy53; + } +yy856: + YYDEBUG(856, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy901; + if (yych <= 'T') goto yy53; + goto yy900; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; goto yy901; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy902; - } else { - if(yych == 'u') goto yy901; - goto yy53; - } + if (yych == 'u') goto yy900; + goto yy53; } + } +yy857: + YYDEBUG(857, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy899; + if (yych == 'e') goto yy899; + goto yy53; yy858: - YYDEBUG(858, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy900; - if(yych == 'e') goto yy900; - goto yy53; + YYDEBUG(858, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy898; + if (yych == 'a') goto yy898; + goto yy53; yy859: - YYDEBUG(859, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy899; - if(yych == 'a') goto yy899; - goto yy53; -yy860: - YYDEBUG(860, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy898; - if(yych <= 'T') goto yy53; + YYDEBUG(859, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy897; + if (yych <= 'T') goto yy53; + goto yy896; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; goto yy897; } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy898; - } else { - if(yych == 'u') goto yy897; - goto yy53; - } + if (yych == 'u') goto yy896; + goto yy53; } + } +yy860: + YYDEBUG(860, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy894; + if (yych == 'e') goto yy894; + goto yy53; yy861: - YYDEBUG(861, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy895; - if(yych == 'e') goto yy895; - goto yy53; + YYDEBUG(861, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy893; + if (yych == 'c') goto yy893; + goto yy53; yy862: - YYDEBUG(862, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy894; - if(yych == 'c') goto yy894; - goto yy53; + YYDEBUG(862, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy892; + if (yych == 'o') goto yy892; + goto yy53; yy863: - YYDEBUG(863, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy893; - if(yych == 'o') goto yy893; - goto yy53; + YYDEBUG(863, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy864; + if (yych != 'e') goto yy53; yy864: - YYDEBUG(864, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy865; - if(yych != 'e') goto yy53; + YYDEBUG(864, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy865; + if (yych != 'c') goto yy53; yy865: - YYDEBUG(865, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy866; - if(yych != 'c') goto yy53; + YYDEBUG(865, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; yy866: - YYDEBUG(866, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; -yy867: - YYDEBUG(867, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(868, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(869, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(870, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(871, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(872, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy873; - if(yych <= '2') goto yy874; - goto yy53; + YYDEBUG(866, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(867, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(868, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(869, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(870, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(871, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy872; + if (yych <= '2') goto yy873; + goto yy53; +yy872: + YYDEBUG(872, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy874; + goto yy53; yy873: - YYDEBUG(873, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy875; - goto yy53; + YYDEBUG(873, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; yy874: - YYDEBUG(874, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; -yy875: - YYDEBUG(875, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(876, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(877, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(878, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(879, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy880; - if(yych <= '6') goto yy881; - goto yy53; + YYDEBUG(874, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(875, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(876, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(877, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(878, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy879; + if (yych <= '6') goto yy880; + goto yy53; +yy879: + YYDEBUG(879, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy881; + goto yy53; yy880: - YYDEBUG(880, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy882; - goto yy53; + YYDEBUG(880, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; yy881: - YYDEBUG(881, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; + YYDEBUG(881, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\t') goto yy882; + if (yych != ' ') goto yy53; yy882: - YYDEBUG(882, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 0x09) goto yy883; - if(yych != ' ') goto yy53; -yy883: - YYDEBUG(883, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); - yych = *YYCURSOR; - YYDEBUG(884, *YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy883; - if(yych <= 0x1F) goto yy53; - goto yy883; - } else { - if(yych <= '+') { - if(yych <= '*') goto yy53; - } else { - if(yych != '-') goto yy53; - } - } - YYDEBUG(885, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy886; - if(yych <= '2') goto yy888; - if(yych <= '9') goto yy889; - goto yy53; + YYDEBUG(882, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + YYDEBUG(883, *YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy882; + if (yych <= 0x1F) goto yy53; + goto yy882; + } else { + if (yych <= '+') { + if (yych <= '*') goto yy53; + } else { + if (yych != '-') goto yy53; + } + } + YYDEBUG(884, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy885; + if (yych <= '2') goto yy887; + if (yych <= '9') goto yy888; + goto yy53; +yy885: + YYDEBUG(885, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy886; + if (yych <= '9') goto yy888; + if (yych <= ':') goto yy889; yy886: - YYDEBUG(886, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy887; - if(yych <= '9') goto yy889; - if(yych <= ':') goto yy890; -yy887: - YYDEBUG(887, *YYCURSOR); - { + YYDEBUG(886, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("clf"); TIMELIB_INIT; @@ -14981,501 +14943,549 @@ yy887: TIMELIB_DEINIT; return TIMELIB_CLF; } +yy887: + YYDEBUG(887, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy886; + if (yych >= '4') goto yy890; + } else { + if (yych <= '9') goto yy891; + if (yych <= ':') goto yy889; + goto yy886; + } yy888: - YYDEBUG(888, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy887; - if(yych >= '4') goto yy891; - } else { - if(yych <= '9') goto yy892; - if(yych <= ':') goto yy890; - goto yy887; - } + YYDEBUG(888, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych <= '5') goto yy890; + if (yych <= '9') goto yy891; + if (yych >= ';') goto yy886; yy889: - YYDEBUG(889, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych <= '5') goto yy891; - if(yych <= '9') goto yy892; - if(yych >= ';') goto yy887; + YYDEBUG(889, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych <= '5') goto yy890; + if (yych <= '9') goto yy891; + goto yy886; yy890: - YYDEBUG(890, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych <= '5') goto yy891; - if(yych <= '9') goto yy892; - goto yy887; + YYDEBUG(890, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych >= ':') goto yy886; yy891: - YYDEBUG(891, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych >= ':') goto yy887; + YYDEBUG(891, *YYCURSOR); + yych = *++YYCURSOR; + goto yy886; yy892: - YYDEBUG(892, *YYCURSOR); - yych = *++YYCURSOR; - goto yy887; + YYDEBUG(892, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy865; + if (yych == 'v') goto yy865; + goto yy53; yy893: - YYDEBUG(893, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy866; - if(yych == 'v') goto yy866; - goto yy53; + YYDEBUG(893, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy865; + if (yych == 't') goto yy865; + goto yy53; yy894: - YYDEBUG(894, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy866; - if(yych == 't') goto yy866; - goto yy53; + YYDEBUG(894, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy895; + if (yych != 'p') goto yy53; yy895: - YYDEBUG(895, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy896; - if(yych != 'p') goto yy53; + YYDEBUG(895, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == '/') goto yy866; + goto yy53; + } else { + if (yych <= 'T') goto yy865; + if (yych == 't') goto yy865; + goto yy53; + } yy896: - YYDEBUG(896, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych == '/') goto yy867; - goto yy53; + YYDEBUG(896, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy865; + if (yych == 'g') goto yy865; + goto yy53; +yy897: + YYDEBUG(897, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy865; + if (yych == 'r') goto yy865; + goto yy53; +yy898: + YYDEBUG(898, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy865; + if (yych <= 'X') goto yy53; + goto yy865; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + goto yy865; } else { - if(yych <= 'T') goto yy866; - if(yych == 't') goto yy866; + if (yych == 'y') goto yy865; goto yy53; } -yy897: - YYDEBUG(897, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy866; - if(yych == 'g') goto yy866; - goto yy53; -yy898: - YYDEBUG(898, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy866; - if(yych == 'r') goto yy866; - goto yy53; + } yy899: - YYDEBUG(899, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy866; - if(yych <= 'X') goto yy53; - goto yy866; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - goto yy866; - } else { - if(yych == 'y') goto yy866; - goto yy53; - } - } + YYDEBUG(899, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy865; + if (yych == 'b') goto yy865; + goto yy53; yy900: - YYDEBUG(900, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy866; - if(yych == 'b') goto yy866; - goto yy53; -yy901: - YYDEBUG(901, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy866; - if(yych <= 'M') goto yy53; - goto yy866; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy866; - } else { - if(yych == 'n') goto yy866; - goto yy53; - } + YYDEBUG(900, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy865; + if (yych <= 'M') goto yy53; + goto yy865; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy865; + } else { + if (yych == 'n') goto yy865; + goto yy53; } + } +yy901: + YYDEBUG(901, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy865; + if (yych == 'n') goto yy865; + goto yy53; yy902: - YYDEBUG(902, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy866; - if(yych == 'n') goto yy866; - goto yy53; + YYDEBUG(902, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy911; + goto yy53; yy903: - YYDEBUG(903, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy912; - goto yy53; + YYDEBUG(903, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy911; + goto yy53; yy904: - YYDEBUG(904, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy912; - goto yy53; + YYDEBUG(904, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy911; + goto yy53; yy905: - YYDEBUG(905, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy912; - goto yy53; + YYDEBUG(905, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy911; + goto yy53; yy906: - YYDEBUG(906, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy912; - goto yy53; -yy907: - YYDEBUG(907, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(908, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(909, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(910, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(911, *YYCURSOR); - yych = *++YYCURSOR; - goto yy854; + YYDEBUG(906, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(907, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(908, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(909, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(910, *YYCURSOR); + yych = *++YYCURSOR; + goto yy853; +yy911: + YYDEBUG(911, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '/') goto yy906; + goto yy853; yy912: - YYDEBUG(912, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '/') goto yy907; - goto yy854; + YYDEBUG(912, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '\t') goto yy914; + goto yy765; + } else { + if (yych <= '-') goto yy915; + if (yych <= '.') goto yy914; + if (yych >= '0') goto yy765; + } yy913: - YYDEBUG(913, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') { - if(yych == 0x09) goto yy915; - goto yy767; - } else { - if(yych <= '.') goto yy915; - if(yych >= '0') goto yy767; - } + YYDEBUG(913, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case 'A': + case 'a': goto yy859; + case 'D': + case 'd': goto yy863; + case 'F': + case 'f': goto yy857; + case 'J': + case 'j': goto yy856; + case 'M': + case 'm': goto yy858; + case 'N': + case 'n': goto yy862; + case 'O': + case 'o': goto yy861; + case 'S': + case 's': goto yy860; + default: goto yy53; + } yy914: - YYDEBUG(914, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case 'A': - case 'a': goto yy860; - case 'D': - case 'd': goto yy864; - case 'F': - case 'f': goto yy858; - case 'J': - case 'j': goto yy857; - case 'M': - case 'm': goto yy859; - case 'N': - case 'n': goto yy863; - case 'O': - case 'o': goto yy862; - case 'S': - case 's': goto yy861; - default: goto yy53; - } + YYDEBUG(914, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy765; yy915: - YYDEBUG(915, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy767; + YYDEBUG(915, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy916; + if (yych <= '1') goto yy917; + if (yych <= '9') goto yy918; + goto yy765; yy916: - YYDEBUG(916, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy918; - goto yy53; + YYDEBUG(916, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy918; + goto yy53; yy917: - YYDEBUG(917, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + YYDEBUG(917, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy918: - YYDEBUG(918, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - goto yy53; + YYDEBUG(918, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + goto yy53; yy919: - YYDEBUG(919, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy963; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy961; - goto yy57; + YYDEBUG(919, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + goto yy922; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy921; + goto yy53; + } yy920: - YYDEBUG(920, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy929; - case '1': goto yy930; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy931; - case 'A': - case 'a': goto yy924; - case 'D': - case 'd': goto yy928; - case 'F': - case 'f': goto yy922; - case 'J': - case 'j': goto yy921; - case 'M': - case 'm': goto yy923; - case 'N': - case 'n': goto yy927; - case 'O': - case 'o': goto yy926; - case 'S': - case 's': goto yy925; - default: goto yy53; - } + YYDEBUG(920, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + goto yy922; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } yy921: - YYDEBUG(921, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy960; - if(yych <= 'T') goto yy53; - goto yy959; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy960; - } else { - if(yych == 'u') goto yy959; - goto yy53; - } - } + YYDEBUG(921, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + if (yych >= '/') goto yy53; yy922: - YYDEBUG(922, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy958; - if(yych == 'e') goto yy958; - goto yy53; -yy923: - YYDEBUG(923, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy957; - if(yych == 'a') goto yy957; - goto yy53; + YYDEBUG(922, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(923, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy798; + goto yy53; yy924: - YYDEBUG(924, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy956; - if(yych <= 'T') goto yy53; - goto yy955; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy956; - } else { - if(yych == 'u') goto yy955; - goto yy53; - } - } + YYDEBUG(924, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy968; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy966; + goto yy57; yy925: - YYDEBUG(925, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy953; - if(yych == 'e') goto yy953; - goto yy53; + YYDEBUG(925, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy934; + case '1': goto yy935; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy936; + case 'A': + case 'a': goto yy929; + case 'D': + case 'd': goto yy933; + case 'F': + case 'f': goto yy927; + case 'J': + case 'j': goto yy926; + case 'M': + case 'm': goto yy928; + case 'N': + case 'n': goto yy932; + case 'O': + case 'o': goto yy931; + case 'S': + case 's': goto yy930; + default: goto yy53; + } yy926: - YYDEBUG(926, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy952; - if(yych == 'c') goto yy952; - goto yy53; + YYDEBUG(926, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy965; + if (yych <= 'T') goto yy53; + goto yy964; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy965; + } else { + if (yych == 'u') goto yy964; + goto yy53; + } + } yy927: - YYDEBUG(927, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy951; - if(yych == 'o') goto yy951; - goto yy53; + YYDEBUG(927, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy963; + if (yych == 'e') goto yy963; + goto yy53; yy928: - YYDEBUG(928, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy943; - if(yych == 'e') goto yy943; - goto yy53; + YYDEBUG(928, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy962; + if (yych == 'a') goto yy962; + goto yy53; yy929: - YYDEBUG(929, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy936; - goto yy53; + YYDEBUG(929, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy961; + if (yych <= 'T') goto yy53; + goto yy960; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy961; + } else { + if (yych == 'u') goto yy960; + goto yy53; + } + } yy930: - YYDEBUG(930, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy936; - goto yy53; + YYDEBUG(930, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy958; + if (yych == 'e') goto yy958; + goto yy53; yy931: - YYDEBUG(931, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; + YYDEBUG(931, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy957; + if (yych == 'c') goto yy957; + goto yy53; yy932: - YYDEBUG(932, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy933; - if(yych <= '3') goto yy934; - if(yych <= '9') goto yy935; - goto yy53; + YYDEBUG(932, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy956; + if (yych == 'o') goto yy956; + goto yy53; yy933: - YYDEBUG(933, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy935; - if(yych <= 'm') goto yy844; + YYDEBUG(933, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy948; + if (yych == 'e') goto yy948; + goto yy53; +yy934: + YYDEBUG(934, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy941; + goto yy53; +yy935: + YYDEBUG(935, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy941; + goto yy53; +yy936: + YYDEBUG(936, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; +yy937: + YYDEBUG(937, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy938; + if (yych <= '3') goto yy939; + if (yych <= '9') goto yy940; + goto yy53; +yy938: + YYDEBUG(938, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy940; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy934: - YYDEBUG(934, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '1') goto yy935; - if(yych <= 'm') goto yy844; + } +yy939: + YYDEBUG(939, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '1') goto yy940; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } - } -yy935: - YYDEBUG(935, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy848; - goto yy844; - } else { - if(yych <= 'r') goto yy849; - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } -yy936: - YYDEBUG(936, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; - YYDEBUG(937, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy939; - } else { - if(yych <= '3') goto yy940; - if(yych <= '9') goto yy935; - goto yy53; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } - YYDEBUG(938, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy941; - if(yych <= 'm') goto yy844; + } +yy940: + YYDEBUG(940, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy847; + goto yy843; + } else { + if (yych <= 'r') goto yy848; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; + } +yy941: + YYDEBUG(941, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; + YYDEBUG(942, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy944; + } else { + if (yych <= '3') goto yy945; + if (yych <= '9') goto yy940; + goto yy53; + } + YYDEBUG(943, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy939: - YYDEBUG(939, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy941; - if(yych <= 'm') goto yy844; + } +yy944: + YYDEBUG(944, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy940: - YYDEBUG(940, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '1') goto yy941; - if(yych <= 'm') goto yy844; + } +yy945: + YYDEBUG(945, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '1') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy941: - YYDEBUG(941, *YYCURSOR); - yyaccept = 16; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy848; - } else { - if(yych <= 'r') goto yy849; - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - } -yy942: - YYDEBUG(942, *YYCURSOR); - { + } +yy946: + YYDEBUG(946, *YYCURSOR); + yyaccept = 16; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy847; + } else { + if (yych <= 'r') goto yy848; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + } +yy947: + YYDEBUG(947, *YYCURSOR); + { DEBUG_OUTPUT("iso8601date2"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15486,45 +15496,45 @@ yy942: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -yy943: - YYDEBUG(943, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy944; - if(yych != 'c') goto yy53; -yy944: - YYDEBUG(944, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; -yy945: - YYDEBUG(945, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy946; - if(yych <= '2') goto yy947; - if(yych <= '3') goto yy948; - goto yy53; -yy946: - YYDEBUG(946, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy949; - goto yy53; -yy947: - YYDEBUG(947, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy949; - goto yy53; yy948: - YYDEBUG(948, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; + YYDEBUG(948, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy949; + if (yych != 'c') goto yy53; yy949: - YYDEBUG(949, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(950, *YYCURSOR); - { + YYDEBUG(949, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; +yy950: + YYDEBUG(950, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy951; + if (yych <= '2') goto yy952; + if (yych <= '3') goto yy953; + goto yy53; +yy951: + YYDEBUG(951, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy954; + goto yy53; +yy952: + YYDEBUG(952, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy954; + goto yy53; +yy953: + YYDEBUG(953, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; +yy954: + YYDEBUG(954, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(955, *YYCURSOR); + { DEBUG_OUTPUT("pgtextreverse"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15535,301 +15545,301 @@ yy949: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -yy951: - YYDEBUG(951, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy944; - if(yych == 'v') goto yy944; - goto yy53; -yy952: - YYDEBUG(952, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy944; - if(yych == 't') goto yy944; - goto yy53; -yy953: - YYDEBUG(953, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy954; - if(yych != 'p') goto yy53; -yy954: - YYDEBUG(954, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych == '-') goto yy945; - goto yy53; - } else { - if(yych <= 'T') goto yy944; - if(yych == 't') goto yy944; - goto yy53; - } -yy955: - YYDEBUG(955, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy944; - if(yych == 'g') goto yy944; - goto yy53; yy956: - YYDEBUG(956, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy944; - if(yych == 'r') goto yy944; - goto yy53; + YYDEBUG(956, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy949; + if (yych == 'v') goto yy949; + goto yy53; yy957: - YYDEBUG(957, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy944; - if(yych <= 'X') goto yy53; - goto yy944; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - goto yy944; - } else { - if(yych == 'y') goto yy944; - goto yy53; - } - } + YYDEBUG(957, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy949; + if (yych == 't') goto yy949; + goto yy53; yy958: - YYDEBUG(958, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy944; - if(yych == 'b') goto yy944; - goto yy53; + YYDEBUG(958, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy959; + if (yych != 'p') goto yy53; yy959: - YYDEBUG(959, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy944; - if(yych <= 'M') goto yy53; - goto yy944; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy944; - } else { - if(yych == 'n') goto yy944; - goto yy53; - } - } -yy960: - YYDEBUG(960, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy944; - if(yych == 'n') goto yy944; + YYDEBUG(959, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == '-') goto yy950; + goto yy53; + } else { + if (yych <= 'T') goto yy949; + if (yych == 't') goto yy949; goto yy53; + } +yy960: + YYDEBUG(960, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy949; + if (yych == 'g') goto yy949; + goto yy53; yy961: - YYDEBUG(961, *YYCURSOR); - yyaccept = 17; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - 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 yy969; - case '-': goto yy966; - case '.': goto yy970; - case '/': goto yy967; - case '0': goto yy983; - case '1': goto yy984; - case '2': goto yy986; - case '3': goto yy987; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy51; - case ':': goto yy985; - case 'W': goto yy988; - default: goto yy962; - } + YYDEBUG(961, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy949; + if (yych == 'r') goto yy949; + goto yy53; yy962: - YYDEBUG(962, *YYCURSOR); - { - DEBUG_OUTPUT("year4"); - TIMELIB_INIT; - s->time->y = timelib_get_nr((char **) &ptr, 4); - TIMELIB_DEINIT; - return TIMELIB_CLF; + YYDEBUG(962, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy949; + if (yych <= 'X') goto yy53; + goto yy949; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + goto yy949; + } else { + if (yych == 'y') goto yy949; + goto yy53; + } } yy963: - YYDEBUG(963, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy964; - case '1': goto yy965; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy931; - case 'A': - case 'a': goto yy924; - case 'D': - case 'd': goto yy928; - case 'F': - case 'f': goto yy922; - case 'J': - case 'j': goto yy921; - case 'M': - case 'm': goto yy923; - case 'N': - case 'n': goto yy927; - case 'O': - case 'o': goto yy926; - case 'S': - case 's': goto yy925; - default: goto yy53; - } + YYDEBUG(963, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy949; + if (yych == 'b') goto yy949; + goto yy53; yy964: - YYDEBUG(964, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy931; - goto yy53; + YYDEBUG(964, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy949; + if (yych <= 'M') goto yy53; + goto yy949; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy949; + } else { + if (yych == 'n') goto yy949; + goto yy53; + } + } yy965: - YYDEBUG(965, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy931; - goto yy53; + YYDEBUG(965, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy949; + if (yych == 'n') goto yy949; + goto yy53; yy966: - YYDEBUG(966, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy1151; - case '1': goto yy1153; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1154; - case 'A': - case 'a': goto yy1145; - case 'D': - case 'd': goto yy1149; - case 'F': - case 'f': goto yy1143; - case 'J': - case 'j': goto yy1142; - case 'M': - case 'm': goto yy1144; - case 'N': - case 'n': goto yy1148; - case 'O': - case 'o': goto yy1147; - case 'S': - case 's': goto yy1146; - case 'W': goto yy1150; - default: goto yy1117; - } + YYDEBUG(966, *YYCURSOR); + yyaccept = 17; + 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 yy974; + case '-': goto yy971; + case '.': goto yy975; + case '/': goto yy972; + case '0': goto yy988; + case '1': goto yy989; + case '2': goto yy991; + case '3': goto yy992; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy51; + case ':': goto yy990; + case 'W': goto yy993; + default: goto yy967; + } yy967: - YYDEBUG(967, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1125; - if(yych <= '1') goto yy1126; - if(yych <= '9') goto yy1127; - goto yy53; + YYDEBUG(967, *YYCURSOR); + { + DEBUG_OUTPUT("year4"); + TIMELIB_INIT; + s->time->y = timelib_get_nr((char **) &ptr, 4); + TIMELIB_DEINIT; + return TIMELIB_CLF; + } yy968: - YYDEBUG(968, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; + YYDEBUG(968, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy969; + case '1': goto yy970; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy936; + case 'A': + case 'a': goto yy929; + case 'D': + case 'd': goto yy933; + case 'F': + case 'f': goto yy927; + case 'J': + case 'j': goto yy926; + case 'M': + case 'm': goto yy928; + case 'N': + case 'n': goto yy932; + case 'O': + case 'o': goto yy931; + case 'S': + case 's': goto yy930; + default: goto yy53; + } yy969: - YYDEBUG(969, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy968; - case '-': - case '.': goto yy1116; - case 'A': - case 'a': goto yy978; - case 'D': - case 'd': goto yy982; - case 'F': - case 'f': goto yy976; - case 'H': - case 'h': goto yy60; - case 'I': goto yy971; - case 'J': - case 'j': goto yy975; - case 'M': - case 'm': goto yy977; - case 'N': - case 'n': goto yy981; - case 'O': - case 'o': goto yy980; - case 'S': - case 's': goto yy979; - case 'T': - case 't': goto yy65; - case 'V': goto yy973; - case 'W': - case 'w': goto yy62; - case 'X': goto yy974; - case 'Y': - case 'y': goto yy64; - default: goto yy53; - } + YYDEBUG(969, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy936; + goto yy53; yy970: - YYDEBUG(970, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1117; - if(yych <= '0') goto yy1109; - if(yych <= '2') goto yy1110; - if(yych <= '3') goto yy1111; - goto yy1117; + YYDEBUG(970, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy936; + goto yy53; yy971: - YYDEBUG(971, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'U') { - if(yych == 'I') goto yy1108; - } else { - if(yych == 'W') goto yy972; - if(yych <= 'X') goto yy1062; - } + YYDEBUG(971, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy1156; + case '1': goto yy1158; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1159; + case 'A': + case 'a': goto yy1150; + case 'D': + case 'd': goto yy1154; + case 'F': + case 'f': goto yy1148; + case 'J': + case 'j': goto yy1147; + case 'M': + case 'm': goto yy1149; + case 'N': + case 'n': goto yy1153; + case 'O': + case 'o': goto yy1152; + case 'S': + case 's': goto yy1151; + case 'W': goto yy1155; + default: goto yy1122; + } yy972: - YYDEBUG(972, *YYCURSOR); - { + YYDEBUG(972, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1130; + if (yych <= '1') goto yy1131; + if (yych <= '9') goto yy1132; + goto yy53; +yy973: + YYDEBUG(973, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy974: + YYDEBUG(974, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy973; + case '-': + case '.': goto yy1121; + case 'A': + case 'a': goto yy983; + case 'D': + case 'd': goto yy987; + case 'F': + case 'f': goto yy981; + case 'H': + case 'h': goto yy60; + case 'I': goto yy976; + case 'J': + case 'j': goto yy980; + case 'M': + case 'm': goto yy982; + case 'N': + case 'n': goto yy986; + case 'O': + case 'o': goto yy985; + case 'S': + case 's': goto yy984; + case 'T': + case 't': goto yy65; + case 'V': goto yy978; + case 'W': + case 'w': goto yy62; + case 'X': goto yy979; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } +yy975: + YYDEBUG(975, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1122; + if (yych <= '0') goto yy1114; + if (yych <= '2') goto yy1115; + if (yych <= '3') goto yy1116; + goto yy1122; +yy976: + YYDEBUG(976, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'U') { + if (yych == 'I') goto yy1113; + } else { + if (yych == 'W') goto yy977; + if (yych <= 'X') goto yy1067; + } +yy977: + YYDEBUG(977, *YYCURSOR); + { DEBUG_OUTPUT("datenodayrev"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15840,221 +15850,221 @@ yy972: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -yy973: - YYDEBUG(973, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1106; - goto yy972; -yy974: - YYDEBUG(974, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1105; - goto yy972; -yy975: - YYDEBUG(975, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy1098; - if(yych <= 'T') goto yy53; - goto yy1097; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy1098; - } else { - if(yych == 'u') goto yy1097; - goto yy53; - } - } -yy976: - YYDEBUG(976, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'N') { - if(yych == 'E') goto yy1091; - goto yy53; - } else { - if(yych <= 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; - } +yy978: + YYDEBUG(978, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1111; + goto yy977; +yy979: + YYDEBUG(979, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1110; + goto yy977; +yy980: + YYDEBUG(980, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy1103; + if (yych <= 'T') goto yy53; + goto yy1102; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy1103; } else { - if(yych <= 'n') { - if(yych == 'e') goto yy1091; - goto yy53; - } else { - if(yych <= 'o') goto yy83; - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'u') goto yy1102; + goto yy53; } -yy977: - YYDEBUG(977, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'H') { - if(yych == 'A') goto yy1088; - goto yy53; - } else { - if(yych <= 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; - } + } +yy981: + YYDEBUG(981, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'N') { + if (yych == 'E') goto yy1096; + goto yy53; } else { - if(yych <= 'h') { - if(yych == 'a') goto yy1088; - goto yy53; - } else { - if(yych <= 'i') goto yy114; - if(yych == 'o') goto yy113; - goto yy53; - } - } -yy978: - YYDEBUG(978, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy1082; - if(yych <= 'T') goto yy53; - goto yy1081; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy1082; - } else { - if(yych == 'u') goto yy1081; - goto yy53; - } + if (yych <= 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; } -yy979: - YYDEBUG(979, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1074; - if(yych <= 'T') goto yy53; - goto yy122; - } + } else { + if (yych <= 'n') { + if (yych == 'e') goto yy1096; + goto yy53; } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; - } else { - if(yych <= 'e') goto yy1074; - if(yych == 'u') goto yy122; - goto yy53; - } + if (yych <= 'o') goto yy83; + if (yych == 'r') goto yy82; + goto yy53; } -yy980: - YYDEBUG(980, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1069; - if(yych == 'c') goto yy1069; - goto yy53; -yy981: - YYDEBUG(981, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy1063; - if(yych == 'o') goto yy1063; - goto yy53; + } yy982: - YYDEBUG(982, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych == 'A') goto yy110; - if(yych <= 'D') goto yy53; - goto yy1056; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy110; - } else { - if(yych == 'e') goto yy1056; - goto yy53; - } + YYDEBUG(982, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'A') goto yy1093; + goto yy53; + } else { + if (yych <= 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } + } else { + if (yych <= 'h') { + if (yych == 'a') goto yy1093; + goto yy53; + } else { + if (yych <= 'i') goto yy114; + if (yych == 'o') goto yy113; + goto yy53; } + } yy983: - YYDEBUG(983, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1053; - if(yych <= '9') goto yy1054; - goto yy57; + YYDEBUG(983, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy1087; + if (yych <= 'T') goto yy53; + goto yy1086; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy1087; + } else { + if (yych == 'u') goto yy1086; + goto yy53; + } + } yy984: - YYDEBUG(984, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '2') goto yy1022; - if(yych <= '9') goto yy1001; - goto yy57; + YYDEBUG(984, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1079; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy1079; + if (yych == 'u') goto yy122; + goto yy53; + } + } yy985: - YYDEBUG(985, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1002; - if(yych <= '1') goto yy1003; - goto yy53; + YYDEBUG(985, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1074; + if (yych == 'c') goto yy1074; + goto yy53; yy986: - YYDEBUG(986, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1001; - goto yy57; + YYDEBUG(986, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1068; + if (yych == 'o') goto yy1068; + goto yy53; yy987: - YYDEBUG(987, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '5') goto yy997; - if(yych <= '6') goto yy998; - if(yych <= '9') goto yy51; - goto yy57; -yy988: - YYDEBUG(988, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy989; - if(yych <= '4') goto yy990; - goto yy991; - } else { - if(yych <= 'E') { - if(yych <= 'D') goto yy53; - goto yy98; - } else { - if(yych == 'e') goto yy98; - goto yy53; - } + YYDEBUG(987, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy110; + if (yych <= 'D') goto yy53; + goto yy1061; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy110; + } else { + if (yych == 'e') goto yy1061; + goto yy53; } + } +yy988: + YYDEBUG(988, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1058; + if (yych <= '9') goto yy1059; + goto yy57; yy989: - YYDEBUG(989, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '0') goto yy53; - if(yych <= '9') goto yy992; - goto yy53; + YYDEBUG(989, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '2') goto yy1027; + if (yych <= '9') goto yy1006; + goto yy57; yy990: - YYDEBUG(990, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy992; - goto yy53; + YYDEBUG(990, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1007; + if (yych <= '1') goto yy1008; + goto yy53; yy991: - YYDEBUG(991, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; + YYDEBUG(991, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1006; + goto yy57; yy992: - YYDEBUG(992, *YYCURSOR); - yyaccept = 18; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy994; - if(yych <= '/') goto yy993; - if(yych <= '7') goto yy995; + YYDEBUG(992, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '5') goto yy1002; + if (yych <= '6') goto yy1003; + if (yych <= '9') goto yy51; + goto yy57; yy993: - YYDEBUG(993, *YYCURSOR); - { + YYDEBUG(993, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy994; + if (yych <= '4') goto yy995; + goto yy996; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy53; + goto yy98; + } else { + if (yych == 'e') goto yy98; + goto yy53; + } + } +yy994: + YYDEBUG(994, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '0') goto yy53; + if (yych <= '9') goto yy997; + goto yy53; +yy995: + YYDEBUG(995, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy997; + goto yy53; +yy996: + YYDEBUG(996, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; +yy997: + YYDEBUG(997, *YYCURSOR); + yyaccept = 18; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy999; + if (yych <= '/') goto yy998; + if (yych <= '7') goto yy1000; +yy998: + YYDEBUG(998, *YYCURSOR); + { timelib_sll w, d; DEBUG_OUTPUT("isoweek"); TIMELIB_INIT; @@ -16071,16 +16081,16 @@ yy993: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -yy994: - YYDEBUG(994, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '8') goto yy53; -yy995: - YYDEBUG(995, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(996, *YYCURSOR); - { +yy999: + YYDEBUG(999, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '8') goto yy53; +yy1000: + YYDEBUG(1000, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(1001, *YYCURSOR); + { timelib_sll w, d; DEBUG_OUTPUT("isoweekday"); TIMELIB_INIT; @@ -16097,70 +16107,70 @@ yy995: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -yy997: - YYDEBUG(997, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy999; - goto yy57; -yy998: - YYDEBUG(998, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '6') goto yy999; - if(yych <= '9') goto yy51; - goto yy57; -yy999: - YYDEBUG(999, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych >= ' ') goto yy57; - } else { - if(yych == 'D') goto yy57; - if(yych >= 'F') goto yy57; - } +yy1002: + YYDEBUG(1002, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1004; + goto yy57; +yy1003: + YYDEBUG(1003, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '6') goto yy1004; + if (yych <= '9') goto yy51; + goto yy57; +yy1004: + YYDEBUG(1004, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych >= ' ') goto yy57; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy57; - if(yych >= 'M') goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - if(yych >= 'W') goto yy57; - } + if (yych == 'D') goto yy57; + if (yych >= 'F') goto yy57; } } else { - if(yych <= 'h') { - if(yych <= 'd') { - if(yych == 'Y') goto yy57; - if(yych >= 'd') goto yy57; - } else { - if(yych == 'f') goto yy57; - if(yych >= 'h') goto yy57; - } + if (yych <= 'M') { + if (yych == 'H') goto yy57; + if (yych >= 'M') goto yy57; + } else { + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + if (yych >= 'W') goto yy57; + } + } + } else { + if (yych <= 'h') { + if (yych <= 'd') { + if (yych == 'Y') goto yy57; + if (yych >= 'd') goto yy57; + } else { + if (yych == 'f') goto yy57; + if (yych >= 'h') goto yy57; + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych >= 's') goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych >= 's') goto yy57; + if (yych <= 'w') { + if (yych >= 'w') goto yy57; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy57; - } else { - if(yych == 'y') goto yy57; - } + if (yych == 'y') goto yy57; } } } -yy1000: - YYDEBUG(1000, *YYCURSOR); - { + } +yy1005: + YYDEBUG(1005, *YYCURSOR); + { DEBUG_OUTPUT("pgydotd"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -16171,109 +16181,109 @@ yy1000: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -yy1001: - YYDEBUG(1001, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy999; - goto yy57; -yy1002: - YYDEBUG(1002, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1004; - goto yy53; -yy1003: - YYDEBUG(1003, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; -yy1004: - YYDEBUG(1004, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1005, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1006; - if(yych <= '2') goto yy1007; - if(yych <= '3') goto yy1008; - goto yy53; yy1006: - YYDEBUG(1006, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1009; - goto yy53; + YYDEBUG(1006, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1004; + goto yy57; yy1007: - YYDEBUG(1007, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1009; - goto yy53; + YYDEBUG(1007, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1009; + goto yy53; yy1008: - YYDEBUG(1008, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; + YYDEBUG(1008, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy1009: - YYDEBUG(1009, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ' ') goto yy53; - YYDEBUG(1010, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1011; - if(yych <= '2') goto yy1012; - goto yy53; + YYDEBUG(1009, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1010, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1011; + if (yych <= '2') goto yy1012; + if (yych <= '3') goto yy1013; + goto yy53; yy1011: - YYDEBUG(1011, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1013; - goto yy53; + YYDEBUG(1011, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1014; + goto yy53; yy1012: - YYDEBUG(1012, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; + YYDEBUG(1012, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1014; + goto yy53; yy1013: - YYDEBUG(1013, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1014, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(1015, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1016, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1017, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1018; - if(yych <= '6') goto yy1019; - goto yy53; + YYDEBUG(1013, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; +yy1014: + YYDEBUG(1014, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ' ') goto yy53; + YYDEBUG(1015, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1016; + if (yych <= '2') goto yy1017; + goto yy53; +yy1016: + YYDEBUG(1016, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1018; + goto yy53; +yy1017: + YYDEBUG(1017, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; yy1018: - YYDEBUG(1018, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; -yy1019: - YYDEBUG(1019, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; -yy1020: - YYDEBUG(1020, *YYCURSOR); - ++YYCURSOR; -yy1021: - YYDEBUG(1021, *YYCURSOR); - { + YYDEBUG(1018, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1019, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(1020, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1021, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1022, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1023; + if (yych <= '6') goto yy1024; + goto yy53; +yy1023: + YYDEBUG(1023, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; +yy1024: + YYDEBUG(1024, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; +yy1025: + YYDEBUG(1025, *YYCURSOR); + ++YYCURSOR; +yy1026: + YYDEBUG(1026, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); TIMELIB_INIT; @@ -16297,268 +16307,268 @@ yy1021: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -yy1022: - YYDEBUG(1022, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych >= '1') goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } -yy1023: - YYDEBUG(1023, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; +yy1027: + YYDEBUG(1027, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych >= '1') goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } +yy1028: + YYDEBUG(1028, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '/') goto yy1005; + if (yych <= '9') goto yy1031; + if (yych <= 'C') goto yy1005; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= '/') goto yy1000; - if(yych <= '9') goto yy1026; - if(yych <= 'C') goto yy1000; - goto yy57; + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych == 'g') goto yy1005; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1024: - YYDEBUG(1024, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; + } +yy1029: + YYDEBUG(1029, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '/') goto yy1005; + if (yych <= '9') goto yy1031; + if (yych <= 'C') goto yy1005; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= '/') goto yy1000; - if(yych <= '9') goto yy1026; - if(yych <= 'C') goto yy1000; - goto yy57; + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych == 'g') goto yy1005; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1025: - YYDEBUG(1025, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; + } +yy1030: + YYDEBUG(1030, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '1') { + if (yych <= '/') goto yy1005; + } else { + if (yych <= '9') goto yy51; + if (yych <= 'C') goto yy1005; goto yy57; - } else { - if(yych <= '1') { - if(yych <= '/') goto yy1000; - } else { - if(yych <= '9') goto yy51; - if(yych <= 'C') goto yy1000; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } + if (yych == 'g') goto yy1005; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1026: - YYDEBUG(1026, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych >= ' ') goto yy56; + } +yy1031: + YYDEBUG(1031, *YYCURSOR); + yyaccept = 20; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych >= ' ') goto yy56; + } else { + if (yych == 'D') goto yy61; + if (yych >= 'F') goto yy63; + } + } else { + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy59; + } else { + if (yych <= 'S') { + if (yych >= 'S') goto yy58; } else { - if(yych == 'D') goto yy61; - if(yych >= 'F') goto yy63; + if (yych <= 'T') goto yy1033; + if (yych >= 'W') goto yy62; } + } + } + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych >= 'd') goto yy61; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych >= 'M') goto yy59; + if (yych <= 'f') { + if (yych >= 'f') goto yy63; } else { - if(yych <= 'S') { - if(yych >= 'S') goto yy58; - } else { - if(yych <= 'T') goto yy1028; - if(yych >= 'W') goto yy62; - } + if (yych == 'h') goto yy60; } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych >= 'd') goto yy61; - } else { - if(yych <= 'f') { - if(yych >= 'f') goto yy63; - } else { - if(yych == 'h') goto yy60; - } - } + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy1032; + if (yych <= 's') goto yy58; + goto yy1034; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy1027; - if(yych <= 's') goto yy58; - goto yy1029; + if (yych <= 'w') { + if (yych >= 'w') goto yy62; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy62; - } else { - if(yych == 'y') goto yy64; - } + if (yych == 'y') goto yy64; } } } -yy1027: - YYDEBUG(1027, *YYCURSOR); - { + } +yy1032: + YYDEBUG(1032, *YYCURSOR); + { DEBUG_OUTPUT("datenocolon"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -16568,1926 +16578,1928 @@ yy1027: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -yy1028: - YYDEBUG(1028, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1043; - goto yy1044; - } else { - if(yych <= '9') goto yy1045; - if(yych <= 'G') goto yy53; - goto yy66; - } - } else { - if(yych <= 'g') { - if(yych == 'U') goto yy67; - goto yy53; - } else { - if(yych <= 'h') goto yy66; - if(yych == 'u') goto yy67; - goto yy53; - } +yy1033: + YYDEBUG(1033, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1048; + goto yy1049; + } else { + if (yych <= '9') goto yy1050; + if (yych <= 'G') goto yy53; + goto yy66; } -yy1029: - YYDEBUG(1029, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy1031; - } else { - if(yych <= '9') goto yy1032; - if(yych <= 'G') goto yy53; - goto yy66; - } + } else { + if (yych <= 'g') { + if (yych == 'U') goto yy67; + goto yy53; } else { - if(yych <= 'g') { - if(yych == 'U') goto yy67; - goto yy53; - } else { - if(yych <= 'h') goto yy66; - if(yych == 'u') goto yy67; - goto yy53; - } + if (yych <= 'h') goto yy66; + if (yych == 'u') goto yy67; + goto yy53; } - YYDEBUG(1030, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1037; - if(yych <= '9') goto yy1032; - goto yy53; -yy1031: - YYDEBUG(1031, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1037; - if(yych <= '5') goto yy1033; - goto yy53; -yy1032: - YYDEBUG(1032, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; -yy1033: - YYDEBUG(1033, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + } yy1034: - YYDEBUG(1034, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1035; - if(yych <= '6') goto yy1036; - goto yy53; -yy1035: - YYDEBUG(1035, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1034, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy1036; + } else { + if (yych <= '9') goto yy1037; + if (yych <= 'G') goto yy53; + goto yy66; + } + } else { + if (yych <= 'g') { + if (yych == 'U') goto yy67; + goto yy53; + } else { + if (yych <= 'h') goto yy66; + if (yych == 'u') goto yy67; + goto yy53; + } + } + YYDEBUG(1035, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1042; + if (yych <= '9') goto yy1037; + goto yy53; yy1036: - YYDEBUG(1036, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy53; + YYDEBUG(1036, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1042; + if (yych <= '5') goto yy1038; + goto yy53; yy1037: - YYDEBUG(1037, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1038; - if(yych <= '9') goto yy1034; - goto yy53; + YYDEBUG(1037, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; yy1038: - YYDEBUG(1038, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1039; - if(yych <= '6') goto yy1040; - if(yych <= '9') goto yy1034; - goto yy53; + YYDEBUG(1038, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1039: - YYDEBUG(1039, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1041; - if(yych <= '6') goto yy1042; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1039, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1040; + if (yych <= '6') goto yy1041; + goto yy53; yy1040: - YYDEBUG(1040, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1041; - if(yych <= '5') goto yy1035; - if(yych <= '6') goto yy1036; - goto yy53; + YYDEBUG(1040, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; yy1041: - YYDEBUG(1041, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1041, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy53; yy1042: - YYDEBUG(1042, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy1021; + YYDEBUG(1042, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1043; + if (yych <= '9') goto yy1039; + goto yy53; yy1043: - YYDEBUG(1043, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1052; - if(yych <= '9') goto yy1045; - if(yych <= ':') goto yy1046; - goto yy53; + YYDEBUG(1043, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1044; + if (yych <= '6') goto yy1045; + if (yych <= '9') goto yy1039; + goto yy53; yy1044: - YYDEBUG(1044, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1052; - goto yy1033; - } else { - if(yych == ':') goto yy1046; - goto yy53; - } + YYDEBUG(1044, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1046; + if (yych <= '6') goto yy1047; + if (yych <= '9') goto yy1025; + goto yy53; yy1045: - YYDEBUG(1045, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1033; - if(yych != ':') goto yy53; + YYDEBUG(1045, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1046; + if (yych <= '5') goto yy1040; + if (yych <= '6') goto yy1041; + goto yy53; yy1046: - YYDEBUG(1046, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(1047, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1048, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1049, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1050; - if(yych <= '6') goto yy1051; + YYDEBUG(1046, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; +yy1047: + YYDEBUG(1047, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy1026; +yy1048: + YYDEBUG(1048, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1057; + if (yych <= '9') goto yy1050; + if (yych <= ':') goto yy1051; + goto yy53; +yy1049: + YYDEBUG(1049, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1057; + goto yy1038; + } else { + if (yych == ':') goto yy1051; goto yy53; + } yy1050: - YYDEBUG(1050, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1050, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1038; + if (yych != ':') goto yy53; yy1051: - YYDEBUG(1051, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy53; -yy1052: - YYDEBUG(1052, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1038; - if(yych <= '9') goto yy1034; - if(yych <= ':') goto yy1046; - goto yy53; -yy1053: - YYDEBUG(1053, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1055; - goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } -yy1054: - YYDEBUG(1054, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1023; - goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } + YYDEBUG(1051, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(1052, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1053, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1054, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1055; + if (yych <= '6') goto yy1056; + goto yy53; yy1055: - YYDEBUG(1055, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1026; - goto yy57; + YYDEBUG(1055, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; yy1056: - YYDEBUG(1056, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1057; - if(yych != 'c') goto yy53; + YYDEBUG(1056, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy53; yy1057: - YYDEBUG(1057, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1058; - if(yych != 'e') goto yy972; + YYDEBUG(1057, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1043; + if (yych <= '9') goto yy1039; + if (yych <= ':') goto yy1051; + goto yy53; yy1058: - YYDEBUG(1058, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1059; - if(yych != 'm') goto yy53; + YYDEBUG(1058, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1060; + goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } yy1059: - YYDEBUG(1059, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1060; - if(yych != 'b') goto yy53; + YYDEBUG(1059, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1028; + goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } yy1060: - YYDEBUG(1060, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1061; - if(yych != 'e') goto yy53; + YYDEBUG(1060, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1031; + goto yy57; yy1061: - YYDEBUG(1061, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych != 'r') goto yy53; + YYDEBUG(1061, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1062; + if (yych != 'c') goto yy53; yy1062: - YYDEBUG(1062, *YYCURSOR); - yych = *++YYCURSOR; - goto yy972; + YYDEBUG(1062, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1063; + if (yych != 'e') goto yy977; yy1063: - YYDEBUG(1063, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy1064; - if(yych != 'v') goto yy53; + YYDEBUG(1063, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1064; + if (yych != 'm') goto yy53; yy1064: - YYDEBUG(1064, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1065; - if(yych != 'e') goto yy972; + YYDEBUG(1064, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1065; + if (yych != 'b') goto yy53; yy1065: - YYDEBUG(1065, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1066; - if(yych != 'm') goto yy53; + YYDEBUG(1065, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1066; + if (yych != 'e') goto yy53; yy1066: - YYDEBUG(1066, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1067; - if(yych != 'b') goto yy53; + YYDEBUG(1066, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych != 'r') goto yy53; yy1067: - YYDEBUG(1067, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1068; - if(yych != 'e') goto yy53; + YYDEBUG(1067, *YYCURSOR); + yych = *++YYCURSOR; + goto yy977; yy1068: - YYDEBUG(1068, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1068, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy1069; + if (yych != 'v') goto yy53; yy1069: - YYDEBUG(1069, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1070; - if(yych != 't') goto yy53; + YYDEBUG(1069, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1070; + if (yych != 'e') goto yy977; yy1070: - YYDEBUG(1070, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'O') goto yy1071; - if(yych != 'o') goto yy972; + YYDEBUG(1070, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1071; + if (yych != 'm') goto yy53; yy1071: - YYDEBUG(1071, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1072; - if(yych != 'b') goto yy53; + YYDEBUG(1071, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1072; + if (yych != 'b') goto yy53; yy1072: - YYDEBUG(1072, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1073; - if(yych != 'e') goto yy53; + YYDEBUG(1072, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1073; + if (yych != 'e') goto yy53; yy1073: - YYDEBUG(1073, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1073, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1074: - YYDEBUG(1074, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'P') { - if(yych == 'C') goto yy125; - if(yych <= 'O') goto yy53; - } else { - if(yych <= 'c') { - if(yych <= 'b') goto yy53; - goto yy125; - } else { - if(yych != 'p') goto yy53; - } - } + YYDEBUG(1074, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1075; + if (yych != 't') goto yy53; yy1075: - YYDEBUG(1075, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1076; - if(yych != 't') goto yy972; + YYDEBUG(1075, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'O') goto yy1076; + if (yych != 'o') goto yy977; yy1076: - YYDEBUG(1076, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1077; - if(yych != 'e') goto yy972; + YYDEBUG(1076, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1077; + if (yych != 'b') goto yy53; yy1077: - YYDEBUG(1077, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1078; - if(yych != 'm') goto yy53; + YYDEBUG(1077, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1078; + if (yych != 'e') goto yy53; yy1078: - YYDEBUG(1078, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1079; - if(yych != 'b') goto yy53; + YYDEBUG(1078, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1079: - YYDEBUG(1079, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1080; - if(yych != 'e') goto yy53; + YYDEBUG(1079, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'P') { + if (yych == 'C') goto yy125; + if (yych <= 'O') goto yy53; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy53; + goto yy125; + } else { + if (yych != 'p') goto yy53; + } + } yy1080: - YYDEBUG(1080, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1080, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1081; + if (yych != 't') goto yy977; yy1081: - YYDEBUG(1081, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy1085; - if(yych == 'g') goto yy1085; - goto yy53; + YYDEBUG(1081, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1082; + if (yych != 'e') goto yy977; yy1082: - YYDEBUG(1082, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1083; - if(yych != 'r') goto yy53; + YYDEBUG(1082, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1083; + if (yych != 'm') goto yy53; yy1083: - YYDEBUG(1083, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'I') goto yy1084; - if(yych != 'i') goto yy972; + YYDEBUG(1083, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1084; + if (yych != 'b') goto yy53; yy1084: - YYDEBUG(1084, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'L') goto yy1062; - if(yych == 'l') goto yy1062; - goto yy53; + YYDEBUG(1084, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1085; + if (yych != 'e') goto yy53; yy1085: - YYDEBUG(1085, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy1086; - if(yych != 'u') goto yy972; + YYDEBUG(1085, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1086: - YYDEBUG(1086, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy1087; - if(yych != 's') goto yy53; + YYDEBUG(1086, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy1090; + if (yych == 'g') goto yy1090; + goto yy53; yy1087: - YYDEBUG(1087, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1062; - if(yych == 't') goto yy1062; - goto yy53; + YYDEBUG(1087, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1088; + if (yych != 'r') goto yy53; yy1088: - YYDEBUG(1088, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy1089; - if(yych <= 'X') goto yy53; - goto yy1062; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy1062; - goto yy53; - } - } + YYDEBUG(1088, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'I') goto yy1089; + if (yych != 'i') goto yy977; yy1089: - YYDEBUG(1089, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'C') goto yy1090; - if(yych != 'c') goto yy972; + YYDEBUG(1089, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy1067; + if (yych == 'l') goto yy1067; + goto yy53; yy1090: - YYDEBUG(1090, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy1062; - if(yych == 'h') goto yy1062; - goto yy53; + YYDEBUG(1090, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy1091; + if (yych != 'u') goto yy977; yy1091: - YYDEBUG(1091, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1092; - if(yych != 'b') goto yy53; + YYDEBUG(1091, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy1092; + if (yych != 's') goto yy53; yy1092: - YYDEBUG(1092, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy1093; - if(yych != 'r') goto yy972; + YYDEBUG(1092, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1067; + if (yych == 't') goto yy1067; + goto yy53; yy1093: - YYDEBUG(1093, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy1094; - if(yych != 'u') goto yy53; + YYDEBUG(1093, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy1094; + if (yych <= 'X') goto yy53; + goto yy1067; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy1067; + goto yy53; + } + } yy1094: - YYDEBUG(1094, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1095; - if(yych != 'a') goto yy53; + YYDEBUG(1094, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'C') goto yy1095; + if (yych != 'c') goto yy977; yy1095: - YYDEBUG(1095, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1096; - if(yych != 'r') goto yy53; + YYDEBUG(1095, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy1067; + if (yych == 'h') goto yy1067; + goto yy53; yy1096: - YYDEBUG(1096, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy53; + YYDEBUG(1096, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1097; + if (yych != 'b') goto yy53; yy1097: - YYDEBUG(1097, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy1104; - if(yych <= 'M') goto yy53; - goto yy1103; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy1104; - } else { - if(yych == 'n') goto yy1103; - goto yy53; - } - } + YYDEBUG(1097, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy1098; + if (yych != 'r') goto yy977; yy1098: - YYDEBUG(1098, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy1099; - if(yych != 'n') goto yy53; + YYDEBUG(1098, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy1099; + if (yych != 'u') goto yy53; yy1099: - YYDEBUG(1099, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy1100; - if(yych != 'u') goto yy972; + YYDEBUG(1099, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1100; + if (yych != 'a') goto yy53; yy1100: - YYDEBUG(1100, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1101; - if(yych != 'a') goto yy53; + YYDEBUG(1100, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1101; + if (yych != 'r') goto yy53; yy1101: - YYDEBUG(1101, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1102; - if(yych != 'r') goto yy53; + YYDEBUG(1101, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy53; yy1102: - YYDEBUG(1102, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy53; + YYDEBUG(1102, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy1109; + if (yych <= 'M') goto yy53; + goto yy1108; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy1109; + } else { + if (yych == 'n') goto yy1108; + goto yy53; + } + } yy1103: - YYDEBUG(1103, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1062; - if(yych == 'e') goto yy1062; - goto yy972; + YYDEBUG(1103, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1104; + if (yych != 'n') goto yy53; yy1104: - YYDEBUG(1104, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy972; + YYDEBUG(1104, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy1105; + if (yych != 'u') goto yy977; yy1105: - YYDEBUG(1105, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1106; + if (yych != 'a') goto yy53; yy1106: - YYDEBUG(1106, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 'I') goto yy972; - YYDEBUG(1107, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1106, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1107; + if (yych != 'r') goto yy53; +yy1107: + YYDEBUG(1107, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy53; yy1108: - YYDEBUG(1108, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1108, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1067; + if (yych == 'e') goto yy1067; + goto yy977; yy1109: - YYDEBUG(1109, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1124; - if(yych <= '9') goto yy1123; - goto yy53; + YYDEBUG(1109, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy977; yy1110: - YYDEBUG(1110, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1122; - goto yy53; + YYDEBUG(1110, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1111: - YYDEBUG(1111, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1120; - if(yych <= '6') goto yy1119; - goto yy53; -yy1112: - YYDEBUG(1112, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1091; - if(yych == 'e') goto yy1091; - goto yy53; + YYDEBUG(1111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != 'I') goto yy977; + YYDEBUG(1112, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1113: - YYDEBUG(1113, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1088; - if(yych == 'a') goto yy1088; - goto yy53; + YYDEBUG(1113, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1114: - YYDEBUG(1114, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1118; - if(yych == 'e') goto yy1118; - goto yy53; + YYDEBUG(1114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1129; + if (yych <= '9') goto yy1128; + goto yy53; yy1115: - YYDEBUG(1115, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1056; - if(yych == 'e') goto yy1056; - goto yy53; + YYDEBUG(1115, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1127; + goto yy53; yy1116: - YYDEBUG(1116, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; + YYDEBUG(1116, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1125; + if (yych <= '6') goto yy1124; + goto yy53; yy1117: - YYDEBUG(1117, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': - case '-': - case '.': goto yy1116; - case 'A': - case 'a': goto yy978; - case 'D': - case 'd': goto yy1115; - case 'F': - case 'f': goto yy1112; - case 'I': goto yy971; - case 'J': - case 'j': goto yy975; - case 'M': - case 'm': goto yy1113; - case 'N': - case 'n': goto yy981; - case 'O': - case 'o': goto yy980; - case 'S': - case 's': goto yy1114; - case 'V': goto yy973; - case 'X': goto yy974; - default: goto yy53; - } + YYDEBUG(1117, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1096; + if (yych == 'e') goto yy1096; + goto yy53; yy1118: - YYDEBUG(1118, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy1075; - if(yych == 'p') goto yy1075; - goto yy53; + YYDEBUG(1118, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1093; + if (yych == 'a') goto yy1093; + goto yy53; yy1119: - YYDEBUG(1119, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '6') goto yy1121; - goto yy53; + YYDEBUG(1119, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1123; + if (yych == 'e') goto yy1123; + goto yy53; yy1120: - YYDEBUG(1120, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(1120, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1061; + if (yych == 'e') goto yy1061; + goto yy53; yy1121: - YYDEBUG(1121, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1000; + YYDEBUG(1121, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; yy1122: - YYDEBUG(1122, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1122, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy1121; + case 'A': + case 'a': goto yy983; + case 'D': + case 'd': goto yy1120; + case 'F': + case 'f': goto yy1117; + case 'I': goto yy976; + case 'J': + case 'j': goto yy980; + case 'M': + case 'm': goto yy1118; + case 'N': + case 'n': goto yy986; + case 'O': + case 'o': goto yy985; + case 'S': + case 's': goto yy1119; + case 'V': goto yy978; + case 'X': goto yy979; + default: goto yy53; + } yy1123: - YYDEBUG(1123, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy1080; + if (yych == 'p') goto yy1080; + goto yy53; yy1124: - YYDEBUG(1124, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '0') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1124, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '6') goto yy1126; + goto yy53; yy1125: - YYDEBUG(1125, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') goto yy53; - if(yych <= '/') goto yy1128; - if(yych <= '9') goto yy1136; - goto yy53; + YYDEBUG(1125, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1126: - YYDEBUG(1126, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') goto yy53; - if(yych <= '/') goto yy1128; - if(yych <= '2') goto yy1136; - goto yy53; + YYDEBUG(1126, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1005; yy1127: - YYDEBUG(1127, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; + YYDEBUG(1127, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1128: - YYDEBUG(1128, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy1129; - if(yych <= '3') goto yy1130; - if(yych <= '9') goto yy1131; - goto yy53; + YYDEBUG(1128, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1129: - YYDEBUG(1129, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1131; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '0') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1130: - YYDEBUG(1130, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '1') goto yy1131; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1130, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') goto yy53; + if (yych <= '/') goto yy1133; + if (yych <= '9') goto yy1141; + goto yy53; yy1131: - YYDEBUG(1131, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy1133; - goto yy660; - } else { - if(yych <= 'r') goto yy1134; - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + YYDEBUG(1131, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') goto yy53; + if (yych <= '/') goto yy1133; + if (yych <= '2') goto yy1141; + goto yy53; yy1132: - YYDEBUG(1132, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy659; - goto yy53; + YYDEBUG(1132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; yy1133: - YYDEBUG(1133, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy659; - goto yy53; + YYDEBUG(1133, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy1134; + if (yych <= '3') goto yy1135; + if (yych <= '9') goto yy1136; + goto yy53; yy1134: - YYDEBUG(1134, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy659; - goto yy53; -yy1135: - YYDEBUG(1135, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy659; - goto yy53; -yy1136: - YYDEBUG(1136, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; - YYDEBUG(1137, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1139; - } else { - if(yych <= '3') goto yy1140; - if(yych <= '9') goto yy1131; - goto yy53; - } - YYDEBUG(1138, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; + YYDEBUG(1134, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1136; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } -yy1139: - YYDEBUG(1139, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; + } +yy1135: + YYDEBUG(1135, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '1') goto yy1136; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } + } +yy1136: + YYDEBUG(1136, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy1138; + goto yy658; + } else { + if (yych <= 'r') goto yy1139; + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } +yy1137: + YYDEBUG(1137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy657; + goto yy53; +yy1138: + YYDEBUG(1138, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy657; + goto yy53; +yy1139: + YYDEBUG(1139, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy657; + goto yy53; yy1140: - YYDEBUG(1140, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '1') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1140, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy657; + goto yy53; yy1141: - YYDEBUG(1141, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == '/') goto yy659; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } -yy1142: - YYDEBUG(1142, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy1219; - if(yych <= 'T') goto yy53; - goto yy1218; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy1219; - } else { - if(yych == 'u') goto yy1218; - goto yy53; - } - } -yy1143: - YYDEBUG(1143, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1216; - if(yych == 'e') goto yy1216; + YYDEBUG(1141, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; + YYDEBUG(1142, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1144; + } else { + if (yych <= '3') goto yy1145; + if (yych <= '9') goto yy1136; goto yy53; + } + YYDEBUG(1143, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1144: - YYDEBUG(1144, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1213; - if(yych == 'a') goto yy1213; - goto yy53; + YYDEBUG(1144, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1145: - YYDEBUG(1145, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy1210; - if(yych <= 'T') goto yy53; - goto yy1209; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy1210; - } else { - if(yych == 'u') goto yy1209; - goto yy53; - } + YYDEBUG(1145, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '1') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } + } yy1146: - YYDEBUG(1146, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1206; - if(yych == 'e') goto yy1206; - goto yy53; + YYDEBUG(1146, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == '/') goto yy657; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1147: - YYDEBUG(1147, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1204; - if(yych == 'c') goto yy1204; - goto yy53; + YYDEBUG(1147, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy1224; + if (yych <= 'T') goto yy53; + goto yy1223; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy1224; + } else { + if (yych == 'u') goto yy1223; + goto yy53; + } + } yy1148: - YYDEBUG(1148, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy1202; - if(yych == 'o') goto yy1202; - goto yy53; + YYDEBUG(1148, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1221; + if (yych == 'e') goto yy1221; + goto yy53; yy1149: - YYDEBUG(1149, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1200; - if(yych == 'e') goto yy1200; - goto yy53; + YYDEBUG(1149, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1218; + if (yych == 'a') goto yy1218; + goto yy53; yy1150: - YYDEBUG(1150, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy989; - if(yych <= '4') goto yy990; - if(yych <= '5') goto yy991; - goto yy53; + YYDEBUG(1150, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy1215; + if (yych <= 'T') goto yy53; + goto yy1214; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy1215; + } else { + if (yych == 'u') goto yy1214; + goto yy53; + } + } yy1151: - YYDEBUG(1151, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1155; - if(yych <= '/') goto yy1152; - if(yych <= '9') goto yy1174; + YYDEBUG(1151, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1211; + if (yych == 'e') goto yy1211; + goto yy53; yy1152: - YYDEBUG(1152, *YYCURSOR); - { + YYDEBUG(1152, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1209; + if (yych == 'c') goto yy1209; + goto yy53; +yy1153: + YYDEBUG(1153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1207; + if (yych == 'o') goto yy1207; + goto yy53; +yy1154: + YYDEBUG(1154, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1205; + if (yych == 'e') goto yy1205; + goto yy53; +yy1155: + YYDEBUG(1155, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy994; + if (yych <= '4') goto yy995; + if (yych <= '5') goto yy996; + goto yy53; +yy1156: + YYDEBUG(1156, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1160; + if (yych <= '/') goto yy1157; + if (yych <= '9') goto yy1179; +yy1157: + YYDEBUG(1157, *YYCURSOR); + { 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; } -yy1153: - YYDEBUG(1153, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1155; - if(yych <= '/') goto yy1152; - if(yych <= '2') goto yy1174; - goto yy1152; -yy1154: - YYDEBUG(1154, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '-') goto yy1152; -yy1155: - YYDEBUG(1155, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy1156; - if(yych <= '3') goto yy1157; - if(yych <= '9') goto yy1158; - goto yy53; -yy1156: - YYDEBUG(1156, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1158; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } +yy1158: + YYDEBUG(1158, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1160; + if (yych <= '/') goto yy1157; + if (yych <= '2') goto yy1179; + goto yy1157; +yy1159: + YYDEBUG(1159, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '-') goto yy1157; +yy1160: + YYDEBUG(1160, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy1161; + if (yych <= '3') goto yy1162; + if (yych <= '9') goto yy1163; + goto yy53; +yy1161: + YYDEBUG(1161, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1163; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1157: - YYDEBUG(1157, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1158: - YYDEBUG(1158, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == 'T') goto yy1163; - if(yych <= 'm') goto yy844; - goto yy1160; + } +yy1162: + YYDEBUG(1162, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy843; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1159: - YYDEBUG(1159, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy1173; - goto yy53; -yy1160: - YYDEBUG(1160, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy1173; - goto yy53; -yy1161: - YYDEBUG(1161, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy1173; - goto yy53; -yy1162: - YYDEBUG(1162, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy1173; - goto yy53; -yy1163: - YYDEBUG(1163, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1164; - if(yych <= '2') goto yy1165; - if(yych <= '9') goto yy1166; - goto yy53; + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } +yy1163: + YYDEBUG(1163, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == 'T') goto yy1168; + if (yych <= 'm') goto yy843; + goto yy1165; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } yy1164: - YYDEBUG(1164, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1166; - if(yych <= ':') goto yy1167; - goto yy53; + YYDEBUG(1164, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy1178; + goto yy53; yy1165: - YYDEBUG(1165, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1166; - if(yych == ':') goto yy1167; - goto yy53; + YYDEBUG(1165, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy1178; + goto yy53; yy1166: - YYDEBUG(1166, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; + YYDEBUG(1166, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy1178; + goto yy53; yy1167: - YYDEBUG(1167, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1168; - if(yych <= '9') goto yy1169; - goto yy53; + YYDEBUG(1167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy1178; + goto yy53; yy1168: - YYDEBUG(1168, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1169; - if(yych <= ':') goto yy1170; - goto yy53; + YYDEBUG(1168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1169; + if (yych <= '2') goto yy1170; + if (yych <= '9') goto yy1171; + goto yy53; yy1169: - YYDEBUG(1169, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; + YYDEBUG(1169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1171; + if (yych <= ':') goto yy1172; + goto yy53; yy1170: - YYDEBUG(1170, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1171; - if(yych <= '6') goto yy1172; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1171; + if (yych == ':') goto yy1172; + goto yy53; yy1171: - YYDEBUG(1171, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; yy1172: - YYDEBUG(1172, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy1021; + YYDEBUG(1172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1173; + if (yych <= '9') goto yy1174; + goto yy53; yy1173: - YYDEBUG(1173, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'T') goto yy1163; - goto yy844; + YYDEBUG(1173, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1174; + if (yych <= ':') goto yy1175; + goto yy53; yy1174: - YYDEBUG(1174, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '-') goto yy1152; - YYDEBUG(1175, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1177; - } else { - if(yych <= '3') goto yy1178; - if(yych <= '9') goto yy1158; - goto yy53; + YYDEBUG(1174, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; +yy1175: + YYDEBUG(1175, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1176; + if (yych <= '6') goto yy1177; + if (yych <= '9') goto yy1025; + goto yy53; +yy1176: + YYDEBUG(1176, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; +yy1177: + YYDEBUG(1177, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy1026; +yy1178: + YYDEBUG(1178, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'T') goto yy1168; + goto yy843; +yy1179: + YYDEBUG(1179, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '-') goto yy1157; + YYDEBUG(1180, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1182; + } else { + if (yych <= '3') goto yy1183; + if (yych <= '9') goto yy1163; + goto yy53; + } + YYDEBUG(1181, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1184; + } else { + if (yych == 'T') goto yy1168; + goto yy843; } - YYDEBUG(1176, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1179; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1177: - YYDEBUG(1177, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1179; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } +yy1182: + YYDEBUG(1182, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1184; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1178: - YYDEBUG(1178, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1179: - YYDEBUG(1179, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == 'T') goto yy1180; - if(yych <= 'm') goto yy660; - goto yy1160; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy660; - } - } -yy1180: - YYDEBUG(1180, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1181; - if(yych <= '2') goto yy1182; - if(yych <= '9') goto yy1166; - goto yy53; -yy1181: - YYDEBUG(1181, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1183; - if(yych <= ':') goto yy1167; - goto yy53; -yy1182: - YYDEBUG(1182, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1183; - if(yych == ':') goto yy1167; - goto yy53; + } yy1183: - YYDEBUG(1183, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1184, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1185; - if(yych <= '9') goto yy1169; - goto yy53; + YYDEBUG(1183, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy843; + } else { + if (yych == 'T') goto yy1168; + goto yy843; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } +yy1184: + YYDEBUG(1184, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == 'T') goto yy1185; + if (yych <= 'm') goto yy658; + goto yy1165; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy658; + } + } yy1185: - YYDEBUG(1185, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1186; - if(yych <= ':') goto yy1170; - goto yy53; + YYDEBUG(1185, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1186; + if (yych <= '2') goto yy1187; + if (yych <= '9') goto yy1171; + goto yy53; yy1186: - YYDEBUG(1186, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1187, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1188; - if(yych <= '6') goto yy1189; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1186, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1188; + if (yych <= ':') goto yy1172; + goto yy53; +yy1187: + YYDEBUG(1187, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1188; + if (yych == ':') goto yy1172; + goto yy53; yy1188: - YYDEBUG(1188, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1190; - goto yy1021; -yy1189: - YYDEBUG(1189, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy1021; + YYDEBUG(1188, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1190; + if (yych <= '9') goto yy1174; + goto yy53; yy1190: - YYDEBUG(1190, *YYCURSOR); - yyaccept = 24; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '.') goto yy1021; - YYDEBUG(1191, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; -yy1192: - YYDEBUG(1192, *YYCURSOR); - yyaccept = 24; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); - yych = *YYCURSOR; - YYDEBUG(1193, *YYCURSOR); - if(yych <= ',') { - if(yych != '+') goto yy1021; - } else { - if(yych <= '-') goto yy1194; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1192; - goto yy1021; - } + YYDEBUG(1190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1191; + if (yych <= ':') goto yy1175; + goto yy53; +yy1191: + YYDEBUG(1191, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1192, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1193; + if (yych <= '6') goto yy1194; + if (yych <= '9') goto yy1025; + goto yy53; +yy1193: + YYDEBUG(1193, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1195; + goto yy1026; yy1194: - YYDEBUG(1194, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1195; - if(yych <= '2') goto yy1196; - if(yych <= '9') goto yy1197; - goto yy53; + YYDEBUG(1194, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy1026; yy1195: - YYDEBUG(1195, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1197; - if(yych <= ':') goto yy1198; - goto yy1021; -yy1196: - YYDEBUG(1196, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy1021; - if(yych >= '4') goto yy1199; - } else { - if(yych <= '9') goto yy1020; - if(yych <= ':') goto yy1198; - goto yy1021; - } + YYDEBUG(1195, *YYCURSOR); + yyaccept = 24; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '.') goto yy1026; + YYDEBUG(1196, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1197: - YYDEBUG(1197, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '5') goto yy1199; - if(yych <= '9') goto yy1020; - if(yych >= ';') goto yy1021; -yy1198: - YYDEBUG(1198, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '5') goto yy1199; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1197, *YYCURSOR); + yyaccept = 24; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + YYDEBUG(1198, *YYCURSOR); + if (yych <= ',') { + if (yych != '+') goto yy1026; + } else { + if (yych <= '-') goto yy1199; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1197; + goto yy1026; + } yy1199: - YYDEBUG(1199, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1199, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1200; + if (yych <= '2') goto yy1201; + if (yych <= '9') goto yy1202; + goto yy53; yy1200: - YYDEBUG(1200, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1201; - if(yych != 'c') goto yy53; + YYDEBUG(1200, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1202; + if (yych <= ':') goto yy1203; + goto yy1026; yy1201: - YYDEBUG(1201, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1058; - if(yych == 'e') goto yy1058; - goto yy972; - } + YYDEBUG(1201, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy1026; + if (yych >= '4') goto yy1204; + } else { + if (yych <= '9') goto yy1025; + if (yych <= ':') goto yy1203; + goto yy1026; + } yy1202: - YYDEBUG(1202, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy1203; - if(yych != 'v') goto yy53; + YYDEBUG(1202, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '5') goto yy1204; + if (yych <= '9') goto yy1025; + if (yych >= ';') goto yy1026; yy1203: - YYDEBUG(1203, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1065; - if(yych == 'e') goto yy1065; - goto yy972; - } + YYDEBUG(1203, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '5') goto yy1204; + if (yych <= '9') goto yy1025; + goto yy1026; yy1204: - YYDEBUG(1204, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1205; - if(yych != 't') goto yy53; + YYDEBUG(1204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; yy1205: - YYDEBUG(1205, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'O') goto yy1071; - if(yych == 'o') goto yy1071; - goto yy972; - } + YYDEBUG(1205, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1206; + if (yych != 'c') goto yy53; yy1206: - YYDEBUG(1206, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy1207; - if(yych != 'p') goto yy53; + YYDEBUG(1206, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1063; + if (yych == 'e') goto yy1063; + goto yy977; + } yy1207: - YYDEBUG(1207, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'T') goto yy1208; - if(yych != 't') goto yy972; - } + YYDEBUG(1207, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy1208; + if (yych != 'v') goto yy53; yy1208: - YYDEBUG(1208, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1077; - if(yych == 'e') goto yy1077; - goto yy972; - } + YYDEBUG(1208, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1070; + if (yych == 'e') goto yy1070; + goto yy977; + } yy1209: - YYDEBUG(1209, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy1212; - if(yych == 'g') goto yy1212; - goto yy53; + YYDEBUG(1209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1210; + if (yych != 't') goto yy53; yy1210: - YYDEBUG(1210, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1211; - if(yych != 'r') goto yy53; + YYDEBUG(1210, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'O') goto yy1076; + if (yych == 'o') goto yy1076; + goto yy977; + } yy1211: - YYDEBUG(1211, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'I') goto yy1084; - if(yych == 'i') goto yy1084; - goto yy972; - } + YYDEBUG(1211, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy1212; + if (yych != 'p') goto yy53; yy1212: - YYDEBUG(1212, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'U') goto yy1086; - if(yych == 'u') goto yy1086; - goto yy972; - } + YYDEBUG(1212, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'T') goto yy1213; + if (yych != 't') goto yy977; + } yy1213: - YYDEBUG(1213, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy1214; - if(yych <= 'X') goto yy53; - goto yy1215; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy1215; - goto yy53; - } - } + YYDEBUG(1213, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1082; + if (yych == 'e') goto yy1082; + goto yy977; + } yy1214: - YYDEBUG(1214, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'C') goto yy1090; - if(yych == 'c') goto yy1090; - goto yy972; - } + YYDEBUG(1214, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy1217; + if (yych == 'g') goto yy1217; + goto yy53; yy1215: - YYDEBUG(1215, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy945; - goto yy972; + YYDEBUG(1215, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1216; + if (yych != 'r') goto yy53; yy1216: - YYDEBUG(1216, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1217; - if(yych != 'b') goto yy53; + YYDEBUG(1216, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'I') goto yy1089; + if (yych == 'i') goto yy1089; + goto yy977; + } yy1217: - YYDEBUG(1217, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Q') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'R') goto yy1093; - if(yych == 'r') goto yy1093; - goto yy972; - } + YYDEBUG(1217, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'U') goto yy1091; + if (yych == 'u') goto yy1091; + goto yy977; + } yy1218: - YYDEBUG(1218, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy1222; - if(yych <= 'M') goto yy53; - goto yy1221; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy1222; - } else { - if(yych == 'n') goto yy1221; - goto yy53; - } + YYDEBUG(1218, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy1219; + if (yych <= 'X') goto yy53; + goto yy1220; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy1220; + goto yy53; } + } yy1219: - YYDEBUG(1219, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy1220; - if(yych != 'n') goto yy53; + YYDEBUG(1219, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'C') goto yy1095; + if (yych == 'c') goto yy1095; + goto yy977; + } yy1220: - YYDEBUG(1220, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'U') goto yy1100; - if(yych == 'u') goto yy1100; - goto yy972; - } + YYDEBUG(1220, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy950; + goto yy977; yy1221: - YYDEBUG(1221, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1062; - if(yych == 'e') goto yy1062; - goto yy972; - } + YYDEBUG(1221, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1222; + if (yych != 'b') goto yy53; yy1222: - YYDEBUG(1222, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy972; - } + YYDEBUG(1222, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Q') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'R') goto yy1098; + if (yych == 'r') goto yy1098; + goto yy977; + } yy1223: - YYDEBUG(1223, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy767; - goto yy915; - } else { - if(yych <= ',') goto yy767; - if(yych <= '.') goto yy915; - goto yy914; - } + YYDEBUG(1223, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy1227; + if (yych <= 'M') goto yy53; + goto yy1226; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy1227; } else { - if(yych <= 'U') { - if(yych <= 'T') goto yy767; - goto yy74; - } else { - if(yych == 'u') goto yy74; - goto yy767; - } + if (yych == 'n') goto yy1226; + goto yy53; } + } yy1224: - YYDEBUG(1224, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'P') { - if(yych == 'C') goto yy125; - if(yych <= 'O') goto yy53; - goto yy775; - } else { - if(yych <= 'c') { - if(yych <= 'b') goto yy53; - goto yy125; - } else { - if(yych == 'p') goto yy775; - goto yy53; - } - } + YYDEBUG(1224, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1225; + if (yych != 'n') goto yy53; yy1225: - YYDEBUG(1225, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= ',') { - if(yych == 0x09) goto yy1227; - goto yy1229; - } else { - if(yych <= '-') goto yy1226; - if(yych <= '.') goto yy915; - if(yych <= '/') goto yy914; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } + YYDEBUG(1225, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'U') goto yy1105; + if (yych == 'u') goto yy1105; + goto yy977; + } yy1226: - YYDEBUG(1226, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy1230; - case '1': goto yy1231; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy805; - case 'A': - case 'a': goto yy809; - case 'D': - case 'd': goto yy813; - case 'F': - case 'f': goto yy807; - case 'J': - case 'j': goto yy806; - case 'M': - case 'm': goto yy808; - case 'N': - case 'n': goto yy812; - case 'O': - case 'o': goto yy811; - case 'S': - case 's': goto yy810; - default: goto yy767; - } + YYDEBUG(1226, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1067; + if (yych == 'e') goto yy1067; + goto yy977; + } yy1227: - YYDEBUG(1227, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1229; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy1229; + YYDEBUG(1227, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy977; + } yy1228: - YYDEBUG(1228, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(1228, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy765; + goto yy914; + } else { + if (yych <= ',') goto yy765; + if (yych <= '-') goto yy915; + goto yy914; + } + } else { + if (yych <= 'U') { + if (yych <= '/') goto yy913; + if (yych <= 'T') goto yy765; + goto yy74; + } else { + if (yych == 'u') goto yy74; + goto yy765; + } + } yy1229: - YYDEBUG(1229, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy1228; - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy763; - case 'D': - case 'd': goto yy671; - case 'F': - case 'f': goto yy672; - case 'H': - case 'h': goto yy60; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy670; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'S': - case 's': goto yy668; - case 'T': - case 't': goto yy65; - case 'V': goto yy682; - case 'W': - case 'w': goto yy62; - case 'X': goto yy683; - case 'Y': - case 'y': goto yy64; - default: goto yy53; + YYDEBUG(1229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'P') { + if (yych == 'C') goto yy125; + if (yych <= 'O') goto yy53; + goto yy773; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy53; + goto yy125; + } else { + if (yych == 'p') goto yy773; + goto yy53; } + } yy1230: - YYDEBUG(1230, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1232; - goto yy53; + YYDEBUG(1230, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '\t') goto yy1232; + goto yy1234; + } else { + if (yych <= '-') goto yy1231; + if (yych <= '.') goto yy914; + if (yych <= '/') goto yy913; + goto yy924; } -yy1231: - YYDEBUG(1231, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; + } else { + if (yych <= 'q') { + if (yych == 'n') goto yy673; + goto yy1234; } else { - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; } + } +yy1231: + YYDEBUG(1231, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy1235; + case '1': goto yy1236; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy804; + case 'A': + case 'a': goto yy808; + case 'D': + case 'd': goto yy812; + case 'F': + case 'f': goto yy806; + case 'J': + case 'j': goto yy805; + case 'M': + case 'm': goto yy807; + case 'N': + case 'n': goto yy811; + case 'O': + case 'o': goto yy810; + case 'S': + case 's': goto yy809; + default: goto yy765; + } yy1232: - YYDEBUG(1232, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy1233; - if(yych <= '.') goto yy790; - goto yy53; + YYDEBUG(1232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1234; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy1234; yy1233: - YYDEBUG(1233, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1235; - } else { - if(yych <= '3') goto yy1236; - if(yych <= '9') goto yy846; - goto yy53; - } - YYDEBUG(1234, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy1237; - if(yych <= 'm') goto yy844; + YYDEBUG(1233, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy1234: + YYDEBUG(1234, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy1233; + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy761; + case 'D': + case 'd': goto yy669; + case 'F': + case 'f': goto yy670; + case 'H': + case 'h': goto yy60; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy668; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'S': + case 's': goto yy666; + case 'T': + case 't': goto yy65; + case 'V': goto yy680; + case 'W': + case 'w': goto yy62; + case 'X': goto yy681; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } +yy1235: + YYDEBUG(1235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1237; + goto yy53; + } +yy1236: + YYDEBUG(1236, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } +yy1237: + YYDEBUG(1237, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy1238; + if (yych <= '.') goto yy789; + goto yy53; +yy1238: + YYDEBUG(1238, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1240; + } else { + if (yych <= '3') goto yy1241; + if (yych <= '9') goto yy845; + goto yy53; + } + YYDEBUG(1239, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy1242; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1235: - YYDEBUG(1235, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy1237; - if(yych <= 'm') goto yy844; + } +yy1240: + YYDEBUG(1240, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy1242; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1236: - YYDEBUG(1236, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; - goto yy848; - } + } +yy1241: + YYDEBUG(1241, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '1') { + if (yych <= '/') goto yy843; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; } -yy1237: - YYDEBUG(1237, *YYCURSOR); - yyaccept = 16; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy942; - if(yych <= '9') goto yy797; - if(yych <= 'm') goto yy942; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy942; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy942; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1238: - YYDEBUG(1238, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy1227; - if(yych <= ',') goto yy1229; - goto yy1226; - } else { - if(yych <= '.') goto yy1239; - if(yych <= '/') goto yy914; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy1240; - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } -yy1239: - YYDEBUG(1239, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '1') { - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy1263; - goto yy1264; - } else { - if(yych <= '5') goto yy1265; - if(yych <= '9') goto yy1266; - goto yy767; - } -yy1240: - YYDEBUG(1240, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1258; - if(yych <= '9') goto yy1259; - goto yy53; -yy1241: - YYDEBUG(1241, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy963; - if(yych <= '/') goto yy57; - if(yych >= ':') goto yy57; - YYDEBUG(1242, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - 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 yy969; - case '-': goto yy966; - case '.': goto yy970; - case '/': goto yy967; - case '0': goto yy1244; - case '1': goto yy1245; - case '2': goto yy1246; - case '3': goto yy1247; - case '4': - case '5': goto yy1248; - case '6': goto yy1249; - case '7': - case '8': - case '9': goto yy51; - case ':': goto yy985; - case 'W': goto yy988; - default: goto yy1243; + } +yy1242: + YYDEBUG(1242, *YYCURSOR); + yyaccept = 16; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy947; + if (yych <= '9') goto yy792; + if (yych <= 'm') goto yy947; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy947; + goto yy848; + } else { + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy947; } + } yy1243: - YYDEBUG(1243, *YYCURSOR); - { + YYDEBUG(1243, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy1232; + if (yych <= ',') goto yy1234; + goto yy1231; + } else { + if (yych <= '.') goto yy1244; + if (yych <= '/') goto yy913; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy1245; + if (yych == 'n') goto yy673; + goto yy1234; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; + } + } +yy1244: + YYDEBUG(1244, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '1') { + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy1268; + goto yy1269; + } else { + if (yych <= '5') goto yy1270; + if (yych <= '9') goto yy1271; + goto yy765; + } +yy1245: + YYDEBUG(1245, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1263; + if (yych <= '9') goto yy1264; + goto yy53; +yy1246: + YYDEBUG(1246, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy968; + if (yych <= '/') goto yy57; + if (yych >= ':') goto yy57; + YYDEBUG(1247, *YYCURSOR); + yyaccept = 25; + 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 yy974; + case '-': goto yy971; + case '.': goto yy975; + case '/': goto yy972; + case '0': goto yy1249; + case '1': goto yy1250; + case '2': goto yy1251; + case '3': goto yy1252; + case '4': + case '5': goto yy1253; + case '6': goto yy1254; + case '7': + case '8': + case '9': goto yy51; + case ':': goto yy990; + case 'W': goto yy993; + default: goto yy1248; + } +yy1248: + YYDEBUG(1248, *YYCURSOR); + { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; switch (s->time->have_time) { @@ -18508,98 +18520,98 @@ yy1243: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -yy1244: - YYDEBUG(1244, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1256; - if(yych <= '9') goto yy1257; - goto yy57; -yy1245: - YYDEBUG(1245, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '2') goto yy1255; - if(yych <= '9') goto yy1254; - goto yy57; -yy1246: - YYDEBUG(1246, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1254; - goto yy57; -yy1247: - YYDEBUG(1247, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '5') goto yy1252; - if(yych <= '6') goto yy1253; - if(yych <= '9') goto yy1250; - goto yy57; -yy1248: - YYDEBUG(1248, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1250; - goto yy57; yy1249: - YYDEBUG(1249, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1250; - if(yych <= '9') goto yy51; - goto yy57; + YYDEBUG(1249, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1261; + if (yych <= '9') goto yy1262; + goto yy57; yy1250: - YYDEBUG(1250, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych >= ' ') goto yy57; - } else { - if(yych == 'D') goto yy57; - if(yych >= 'F') goto yy57; - } + YYDEBUG(1250, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '2') goto yy1260; + if (yych <= '9') goto yy1259; + goto yy57; +yy1251: + YYDEBUG(1251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1259; + goto yy57; +yy1252: + YYDEBUG(1252, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '5') goto yy1257; + if (yych <= '6') goto yy1258; + if (yych <= '9') goto yy1255; + goto yy57; +yy1253: + YYDEBUG(1253, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1255; + goto yy57; +yy1254: + YYDEBUG(1254, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1255; + if (yych <= '9') goto yy51; + goto yy57; +yy1255: + YYDEBUG(1255, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych >= ' ') goto yy57; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy57; - if(yych >= 'M') goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - if(yych >= 'W') goto yy57; - } + if (yych == 'D') goto yy57; + if (yych >= 'F') goto yy57; } } else { - if(yych <= 'h') { - if(yych <= 'd') { - if(yych == 'Y') goto yy57; - if(yych >= 'd') goto yy57; - } else { - if(yych == 'f') goto yy57; - if(yych >= 'h') goto yy57; - } + if (yych <= 'M') { + if (yych == 'H') goto yy57; + if (yych >= 'M') goto yy57; + } else { + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + if (yych >= 'W') goto yy57; + } + } + } else { + if (yych <= 'h') { + if (yych <= 'd') { + if (yych == 'Y') goto yy57; + if (yych >= 'd') goto yy57; + } else { + if (yych == 'f') goto yy57; + if (yych >= 'h') goto yy57; + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych >= 's') goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych >= 's') goto yy57; + if (yych <= 'w') { + if (yych >= 'w') goto yy57; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy57; - } else { - if(yych == 'y') goto yy57; - } + if (yych == 'y') goto yy57; } } } -yy1251: - YYDEBUG(1251, *YYCURSOR); - { + } +yy1256: + YYDEBUG(1256, *YYCURSOR); + { int tz_not_found; DEBUG_OUTPUT("iso8601nocolon"); TIMELIB_INIT; @@ -18617,626 +18629,626 @@ yy1251: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -yy1252: - YYDEBUG(1252, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; +yy1257: + YYDEBUG(1257, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '/') goto yy1256; + if (yych <= '9') goto yy1004; + if (yych <= 'C') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= '/') goto yy1251; - if(yych <= '9') goto yy999; - if(yych <= 'C') goto yy1251; - goto yy57; + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych == 'g') goto yy1256; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1253: - YYDEBUG(1253, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } +yy1258: + YYDEBUG(1258, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '6') { + if (yych <= '/') goto yy1256; + goto yy1004; + } else { + if (yych <= '9') goto yy51; + if (yych <= 'C') goto yy1256; goto yy57; - } else { - if(yych <= '6') { - if(yych <= '/') goto yy1251; - goto yy999; - } else { - if(yych <= '9') goto yy51; - if(yych <= 'C') goto yy1251; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } + if (yych == 'g') goto yy1256; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1254: - YYDEBUG(1254, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } +yy1259: + YYDEBUG(1259, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '/') goto yy1256; + if (yych <= '9') goto yy1004; + if (yych <= 'C') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= '/') goto yy1251; - if(yych <= '9') goto yy999; - if(yych <= 'C') goto yy1251; - goto yy57; + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych == 'g') goto yy1256; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1255: - YYDEBUG(1255, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; - goto yy57; - } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1023; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } - } + } +yy1260: + YYDEBUG(1260, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1028; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1256: - YYDEBUG(1256, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; goto yy57; } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1055; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } + if (yych == 'f') goto yy57; + goto yy1256; + } + } + } else { + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych == 'y') goto yy57; + goto yy1256; + } + } + } + } +yy1261: + YYDEBUG(1261, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1060; + } else { + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1257: - YYDEBUG(1257, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; goto yy57; } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1023; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } + if (yych == 'f') goto yy57; + goto yy1256; + } + } + } else { + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych == 'y') goto yy57; + goto yy1256; + } + } + } + } +yy1262: + YYDEBUG(1262, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1028; + } else { + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1258: - YYDEBUG(1258, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy1260; - goto yy696; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; + goto yy57; + } else { + if (yych == 'f') goto yy57; + goto yy1256; + } + } } else { - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; + } else { + if (yych == 'y') goto yy57; + goto yy1256; + } + } } -yy1259: - YYDEBUG(1259, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy1260; - if(yych != ':') goto yy696; -yy1260: - YYDEBUG(1260, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1261; - if(yych <= '6') goto yy1262; - if(yych <= '9') goto yy701; - goto yy53; -yy1261: - YYDEBUG(1261, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy701; - goto yy696; -yy1262: - YYDEBUG(1262, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych == '0') goto yy701; - goto yy696; + } yy1263: - YYDEBUG(1263, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy1267; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1266; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1263, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy1265; + goto yy694; + } else { + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1264: - YYDEBUG(1264, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - if(yych <= '.') goto yy1267; - goto yy696; - } else { - if(yych <= '2') goto yy1266; - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1264, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy1265; + if (yych != ':') goto yy694; yy1265: - YYDEBUG(1265, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy1267; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1265, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1266; + if (yych <= '6') goto yy1267; + if (yych <= '9') goto yy699; + goto yy53; yy1266: - YYDEBUG(1266, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - } else { - if(yych == ':') goto yy1260; - goto yy696; - } + YYDEBUG(1266, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy699; + goto yy694; yy1267: - YYDEBUG(1267, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1268; - if(yych <= '6') goto yy1269; - if(yych <= '9') goto yy794; - goto yy53; + YYDEBUG(1267, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych == '0') goto yy699; + goto yy694; yy1268: - YYDEBUG(1268, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1270; - goto yy696; + YYDEBUG(1268, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy1272; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1271; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1269: - YYDEBUG(1269, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy702; - goto yy696; - } else { - if(yych <= '0') goto yy1270; - if(yych <= '9') goto yy795; - goto yy696; - } + YYDEBUG(1269, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + if (yych <= '.') goto yy1272; + goto yy694; + } else { + if (yych <= '2') goto yy1271; + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1270: - YYDEBUG(1270, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy797; - goto yy696; + YYDEBUG(1270, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy1272; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1271: - YYDEBUG(1271, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy665; - if(yych <= ',') goto yy667; - goto yy1226; - } else { - if(yych <= '.') goto yy679; - if(yych <= '/') goto yy677; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy688; - if(yych == 'n') goto yy675; - goto yy667; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy667; - } - } + YYDEBUG(1271, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + } else { + if (yych == ':') goto yy1265; + goto yy694; + } yy1272: - YYDEBUG(1272, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy1227; - if(yych <= ',') goto yy1229; - goto yy1226; - } else { - if(yych <= '.') goto yy1239; - if(yych <= '/') goto yy677; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy1240; - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } + YYDEBUG(1272, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1273; + if (yych <= '6') goto yy1274; + if (yych <= '9') goto yy797; + goto yy53; yy1273: - YYDEBUG(1273, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(1273, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1275; + goto yy694; yy1274: - YYDEBUG(1274, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(1275, *YYCURSOR); - if(yych <= '/') goto yy1276; - if(yych <= '9') goto yy1274; + YYDEBUG(1274, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy700; + goto yy694; + } else { + if (yych <= '0') goto yy1275; + if (yych <= '9') goto yy798; + goto yy694; + } +yy1275: + YYDEBUG(1275, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy792; + goto yy694; yy1276: - YYDEBUG(1276, *YYCURSOR); - { + YYDEBUG(1276, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy663; + if (yych <= ',') goto yy665; + goto yy1231; + } else { + if (yych <= '.') goto yy677; + if (yych <= '/') goto yy675; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy686; + if (yych == 'n') goto yy673; + goto yy665; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy665; + } + } +yy1277: + YYDEBUG(1277, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy1232; + if (yych <= ',') goto yy1234; + goto yy1231; + } else { + if (yych <= '.') goto yy1244; + if (yych <= '/') goto yy675; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy1245; + if (yych == 'n') goto yy673; + goto yy1234; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; + } + } +yy1278: + YYDEBUG(1278, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; +yy1279: + YYDEBUG(1279, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(1280, *YYCURSOR); + if (yych <= '/') goto yy1281; + if (yych <= '9') goto yy1279; +yy1281: + YYDEBUG(1281, *YYCURSOR); + { timelib_ull i; TIMELIB_INIT; @@ -19258,442 +19270,442 @@ yy1276: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1277: - YYDEBUG(1277, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1317; - } +yy1282: + YYDEBUG(1282, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy1317; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1322; } -yy1278: - YYDEBUG(1278, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy1311; - if(yych <= 'T') goto yy138; - goto yy1310; - } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy138; - goto yy1311; - } else { - if(yych == 'u') goto yy1310; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'n') goto yy1322; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1279: - YYDEBUG(1279, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'D') goto yy1299; - if(yych <= 'L') goto yy138; - goto yy1300; - } + } +yy1283: + YYDEBUG(1283, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'c') goto yy138; - goto yy1299; - } else { - if(yych == 'm') goto yy1300; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'I') goto yy1316; + if (yych <= 'T') goto yy138; + goto yy1315; } -yy1280: - YYDEBUG(1280, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1295; - } - } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy1295; - if(yych <= 'z') goto yy138; - goto yy3; - } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy138; + goto yy1316; + } else { + if (yych == 'u') goto yy1315; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1281: - YYDEBUG(1281, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1291; - } + } +yy1284: + YYDEBUG(1284, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy1291; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'D') goto yy1304; + if (yych <= 'L') goto yy138; + goto yy1305; } -yy1282: - YYDEBUG(1282, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; - } else { - if(yych <= '9') goto yy1285; - if(yych <= ':') goto yy1240; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'c') goto yy138; + goto yy1304; + } else { + if (yych == 'm') goto yy1305; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1283: - YYDEBUG(1283, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; + } +yy1285: + YYDEBUG(1285, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '3') goto yy1285; - if(yych == ':') goto yy1240; - goto yy53; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1300; } -yy1284: - YYDEBUG(1284, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '.') goto yy1240; - if(yych == ':') goto yy1240; - goto yy53; -yy1285: - YYDEBUG(1285, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= '5') goto yy1286; - if(yych == ':') goto yy1240; - goto yy53; + if (yych <= 'e') goto yy1300; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1286: - YYDEBUG(1286, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1287, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') goto yy1243; - if(yych <= '5') goto yy1288; - if(yych <= '6') goto yy1289; - goto yy1243; + YYDEBUG(1286, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1296; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'e') goto yy1296; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy1287: + YYDEBUG(1287, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '9') goto yy1290; + if (yych <= ':') goto yy1245; + goto yy53; + } yy1288: - YYDEBUG(1288, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1290; + YYDEBUG(1288, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '3') goto yy1290; + if (yych == ':') goto yy1245; goto yy53; + } yy1289: - YYDEBUG(1289, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; + YYDEBUG(1289, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy1245; + if (yych == ':') goto yy1245; + goto yy53; yy1290: - YYDEBUG(1290, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1251; + YYDEBUG(1290, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '5') goto yy1291; + if (yych == ':') goto yy1245; + goto yy53; + } yy1291: - YYDEBUG(1291, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy139; - } - } else { - if(yych <= 'k') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'l') goto yy1292; - if(yych <= 'z') goto yy139; - goto yy3; - } - } -yy1292: - YYDEBUG(1292, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'F') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'E') goto yy140; - } - } else { - if(yych <= 'e') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'f') goto yy1293; - if(yych <= 'z') goto yy140; - goto yy3; - } - } + YYDEBUG(1291, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1292, *YYCURSOR); + yyaccept = 25; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy1248; + if (yych <= '5') goto yy1293; + if (yych <= '6') goto yy1294; + goto yy1248; yy1293: - YYDEBUG(1293, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(1293, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1295; + goto yy53; +yy1294: + YYDEBUG(1294, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; +yy1295: + YYDEBUG(1295, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1256; +yy1296: + YYDEBUG(1296, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy1294; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy139; } -yy1294: - YYDEBUG(1294, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'k') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'H') goto yy160; - if(yych == 'h') goto yy160; + if (yych <= 'l') goto yy1297; + if (yych <= 'z') goto yy139; goto yy3; } -yy1295: - YYDEBUG(1295, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'R') goto yy139; - } + } +yy1297: + YYDEBUG(1297, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'F') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 's') goto yy1296; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'E') goto yy140; } -yy1296: - YYDEBUG(1296, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - } + } else { + if (yych <= 'e') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy1297; - if(yych <= 'z') goto yy140; - goto yy3; - } - } -yy1297: - YYDEBUG(1297, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy1298; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'f') goto yy1298; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1298: - YYDEBUG(1298, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(1298, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Y') goto yy282; - if(yych == 'y') goto yy282; + if (yych <= 't') goto yy1299; + if (yych <= 'z') goto yy141; goto yy3; } + } yy1299: - YYDEBUG(1299, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1307; + YYDEBUG(1299, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy3; + } +yy1300: + YYDEBUG(1300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - goto yy3; - } else { - if(yych <= 'a') goto yy1307; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'R') goto yy139; } -yy1300: - YYDEBUG(1300, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'o') goto yy1301; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 's') goto yy1301; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy1301: - YYDEBUG(1301, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - } + YYDEBUG(1301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'r') goto yy1302; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'd') goto yy1302; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1302: - YYDEBUG(1302, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + YYDEBUG(1302, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy1303; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'a') goto yy1303; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy1303: - YYDEBUG(1303, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych == ')') goto yy136; + YYDEBUG(1303, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy3; + } +yy1304: + YYDEBUG(1304, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1312; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; goto yy3; } else { - if(yych <= 'O') goto yy1304; - if(yych != 'o') goto yy3; + if (yych <= 'a') goto yy1312; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1304: - YYDEBUG(1304, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'W') goto yy1305; - if(yych != 'w') goto yy53; + } yy1305: - YYDEBUG(1305, *YYCURSOR); - ++YYCURSOR; + YYDEBUG(1305, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + } + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'o') goto yy1306; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1306: - YYDEBUG(1306, *YYCURSOR); - { + YYDEBUG(1306, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'r') goto yy1307; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy1307: + YYDEBUG(1307, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'r') goto yy1308; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1308: + YYDEBUG(1308, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'O') goto yy1309; + if (yych != 'o') goto yy3; + } +yy1309: + YYDEBUG(1309, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy1310; + if (yych != 'w') goto yy53; +yy1310: + YYDEBUG(1310, *YYCURSOR); + ++YYCURSOR; +yy1311: + YYDEBUG(1311, *YYCURSOR); + { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; TIMELIB_HAVE_RELATIVE(); @@ -19703,41 +19715,41 @@ yy1306: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1307: - YYDEBUG(1307, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy140; - } +yy1312: + YYDEBUG(1312, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'y') goto yy1308; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy140; } -yy1308: - YYDEBUG(1308, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy141; + if (yych <= 'y') goto yy1313; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1309: - YYDEBUG(1309, *YYCURSOR); - { + } +yy1313: + YYDEBUG(1313, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy141; + } +yy1314: + YYDEBUG(1314, *YYCURSOR); + { DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); @@ -19745,1924 +19757,1924 @@ yy1309: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1310: - YYDEBUG(1310, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'Q') goto yy139; - goto yy1313; - } +yy1315: + YYDEBUG(1315, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'r') goto yy1313; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy276; + if (yych <= 'Q') goto yy139; + goto yy1318; } -yy1311: - YYDEBUG(1311, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Q') goto yy139; - if(yych >= 'S') goto yy250; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'r') goto yy1312; - if(yych <= 's') goto yy250; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'r') goto yy1318; + if (yych <= 'z') goto yy139; + goto yy276; } -yy1312: - YYDEBUG(1312, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy263; - } + } +yy1316: + YYDEBUG(1316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'Q') goto yy139; + if (yych >= 'S') goto yy250; } -yy1313: - YYDEBUG(1313, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'r') goto yy1317; + if (yych <= 's') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1317: + YYDEBUG(1317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 's') goto yy1314; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy263; } -yy1314: - YYDEBUG(1314, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'd') goto yy1315; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'd') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1315: - YYDEBUG(1315, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych == ')') goto yy136; + } +yy1318: + YYDEBUG(1318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 's') goto yy1319; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy1319: + YYDEBUG(1319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy1316; - if(yych != 'a') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; } -yy1316: - YYDEBUG(1316, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; -yy1317: - YYDEBUG(1317, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy1318; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'd') goto yy1320; + if (yych <= 'z') goto yy141; + goto yy3; } -yy1318: - YYDEBUG(1318, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + } +yy1320: + YYDEBUG(1320, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy1321; + if (yych != 'a') goto yy3; + } +yy1321: + YYDEBUG(1321, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; +yy1322: + YYDEBUG(1322, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; } -yy1319: - YYDEBUG(1319, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1317; - } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1348; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 't') goto yy1323; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1320: - YYDEBUG(1320, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'H') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'I') goto yy1311; - if(yych <= 'T') goto yy138; - goto yy1310; - } - } + } +yy1323: + YYDEBUG(1323, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'h') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 't') { - if(yych <= 'i') goto yy1342; - goto yy143; - } else { - if(yych <= 'u') goto yy1341; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } -yy1321: - YYDEBUG(1321, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'C') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'D') goto yy1299; - if(yych <= 'L') goto yy138; - goto yy1300; - } - } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'l') { - if(yych <= 'd') goto yy1332; - goto yy143; - } else { - if(yych <= 'm') goto yy1333; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1322: - YYDEBUG(1322, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1295; - } + } +yy1324: + YYDEBUG(1324, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1328; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1322; } -yy1323: - YYDEBUG(1323, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1291; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1324; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == 'n') goto yy1353; + if (yych <= 'z') goto yy143; + goto yy3; } -yy1324: - YYDEBUG(1324, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy139; - goto yy1292; - } + } +yy1325: + YYDEBUG(1325, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'H') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych == 'l') goto yy1325; - if(yych <= 'z') goto yy148; - goto yy3; + if (yych <= 'I') goto yy1316; + if (yych <= 'T') goto yy138; + goto yy1315; } } -yy1325: - YYDEBUG(1325, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'F') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'h') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'E') goto yy140; - goto yy1293; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 't') { + if (yych <= 'i') goto yy1347; + goto yy143; } else { - if(yych == 'f') goto yy1326; - if(yych <= 'z') goto yy149; + if (yych <= 'u') goto yy1346; + if (yych <= 'z') goto yy143; goto yy3; } } + } yy1326: - YYDEBUG(1326, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy1294; - } + YYDEBUG(1326, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'C') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych == 't') goto yy1327; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych <= 'D') goto yy1304; + if (yych <= 'L') goto yy138; + goto yy1305; } } -yy1327: - YYDEBUG(1327, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'c') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy160; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'l') { + if (yych <= 'd') goto yy1337; + goto yy143; } else { - if(yych == 'h') goto yy247; - if(yych <= 'z') goto yy151; + if (yych <= 'm') goto yy1338; + if (yych <= 'z') goto yy143; goto yy3; } } + } +yy1327: + YYDEBUG(1327, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1300; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy1333; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy1328: - YYDEBUG(1328, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'R') goto yy139; - goto yy1296; - } + YYDEBUG(1328, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 's') goto yy1329; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1296; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy1329; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1329: - YYDEBUG(1329, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy1297; - } + YYDEBUG(1329, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1330; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy139; + goto yy1297; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'l') goto yy1330; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1330: - YYDEBUG(1330, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1298; - } + YYDEBUG(1330, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'F') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1331; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'E') goto yy140; + goto yy1298; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'f') goto yy1331; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1331: - YYDEBUG(1331, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy282; - } + YYDEBUG(1331, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy295; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy1299; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1332; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy1332: - YYDEBUG(1332, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1307; - } + YYDEBUG(1332, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1339; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy160; } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy247; + if (yych <= 'z') goto yy151; + goto yy3; + } + } yy1333: - YYDEBUG(1333, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy1301; - } + YYDEBUG(1333, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy1334; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'R') goto yy139; + goto yy1301; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 's') goto yy1334; + if (yych <= 'z') goto yy148; + goto yy276; + } + } yy1334: - YYDEBUG(1334, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - goto yy1302; - } + YYDEBUG(1334, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1335; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy1302; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1335; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1335: - YYDEBUG(1335, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy1303; - } + YYDEBUG(1335, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1336; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1303; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1336; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1336: - YYDEBUG(1336, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'N') goto yy3; - goto yy1304; - } + YYDEBUG(1336, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy1337; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy282; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy295; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy1337: - YYDEBUG(1337, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'W') goto yy1305; - if(yych != 'w') goto yy152; - YYDEBUG(1338, *YYCURSOR); - yyaccept = 27; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy1306; + YYDEBUG(1337, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1312; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1306; - if(yych <= 'z') goto yy151; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1344; + if (yych <= 'z') goto yy148; + goto yy3; + } + } +yy1338: + YYDEBUG(1338, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; goto yy1306; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy1339; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1339: - YYDEBUG(1339, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy140; - goto yy1308; - } + YYDEBUG(1339, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy1340; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy1307; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy1340; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1340: - YYDEBUG(1340, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1309; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy1309; - } + YYDEBUG(1340, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy1309; - goto yy144; - } else { - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy150; - goto yy1309; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy1308; } -yy1341: - YYDEBUG(1341, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'Q') goto yy139; - goto yy1313; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'r') goto yy1344; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych == 'r') goto yy1341; + if (yych <= 'z') goto yy150; + goto yy3; } -yy1342: - YYDEBUG(1342, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - if(yych <= 'R') goto yy1312; - goto yy250; - } + } +yy1341: + YYDEBUG(1341, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy148; - } else { - if(yych <= 's') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= 'N') goto yy3; + goto yy1309; } - YYDEBUG(1343, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy263; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych == 'o') goto yy1342; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1342: + YYDEBUG(1342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy1310; + if (yych != 'w') goto yy152; + YYDEBUG(1343, *YYCURSOR); + yyaccept = 27; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1311; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1311; + if (yych <= 'z') goto yy151; + goto yy1311; + } yy1344: - YYDEBUG(1344, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - goto yy1314; - } + YYDEBUG(1344, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy1345; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy140; + goto yy1313; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy1345; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1345: - YYDEBUG(1345, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy1315; - } + YYDEBUG(1345, *YYCURSOR); + yyaccept = 28; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1314; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1346; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy1314; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy1314; + goto yy144; + } else { + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy150; + goto yy1314; } + } yy1346: - YYDEBUG(1346, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1316; - } + YYDEBUG(1346, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'a') goto yy1347; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'Q') goto yy139; + goto yy1318; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'r') goto yy1349; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy1347: - YYDEBUG(1347, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; -yy1348: - YYDEBUG(1348, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1318; - } + YYDEBUG(1347, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; + if (yych <= 'R') goto yy1317; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy148; } else { - if(yych == 't') goto yy1349; - if(yych <= 'z') goto yy148; + if (yych <= 's') goto yy253; + if (yych <= 'z') goto yy148; goto yy3; } } + } + YYDEBUG(1348, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1349: - YYDEBUG(1349, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(1349, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + goto yy1319; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy1350; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1350: - YYDEBUG(1350, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'R') goto yy1362; - if(yych <= 'X') goto yy138; - goto yy1363; - } + YYDEBUG(1350, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'q') goto yy138; - goto yy1362; - } else { - if(yych == 'y') goto yy1363; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy1320; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1351; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1351: - YYDEBUG(1351, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - goto yy1356; - } + YYDEBUG(1351, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'd') goto yy1356; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1321; } -yy1352: - YYDEBUG(1352, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy1353; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy1352; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1352: + YYDEBUG(1352, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; yy1353: - YYDEBUG(1353, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(1353, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy1354; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1323; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1354; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1354: - YYDEBUG(1354, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy1355; - if(yych <= 'z') goto yy140; - goto yy3; - } + YYDEBUG(1354, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1355: - YYDEBUG(1355, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(1355, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych == 'R') goto yy1367; + if (yych <= 'X') goto yy138; + goto yy1368; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'q') goto yy138; + goto yy1367; + } else { + if (yych == 'y') goto yy1368; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1356: - YYDEBUG(1356, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - } + YYDEBUG(1356, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'n') goto yy1357; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + goto yy1361; } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'd') goto yy1361; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1357: - YYDEBUG(1357, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - } + YYDEBUG(1357, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'i') goto yy1358; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'n') goto yy1358; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1358: - YYDEBUG(1358, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy141; - } + YYDEBUG(1358, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'g') goto yy1359; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy1359; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy1359: - YYDEBUG(1359, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; + YYDEBUG(1359, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; goto yy3; } else { - if(yych <= 'H') goto yy1360; - if(yych != 'h') goto yy3; + if (yych <= 'a') goto yy1360; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1360: - YYDEBUG(1360, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1361; - if(yych != 't') goto yy53; + YYDEBUG(1360, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; + } + } yy1361: - YYDEBUG(1361, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1309; + YYDEBUG(1361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'n') goto yy1362; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1362: - YYDEBUG(1362, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + YYDEBUG(1362, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'C') goto yy1364; - goto yy139; - } - } else { - if(yych <= 'b') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'c') goto yy1364; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'i') goto yy1363; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1363: - YYDEBUG(1363, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; + YYDEBUG(1363, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'g') goto yy1364; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1364: + YYDEBUG(1364, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy1365; + if (yych != 'h') goto yy3; + } +yy1365: + YYDEBUG(1365, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1366; + if (yych != 't') goto yy53; +yy1366: + YYDEBUG(1366, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1314; +yy1367: + YYDEBUG(1367, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy139; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy1364: - YYDEBUG(1364, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy561; + if (yych == 'C') goto yy1369; + goto yy139; } } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'b') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'h') goto yy561; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'c') goto yy1369; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy1365: - YYDEBUG(1365, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'Q') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'R') goto yy1362; - if(yych <= 'X') goto yy138; - goto yy1363; - } - } + } +yy1368: + YYDEBUG(1368, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= 'q') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'x') { - if(yych <= 'r') goto yy1377; - goto yy143; - } else { - if(yych <= 'y') goto yy1378; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } -yy1366: - YYDEBUG(1366, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - goto yy1356; - } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1371; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy139; + goto yy303; } -yy1367: - YYDEBUG(1367, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1353; - } + } +yy1369: + YYDEBUG(1369, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1368; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy559; } -yy1368: - YYDEBUG(1368, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy1354; - } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy1369; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= 'h') goto yy559; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1369: - YYDEBUG(1369, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1355; - } + } +yy1370: + YYDEBUG(1370, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; + if (yych <= 'Q') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1370; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'R') goto yy1367; + if (yych <= 'X') goto yy138; + goto yy1368; } } -yy1370: - YYDEBUG(1370, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'q') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'x') { + if (yych <= 'r') goto yy1382; + goto yy143; } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; + if (yych <= 'y') goto yy1383; + if (yych <= 'z') goto yy143; goto yy3; } } + } yy1371: - YYDEBUG(1371, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1357; - } + YYDEBUG(1371, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1372; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + goto yy1361; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1376; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1372: - YYDEBUG(1372, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - goto yy1358; - } + YYDEBUG(1372, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy1373; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1358; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1373; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1373: - YYDEBUG(1373, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy141; - goto yy1359; - } + YYDEBUG(1373, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy1374; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy1359; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy1374; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy1374: - YYDEBUG(1374, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy1360; - } + YYDEBUG(1374, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy1375; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1360; } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1375; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1375: - YYDEBUG(1375, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1361; - if(yych != 't') goto yy152; - YYDEBUG(1376, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy1309; + YYDEBUG(1375, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy151; - goto yy1309; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy1376: + YYDEBUG(1376, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1362; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1377; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1377: - YYDEBUG(1377, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(1377, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'B') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'C') goto yy1364; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'b') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'c') goto yy1379; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + goto yy1363; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy1378; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1378: - YYDEBUG(1378, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych <= ')') { - if(yych <= '(') goto yy303; - goto yy136; - } else { - if(yych <= ',') goto yy303; - if(yych <= '-') goto yy306; - goto yy305; - } - } + YYDEBUG(1378, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + goto yy1364; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy1379; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1379: - YYDEBUG(1379, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy561; - } + YYDEBUG(1379, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy572; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy1365; } -yy1380: - YYDEBUG(1380, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'W') { - if(yych <= 'N') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'O') goto yy1388; - if(yych <= 'U') goto yy138; - if(yych <= 'V') goto yy1389; - goto yy1386; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'o') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'n') goto yy138; - goto yy1388; - } else { - if(yych <= 'v') { - if(yych <= 'u') goto yy138; - goto yy1389; - } else { - if(yych <= 'w') goto yy1386; - if(yych <= 'z') goto yy138; - goto yy3; - } - } + if (yych == 'h') goto yy1380; + if (yych <= 'z') goto yy151; + goto yy3; } -yy1381: - YYDEBUG(1381, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } +yy1380: + YYDEBUG(1380, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1366; + if (yych != 't') goto yy152; + YYDEBUG(1381, *YYCURSOR); + yyaccept = 28; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1314; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy151; + goto yy1314; + } +yy1382: + YYDEBUG(1382, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy1385; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'w') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'x') goto yy1385; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy1382: - YYDEBUG(1382, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= '^') { + if (yych <= 'B') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; + if (yych <= 'C') goto yy1369; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'b') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'n') goto yy1383; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'c') goto yy1384; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy1383: - YYDEBUG(1383, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; + YYDEBUG(1383, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; + } else { + if (yych <= ')') { + if (yych <= '(') goto yy303; goto yy136; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; + if (yych <= ',') goto yy303; + if (yych <= '-') goto yy306; + goto yy305; } - } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy139; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych <= 't') goto yy1384; - if(yych <= 'z') goto yy139; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy1384: - YYDEBUG(1384, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(1384, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy559; } -yy1385: - YYDEBUG(1385, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; + if (yych == 'h') goto yy570; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy1385: + YYDEBUG(1385, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych <= 'N') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'O') goto yy1393; + if (yych <= 'U') goto yy138; + if (yych <= 'V') goto yy1394; + goto yy1391; + } + } else { + if (yych <= 'o') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'n') goto yy138; + goto yy1393; + } else { + if (yych <= 'v') { + if (yych <= 'u') goto yy138; + goto yy1394; } else { - if(yych <= 't') goto yy250; - if(yych <= 'z') goto yy139; + if (yych <= 'w') goto yy1391; + if (yych <= 'z') goto yy138; goto yy3; } } + } yy1386: - YYDEBUG(1386, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + YYDEBUG(1386, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy1387; - if(yych <= 'z') goto yy139; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy1390; } + } else { + if (yych <= 'w') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'x') goto yy1390; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1387: - YYDEBUG(1387, *YYCURSOR); - { + YYDEBUG(1387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy1388; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy1388: + YYDEBUG(1388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy1389; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1389: + YYDEBUG(1389, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy1390: + YYDEBUG(1390, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1391: + YYDEBUG(1391, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy1392; + if (yych <= 'z') goto yy139; + } +yy1392: + YYDEBUG(1392, *YYCURSOR); + { DEBUG_OUTPUT("now"); TIMELIB_INIT; TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1388: - YYDEBUG(1388, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1394; - } +yy1393: + YYDEBUG(1393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'n') goto yy1394; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1399; } -yy1389: - YYDEBUG(1389, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'E') goto yy139; - } - } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'e') goto yy1390; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= 'n') goto yy1399; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1390: - YYDEBUG(1390, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } +yy1394: + YYDEBUG(1394, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'm') goto yy1391; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy1391: - YYDEBUG(1391, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; + if (yych != 'E') goto yy139; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'b') goto yy1392; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 'e') goto yy1395; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy1392: - YYDEBUG(1392, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == ')') goto yy136; + } +yy1395: + YYDEBUG(1395, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'm') goto yy1396; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy1396: + YYDEBUG(1396, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'E') goto yy1393; - if(yych != 'e') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; } -yy1393: - YYDEBUG(1393, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy315; - goto yy53; -yy1394: - YYDEBUG(1394, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy1395; - if(yych <= 'z') goto yy140; + if (yych <= 'b') goto yy1397; + if (yych <= 'z') goto yy141; + goto yy3; } -yy1395: - YYDEBUG(1395, *YYCURSOR); - { + } +yy1397: + YYDEBUG(1397, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'E') goto yy1398; + if (yych != 'e') goto yy3; + } +yy1398: + YYDEBUG(1398, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy53; +yy1399: + YYDEBUG(1399, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy1400; + if (yych <= 'z') goto yy140; + } +yy1400: + YYDEBUG(1400, *YYCURSOR); + { DEBUG_OUTPUT("noon"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); @@ -21672,486 +21684,486 @@ yy1395: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1396: - YYDEBUG(1396, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'W') { - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } - } else { - if(yych <= 'O') { - if(yych <= 'N') goto yy138; - goto yy1388; - } else { - if(yych <= 'U') goto yy138; - if(yych <= 'V') goto yy1389; - goto yy1386; - } - } - } else { - if(yych <= 'n') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'v') { - if(yych <= 'o') goto yy1403; - if(yych <= 'u') goto yy143; - goto yy1404; - } else { - if(yych <= 'w') goto yy1402; - if(yych <= 'z') goto yy143; - goto yy3; - } - } - } -yy1397: - YYDEBUG(1397, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy1385; - } - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'x') goto yy1401; - if(yych <= 'z') goto yy143; - goto yy3; - } - } -yy1398: - YYDEBUG(1398, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1383; - } - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; +yy1401: + YYDEBUG(1401, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'W') { + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych == 'n') goto yy1399; - if(yych <= 'z') goto yy143; - goto yy3; - } - } -yy1399: - YYDEBUG(1399, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; + if (yych == '/') goto yy144; goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1384; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'O') { + if (yych <= 'N') goto yy138; + goto yy1393; } else { - if(yych == 't') goto yy1400; - if(yych <= 'z') goto yy148; - goto yy3; + if (yych <= 'U') goto yy138; + if (yych <= 'V') goto yy1394; + goto yy1391; } } -yy1400: - YYDEBUG(1400, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'n') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'v') { + if (yych <= 'o') goto yy1408; + if (yych <= 'u') goto yy143; + goto yy1409; } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; + if (yych <= 'w') goto yy1407; + if (yych <= 'z') goto yy143; goto yy3; } } -yy1401: - YYDEBUG(1401, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + } +yy1402: + YYDEBUG(1402, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy1390; } -yy1402: - YYDEBUG(1402, *YYCURSOR); - yyaccept = 29; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1387; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy1387; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy1387; - goto yy144; - } else { - if(yych <= '`') goto yy1387; - if(yych <= 'z') goto yy148; - goto yy1387; - } + if (yych == 'x') goto yy1406; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1403: - YYDEBUG(1403, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1394; - } + YYDEBUG(1403, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1409; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1388; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1404; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1404: - YYDEBUG(1404, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(1404, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy1390; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy1405; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1389; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1405; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1405: - YYDEBUG(1405, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - goto yy1391; - } + YYDEBUG(1405, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy1406; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1406: - YYDEBUG(1406, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - goto yy1392; - } + YYDEBUG(1406, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy1407; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy253; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1407: - YYDEBUG(1407, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'D') goto yy3; - goto yy1393; - } + YYDEBUG(1407, *YYCURSOR); + yyaccept = 29; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1392; + goto yy136; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1408; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy1392; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy1392; + goto yy144; + } else { + if (yych <= '`') goto yy1392; + if (yych <= 'z') goto yy148; + goto yy1392; } + } yy1408: - YYDEBUG(1408, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy485; - goto yy152; + YYDEBUG(1408, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1399; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1414; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1409: - YYDEBUG(1409, *YYCURSOR); - yyaccept = 30; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1395; - goto yy136; + YYDEBUG(1409, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych == '/') goto yy144; - goto yy1395; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy1395; - goto yy144; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= '`') goto yy1395; - if(yych <= 'z') goto yy149; - goto yy1395; + if (yych == '/') goto yy144; + goto yy305; } } -yy1410: - YYDEBUG(1410, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; + if (yych <= 'E') goto yy1395; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 's') goto yy1411; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'e') goto yy1410; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy1410: + YYDEBUG(1410, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + goto yy1396; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'm') goto yy1411; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1411: - YYDEBUG(1411, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(1411, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy1412; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; + goto yy1397; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy1412; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1412: - YYDEBUG(1412, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + YYDEBUG(1412, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy1413; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'D') goto yy3; + goto yy1398; } -yy1413: - YYDEBUG(1413, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy1414; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych == 'e') goto yy1413; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1413: + YYDEBUG(1413, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy483; + goto yy152; yy1414: - YYDEBUG(1414, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(1414, *YYCURSOR); + yyaccept = 30; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1400; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy1400; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy1400; + goto yy144; } else { - if(yych <= 'D') goto yy1415; - if(yych != 'd') goto yy3; + if (yych <= '`') goto yy1400; + if (yych <= 'z') goto yy149; + goto yy1400; } + } yy1415: - YYDEBUG(1415, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1416; - if(yych != 'a') goto yy53; + YYDEBUG(1415, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 's') goto yy1416; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1416: - YYDEBUG(1416, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1417; - if(yych != 'y') goto yy53; + YYDEBUG(1416, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy1417; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1417: - YYDEBUG(1417, *YYCURSOR); - ++YYCURSOR; + YYDEBUG(1417, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'e') goto yy1418; + if (yych <= 'z') goto yy140; + goto yy3; + } + } yy1418: - YYDEBUG(1418, *YYCURSOR); - { + YYDEBUG(1418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'r') goto yy1419; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1419: + YYDEBUG(1419, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'D') goto yy1420; + if (yych != 'd') goto yy3; + } +yy1420: + YYDEBUG(1420, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1421; + if (yych != 'a') goto yy53; +yy1421: + YYDEBUG(1421, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1422; + if (yych != 'y') goto yy53; +yy1422: + YYDEBUG(1422, *YYCURSOR); + ++YYCURSOR; +yy1423: + YYDEBUG(1423, *YYCURSOR); + { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; TIMELIB_HAVE_RELATIVE(); @@ -22161,150 +22173,149 @@ yy1418: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -yy1419: - YYDEBUG(1419, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - goto yy1411; - } +yy1424: + YYDEBUG(1424, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy1420; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + goto yy1416; } -yy1420: - YYDEBUG(1420, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1412; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy1421; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych == 's') goto yy1425; + if (yych <= 'z') goto yy143; + goto yy3; } -yy1421: - YYDEBUG(1421, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy1413; - } + } +yy1425: + YYDEBUG(1425, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1422; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1417; } -yy1422: - YYDEBUG(1422, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy1414; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1423; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 't') goto yy1426; + if (yych <= 'z') goto yy148; + goto yy3; } -yy1423: - YYDEBUG(1423, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'C') goto yy3; - goto yy1415; - } + } +yy1426: + YYDEBUG(1426, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1424; - if(yych <= 'z') goto yy151; - goto yy3; - } - } -yy1424: - YYDEBUG(1424, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1416; - if(yych != 'a') goto yy152; - YYDEBUG(1425, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1417; - if(yych != 'y') goto yy152; - YYDEBUG(1426, *YYCURSOR); - yyaccept = 31; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1418; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1418; - if(yych <= 'z') goto yy151; - goto yy1418; + if (yych == 'e') goto yy1427; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy1427: + YYDEBUG(1427, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy1419; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy1428; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy1428: + YYDEBUG(1428, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= 'C') goto yy3; + goto yy1420; } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1429; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy1429: + YYDEBUG(1429, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1421; + if (yych != 'a') goto yy152; + YYDEBUG(1430, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1422; + if (yych != 'y') goto yy152; + YYDEBUG(1431, *YYCURSOR); + yyaccept = 31; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1423; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1423; + if (yych <= 'z') goto yy151; + goto yy1423; } } @@ -22384,7 +22395,7 @@ timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) { - if (!(options && TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { + if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { parsed->h = 0; parsed->i = 0; parsed->s = 0; @@ -22404,7 +22415,7 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) parsed->tz_abbr = now->tz_abbr ? strdup(now->tz_abbr) : NULL; } if (!parsed->tz_info) { - parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL; + 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; diff --git a/ext/date/lib/parse_date.c.orig b/ext/date/lib/parse_date.c.orig index 4948a2e82..311bf91a6 100644 --- a/ext/date/lib/parse_date.c.orig +++ b/ext/date/lib/parse_date.c.orig @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Mon Feb 25 19:27:05 2008 */ +/* Generated by re2c 0.13.5 on Thu Dec 18 15:52:22 2008 */ #line 1 "ext/date/lib/parse_date.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_date.c,v 1.29.2.30.2.16 2008/02/25 18:28:03 derick Exp $ */ +/* $Id: parse_date.c,v 1.29.2.30.2.18 2008/12/18 14:56:46 derick Exp $ */ #include "timelib.h" @@ -734,7 +734,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, "/")) { + 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; @@ -775,7 +775,11 @@ std: #line 889 "ext/date/lib/parse_date.re" + +#line 780 "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, 104, 0, 0, 0, 0, 0, 0, @@ -811,114 +815,109 @@ std: 0, 0, 0, 0, 0, 0, 0, 0, }; -#line 815 "ext/date/lib/parse_date.c" - { - YYCTYPE yych; - unsigned int yyaccept = 0; - - YYDEBUG(0, *YYCURSOR); - if((YYLIMIT - YYCURSOR) < 29) YYFILL(29); - yych = *YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case 0x00: - case 0x0A: goto yy48; - case 0x09: - case ' ': goto yy45; - case '(': goto yy42; - case '+': - case '-': goto yy18; - case ',': - case '.': goto yy47; - case '0': goto yy13; - case '1': goto yy14; - case '2': goto yy15; - case '3': goto yy16; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy17; - case '@': goto yy11; - case 'A': goto yy26; - case 'B': - case 'C': - case 'G': - case 'H': - case 'K': - case 'Q': - case 'R': - case 'U': - case 'Z': goto yy43; - case 'D': goto yy32; - case 'E': goto yy36; - case 'F': goto yy24; - case 'I': goto yy19; - case 'J': goto yy22; - case 'L': goto yy38; - case 'M': goto yy7; - case 'N': goto yy5; - case 'O': goto yy30; - case 'P': goto yy40; - case 'S': goto yy28; - case 'T': goto yy9; - case 'V': goto yy20; - case 'W': goto yy34; - case 'X': goto yy21; - case 'Y': goto yy2; - case 'a': goto yy27; - case 'b': - case 'c': - case 'g': - case 'h': - case 'i': - case 'k': - case 'q': - case 'r': - case 'u': - case 'v': - case 'x': - case 'z': goto yy44; - case 'd': goto yy33; - case 'e': goto yy37; - case 'f': goto yy25; - case 'j': goto yy23; - case 'l': goto yy39; - case 'm': goto yy8; - case 'n': goto yy6; - case 'o': goto yy31; - case 'p': goto yy41; - case 's': goto yy29; - case 't': goto yy10; - case 'w': goto yy35; - case 'y': goto yy4; - default: goto yy50; - } + YYDEBUG(0, *YYCURSOR); + if ((YYLIMIT - YYCURSOR) < 29) YYFILL(29); + yych = *YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case 0x00: + case '\n': goto yy48; + case '\t': + case ' ': goto yy45; + case '(': goto yy42; + case '+': + case '-': goto yy18; + case ',': + case '.': goto yy47; + case '0': goto yy13; + case '1': goto yy14; + case '2': goto yy15; + case '3': goto yy16; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy17; + case '@': goto yy11; + case 'A': goto yy26; + case 'B': + case 'C': + case 'G': + case 'H': + case 'K': + case 'Q': + case 'R': + case 'U': + case 'Z': goto yy43; + case 'D': goto yy32; + case 'E': goto yy36; + case 'F': goto yy24; + case 'I': goto yy19; + case 'J': goto yy22; + case 'L': goto yy38; + case 'M': goto yy7; + case 'N': goto yy5; + case 'O': goto yy30; + case 'P': goto yy40; + case 'S': goto yy28; + case 'T': goto yy9; + case 'V': goto yy20; + case 'W': goto yy34; + case 'X': goto yy21; + case 'Y': goto yy2; + case 'a': goto yy27; + case 'b': + case 'c': + case 'g': + case 'h': + case 'i': + case 'k': + case 'q': + case 'r': + case 'u': + case 'v': + case 'x': + case 'z': goto yy44; + case 'd': goto yy33; + case 'e': goto yy37; + case 'f': goto yy25; + case 'j': goto yy23; + case 'l': goto yy39; + case 'm': goto yy8; + case 'n': goto yy6; + case 'o': goto yy31; + case 'p': goto yy41; + case 's': goto yy29; + case 't': goto yy10; + case 'w': goto yy35; + case 'y': goto yy4; + default: goto yy50; + } yy2: - YYDEBUG(2, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'E') { - if(yych <= ')') { - if(yych >= ')') goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy1410; - } + YYDEBUG(2, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'E') { + if (yych <= ')') { + if (yych >= ')') goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych >= 'a') goto yy142; - } else { - if(yych <= 'e') goto yy1419; - if(yych <= 'z') goto yy142; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy1415; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych >= 'a') goto yy142; + } else { + if (yych <= 'e') goto yy1424; + if (yych <= 'z') goto yy142; } + } yy3: - YYDEBUG(3, *YYCURSOR); -#line 1443 "ext/date/lib/parse_date.re" - { + YYDEBUG(3, *YYCURSOR); +#line 1446 "ext/date/lib/parse_date.re" + { int tz_not_found; DEBUG_OUTPUT("tzcorrection | tz"); TIMELIB_INIT; @@ -930,1727 +929,1727 @@ yy3: TIMELIB_DEINIT; return TIMELIB_TIMEZONE; } -#line 934 "ext/date/lib/parse_date.c" +#line 933 "ext/date/lib/parse_date.c" yy4: - YYDEBUG(4, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy1410; - } + YYDEBUG(4, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy1415; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; + if (yych <= 'e') goto yy1415; + if (yych <= 'z') goto yy137; + goto yy3; + } + } +yy5: + YYDEBUG(5, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'D') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'H') { + if (yych <= 'E') goto yy1386; goto yy137; } else { - if(yych <= 'e') goto yy1410; - if(yych <= 'z') goto yy137; - goto yy3; + if (yych <= 'I') goto yy1387; + if (yych <= 'N') goto yy137; + goto yy1385; } } -yy5: - YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'D') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy137; + } else { + if (yych <= 'h') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy1381; - goto yy137; - } else { - if(yych <= 'I') goto yy1382; - if(yych <= 'N') goto yy137; - goto yy1380; - } + if (yych == 'e') goto yy1402; + goto yy142; } } else { - if(yych <= 'h') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'e') goto yy1397; - goto yy142; - } + if (yych <= 'n') { + if (yych <= 'i') goto yy1403; + goto yy142; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1398; - goto yy142; - } else { - if(yych <= 'o') goto yy1396; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'o') goto yy1401; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy6: - YYDEBUG(6, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'D') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(6, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'D') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'H') { + if (yych <= 'E') goto yy1386; goto yy137; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy1381; - goto yy137; - } else { - if(yych <= 'I') goto yy1382; - if(yych <= 'N') goto yy137; - goto yy1380; - } + if (yych <= 'I') goto yy1387; + if (yych <= 'N') goto yy137; + goto yy1385; + } + } + } else { + if (yych <= 'h') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'e') goto yy1386; + goto yy137; } } else { - if(yych <= 'h') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'e') goto yy1381; - goto yy137; - } + if (yych <= 'n') { + if (yych <= 'i') goto yy1387; + goto yy137; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1382; - goto yy137; - } else { - if(yych <= 'o') goto yy1380; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'o') goto yy1385; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy7: - YYDEBUG(7, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1350; - } else { - if(yych == 'I') goto yy1351; - if(yych <= 'N') goto yy137; - goto yy1352; - } - } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1365; + YYDEBUG(7, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1355; + } else { + if (yych == 'I') goto yy1356; + if (yych <= 'N') goto yy137; + goto yy1357; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1370; + goto yy142; + } else { + if (yych <= 'n') { + if (yych <= 'i') goto yy1371; goto yy142; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1366; - goto yy142; - } else { - if(yych <= 'o') goto yy1367; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'o') goto yy1372; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1350; - } else { - if(yych == 'I') goto yy1351; - if(yych <= 'N') goto yy137; - goto yy1352; - } - } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1350; + YYDEBUG(8, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1355; + } else { + if (yych == 'I') goto yy1356; + if (yych <= 'N') goto yy137; + goto yy1357; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1355; + goto yy137; + } else { + if (yych <= 'n') { + if (yych <= 'i') goto yy1356; goto yy137; } else { - if(yych <= 'n') { - if(yych <= 'i') goto yy1351; - goto yy137; - } else { - if(yych <= 'o') goto yy1352; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'o') goto yy1357; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy9: - YYDEBUG(9, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case ')': goto yy136; - case '0': - case '1': goto yy1282; - case '2': goto yy1283; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1284; - 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 yy137; - case 'E': goto yy1277; - case 'H': goto yy1278; - case 'O': goto yy1279; - case 'U': goto yy1280; - case 'W': goto yy1281; - 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 yy142; - case 'e': goto yy1319; - case 'h': goto yy1320; - case 'o': goto yy1321; - case 'u': goto yy1322; - case 'w': goto yy1323; - default: goto yy3; - } + YYDEBUG(9, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case ')': goto yy136; + case '0': + case '1': goto yy1287; + case '2': goto yy1288; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1289; + 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 yy137; + case 'E': goto yy1282; + case 'H': goto yy1283; + case 'O': goto yy1284; + case 'U': goto yy1285; + case 'W': goto yy1286; + 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 yy142; + case 'e': goto yy1324; + case 'h': goto yy1325; + case 'o': goto yy1326; + case 'u': goto yy1327; + case 'w': goto yy1328; + default: goto yy3; + } yy10: - YYDEBUG(10, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case ')': goto yy136; - case '0': - case '1': goto yy1282; - case '2': goto yy1283; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1284; - 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 yy137; - case 'E': - case 'e': goto yy1277; - case 'H': - case 'h': goto yy1278; - case 'O': - case 'o': goto yy1279; - case 'U': - case 'u': goto yy1280; - case 'W': - case 'w': goto yy1281; - default: goto yy3; - } + YYDEBUG(10, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case ')': goto yy136; + case '0': + case '1': goto yy1287; + case '2': goto yy1288; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1289; + 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 yy137; + case 'E': + case 'e': goto yy1282; + case 'H': + case 'h': goto yy1283; + case 'O': + case 'o': goto yy1284; + case 'U': + case 'u': goto yy1285; + case 'W': + case 'w': goto yy1286; + default: goto yy3; + } yy11: - YYDEBUG(11, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1273; - if(yych <= '/') goto yy12; - if(yych <= '9') goto yy1274; + YYDEBUG(11, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1278; + if (yych <= '/') goto yy12; + if (yych <= '9') goto yy1279; yy12: - YYDEBUG(12, *YYCURSOR); -#line 1538 "ext/date/lib/parse_date.re" - { + YYDEBUG(12, *YYCURSOR); +#line 1541 "ext/date/lib/parse_date.re" + { add_error(s, "Unexpected character"); goto std; } -#line 1250 "ext/date/lib/parse_date.c" +#line 1249 "ext/date/lib/parse_date.c" yy13: - YYDEBUG(13, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy1227; - 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 yy1229; - case '-': goto yy678; - case '.': goto yy1239; - case '/': goto yy677; - case '0': goto yy1272; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1271; - case ':': goto yy1240; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(13, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy1232; + 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 yy1234; + case '-': goto yy676; + case '.': goto yy1244; + case '/': goto yy675; + case '0': goto yy1277; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1276; + case ':': goto yy1245; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy14: - YYDEBUG(14, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': goto yy1271; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1238; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(14, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': goto yy1276; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1243; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy15: - YYDEBUG(15, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': - case '3': goto yy1238; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1225; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(15, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': + case '3': goto yy1243; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1230; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy16: - YYDEBUG(16, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': goto yy1225; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy674; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(16, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': goto yy1230; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy672; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy17: - YYDEBUG(17, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: goto yy665; - 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 yy667; - case '-': goto yy678; - case '.': goto yy679; - case '/': goto yy677; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy674; - case ':': goto yy688; - case 'n': goto yy675; - case 'r': goto yy676; - case 's': goto yy669; - case 't': goto yy673; - default: goto yy12; - } + YYDEBUG(17, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': goto yy663; + 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 yy665; + case '-': goto yy676; + case '.': goto yy677; + case '/': goto yy675; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy672; + case ':': goto yy686; + case 'n': goto yy673; + case 'r': goto yy674; + case 's': goto yy667; + case 't': goto yy671; + default: goto yy12; + } yy18: - YYDEBUG(18, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - YYDEBUG(-1, yych); - switch(yych) { - case '+': - case '-': goto yy643; - case '0': - case '1': goto yy640; - case '2': goto yy641; - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy642; - default: goto yy12; - } + YYDEBUG(18, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + YYDEBUG(-1, yych); + switch (yych) { + case '+': + case '-': goto yy641; + case '0': + case '1': goto yy638; + case '2': goto yy639; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy640; + default: goto yy12; + } yy19: - YYDEBUG(19, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy3; - } + YYDEBUG(19, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy3; - } else { - if(yych == '/') goto yy3; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy3; } } else { - if(yych <= 'V') { - if(yych <= 'H') { - if(yych <= '@') goto yy3; - goto yy137; - } else { - if(yych <= 'I') goto yy639; - if(yych <= 'U') goto yy137; - goto yy638; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych == 'X') goto yy638; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych == '/') goto yy3; + goto yy305; } } -yy20: - YYDEBUG(20, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } else { + if (yych <= 'V') { + if (yych <= 'H') { + if (yych <= '@') goto yy3; + goto yy137; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= 'I') goto yy637; + if (yych <= 'U') goto yy137; + goto yy636; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych <= 'Z') { + if (yych == 'X') goto yy636; goto yy137; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy635; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy21: - YYDEBUG(21, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } +yy20: + YYDEBUG(20, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy633; + goto yy137; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } + } + } +yy21: + YYDEBUG(21, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy631; goto yy137; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy633; - goto yy137; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(22, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy614; + if (yych <= 'T') goto yy137; + goto yy613; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy623; + } else { + if (yych == 'u') goto yy622; + if (yych <= 'z') goto yy142; + goto yy3; + } + } +yy23: + YYDEBUG(23, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy614; + if (yych <= 'T') goto yy137; + goto yy613; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy614; + } else { + if (yych == 'u') goto yy613; + if (yych <= 'z') goto yy137; + goto yy3; + } + } +yy24: + YYDEBUG(24, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy616; - if(yych <= 'T') goto yy137; - goto yy615; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy575; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy625; + if (yych <= 'N') { + if (yych == 'I') goto yy576; + goto yy137; } else { - if(yych == 'u') goto yy624; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= 'O') goto yy577; + if (yych <= 'Q') goto yy137; + goto yy578; } } -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'i') { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; } else { - if(yych <= 'A') goto yy616; - if(yych <= 'T') goto yy137; - goto yy615; + if (yych <= 'e') goto yy594; + if (yych <= 'h') goto yy142; + goto yy595; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy616; + if (yych <= 'q') { + if (yych == 'o') goto yy596; + goto yy142; } else { - if(yych == 'u') goto yy615; - if(yych <= 'z') goto yy137; + if (yych <= 'r') goto yy597; + if (yych <= 'z') goto yy142; goto yy3; } } -yy24: - YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy577; - } + } +yy25: + YYDEBUG(25, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'N') { - if(yych == 'I') goto yy578; - goto yy137; - } else { - if(yych <= 'O') goto yy579; - if(yych <= 'Q') goto yy137; - goto yy580; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy575; } } else { - if(yych <= 'i') { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy596; - if(yych <= 'h') goto yy142; - goto yy597; - } + if (yych <= 'N') { + if (yych == 'I') goto yy576; + goto yy137; } else { - if(yych <= 'q') { - if(yych == 'o') goto yy598; - goto yy142; - } else { - if(yych <= 'r') goto yy599; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'O') goto yy577; + if (yych <= 'Q') goto yy137; + goto yy578; } } -yy25: - YYDEBUG(25, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy577; - } + } else { + if (yych <= 'i') { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'N') { - if(yych == 'I') goto yy578; - goto yy137; - } else { - if(yych <= 'O') goto yy579; - if(yych <= 'Q') goto yy137; - goto yy580; - } + if (yych <= 'e') goto yy575; + if (yych <= 'h') goto yy137; + goto yy576; } } else { - if(yych <= 'i') { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy577; - if(yych <= 'h') goto yy137; - goto yy578; - } + if (yych <= 'q') { + if (yych == 'o') goto yy577; + goto yy137; } else { - if(yych <= 'q') { - if(yych == 'o') goto yy579; - goto yy137; - } else { - if(yych <= 'r') goto yy580; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'r') goto yy578; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy26: - YYDEBUG(26, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'F') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(26, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'F') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'O') { + if (yych <= 'G') goto yy554; goto yy137; } else { - if(yych <= 'O') { - if(yych <= 'G') goto yy556; - goto yy137; - } else { - if(yych <= 'P') goto yy555; - if(yych <= 'T') goto yy137; - goto yy554; - } + if (yych <= 'P') goto yy553; + if (yych <= 'T') goto yy137; + goto yy552; + } + } + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'g') goto yy566; + goto yy142; } } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'g') goto yy568; - goto yy142; - } + if (yych <= 't') { + if (yych <= 'p') goto yy565; + goto yy142; } else { - if(yych <= 't') { - if(yych <= 'p') goto yy567; - goto yy142; - } else { - if(yych <= 'u') goto yy566; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'u') goto yy564; + if (yych <= 'z') goto yy142; + goto yy3; } } + } yy27: - YYDEBUG(27, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'F') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; + YYDEBUG(27, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'F') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy137; + } else { + if (yych <= 'O') { + if (yych <= 'G') goto yy554; goto yy137; } else { - if(yych <= 'O') { - if(yych <= 'G') goto yy556; - goto yy137; - } else { - if(yych <= 'P') goto yy555; - if(yych <= 'T') goto yy137; - goto yy554; - } + if (yych <= 'P') goto yy553; + if (yych <= 'T') goto yy137; + goto yy552; + } + } + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych == 'g') goto yy554; + goto yy137; } } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych == 'g') goto yy556; - goto yy137; - } + if (yych <= 't') { + if (yych <= 'p') goto yy553; + goto yy137; } else { - if(yych <= 't') { - if(yych <= 'p') goto yy555; - goto yy137; - } else { - if(yych <= 'u') goto yy554; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'u') goto yy552; + if (yych <= 'z') goto yy137; + goto yy3; } } + } yy28: - YYDEBUG(28, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy497; - goto yy137; - } + YYDEBUG(28, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy496; - goto yy137; - } else { - if(yych <= 'I') goto yy498; - if(yych <= 'T') goto yy137; - goto yy499; - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy495; + goto yy137; } } else { - if(yych <= 'e') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy526; - if(yych <= 'd') goto yy142; - goto yy525; - } + if (yych <= 'H') { + if (yych <= 'E') goto yy494; + goto yy137; } else { - if(yych <= 't') { - if(yych == 'i') goto yy527; - goto yy142; - } else { - if(yych <= 'u') goto yy528; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= 'I') goto yy496; + if (yych <= 'T') goto yy137; + goto yy497; } } -yy29: - YYDEBUG(29, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy497; - goto yy137; - } + } else { + if (yych <= 'e') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= 'E') goto yy496; - goto yy137; - } else { - if(yych <= 'I') goto yy498; - if(yych <= 'T') goto yy137; - goto yy499; - } + if (yych <= 'a') goto yy524; + if (yych <= 'd') goto yy142; + goto yy523; } } else { - if(yych <= 'e') { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy497; - if(yych <= 'd') goto yy137; - goto yy496; - } + if (yych <= 't') { + if (yych == 'i') goto yy525; + goto yy142; } else { - if(yych <= 't') { - if(yych == 'i') goto yy498; - goto yy137; - } else { - if(yych <= 'u') goto yy499; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= 'u') goto yy526; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy30: - YYDEBUG(30, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; + } +yy29: + YYDEBUG(29, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; goto yy136; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy137; - goto yy486; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy495; + goto yy137; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; + if (yych <= 'H') { + if (yych <= 'E') goto yy494; + goto yy137; } else { - if(yych <= 'c') goto yy491; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= 'I') goto yy496; + if (yych <= 'T') goto yy137; + goto yy497; } } -yy31: - YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'e') { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy137; - goto yy486; + if (yych <= 'a') goto yy495; + if (yych <= 'd') goto yy137; + goto yy494; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; + if (yych <= 't') { + if (yych == 'i') goto yy496; goto yy137; } else { - if(yych <= 'c') goto yy486; - if(yych <= 'z') goto yy137; + if (yych <= 'u') goto yy497; + if (yych <= 'z') goto yy137; goto yy3; } } + } +yy30: + YYDEBUG(30, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy137; + goto yy484; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'c') goto yy489; + if (yych <= 'z') goto yy142; + goto yy3; + } + } +yy31: + YYDEBUG(31, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy137; + goto yy484; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'c') goto yy484; + if (yych <= 'z') goto yy137; + goto yy3; + } + } yy32: - YYDEBUG(32, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy301; - } + YYDEBUG(32, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy479; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy301; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'e') goto yy477; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy33: - YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy301; - } + YYDEBUG(33, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy301; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy301; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'e') goto yy301; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy34: - YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy274; - } + YYDEBUG(34, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'e') goto yy288; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy274; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; + } else { + if (yych <= 'e') goto yy288; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy137; - goto yy274; - } + YYDEBUG(35, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'e') goto yy274; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy137; + goto yy274; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; + } else { + if (yych <= 'e') goto yy274; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy36: - YYDEBUG(36, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy254; - if(yych <= 'K') goto yy137; - goto yy255; - } + YYDEBUG(36, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy142; - goto yy264; - } else { - if(yych == 'l') goto yy265; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych == 'I') goto yy254; + if (yych <= 'K') goto yy137; + goto yy255; + } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy142; + goto yy264; + } else { + if (yych == 'l') goto yy265; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy37: - YYDEBUG(37, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy254; - if(yych <= 'K') goto yy137; - goto yy255; - } + YYDEBUG(37, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy137; - goto yy254; - } else { - if(yych == 'l') goto yy255; - if(yych <= 'z') goto yy137; - goto yy3; - } + if (yych == 'I') goto yy254; + if (yych <= 'K') goto yy137; + goto yy255; + } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy137; + goto yy254; + } else { + if (yych == 'l') goto yy255; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy38: - YYDEBUG(38, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy248; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy251; - if(yych <= 'z') goto yy142; - goto yy3; - } + YYDEBUG(38, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy248; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych <= 'a') goto yy251; + if (yych <= 'z') goto yy142; + goto yy3; } + } yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy248; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy137; - goto yy3; - } else { - if(yych <= 'a') goto yy248; - if(yych <= 'z') goto yy137; - goto yy3; - } + YYDEBUG(39, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy248; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy137; + goto yy3; + } else { + if (yych <= 'a') goto yy248; + if (yych <= 'z') goto yy137; + goto yy3; } + } yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy137; - goto yy154; - } + YYDEBUG(40, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy142; - } else { - if(yych <= 'r') goto yy241; - if(yych <= 'z') goto yy142; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy137; + goto yy154; } -yy41: - YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy137; - goto yy154; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy142; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - goto yy137; - } else { - if(yych <= 'r') goto yy154; - if(yych <= 'z') goto yy137; - goto yy3; - } - } -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') goto yy12; - if(yych <= 'Z') goto yy153; - if(yych <= '`') goto yy12; - if(yych <= 'z') goto yy153; - goto yy12; -yy43: - YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; + if (yych <= 'r') goto yy241; + if (yych <= 'z') goto yy142; goto yy3; + } + } +yy41: + YYDEBUG(41, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy142; - goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy137; + goto yy154; } -yy44: - YYDEBUG(44, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + goto yy137; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy137; + if (yych <= 'r') goto yy154; + if (yych <= 'z') goto yy137; goto yy3; } + } +yy42: + YYDEBUG(42, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') goto yy12; + if (yych <= 'Z') goto yy153; + if (yych <= '`') goto yy12; + if (yych <= 'z') goto yy153; + goto yy12; +yy43: + YYDEBUG(43, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; + } +yy44: + YYDEBUG(44, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy137; + goto yy3; + } yy45: - YYDEBUG(45, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= '/') goto yy46; - if(yych <= '9') goto yy51; + YYDEBUG(45, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= '/') goto yy46; + if (yych <= '9') goto yy51; yy46: - YYDEBUG(46, *YYCURSOR); -#line 1527 "ext/date/lib/parse_date.re" - { + YYDEBUG(46, *YYCURSOR); +#line 1530 "ext/date/lib/parse_date.re" + { goto std; } -#line 2260 "ext/date/lib/parse_date.c" +#line 2259 "ext/date/lib/parse_date.c" yy47: - YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - goto yy46; + YYDEBUG(47, *YYCURSOR); + yych = *++YYCURSOR; + goto yy46; yy48: - YYDEBUG(48, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(49, *YYCURSOR); -#line 1532 "ext/date/lib/parse_date.re" - { + YYDEBUG(48, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(49, *YYCURSOR); +#line 1535 "ext/date/lib/parse_date.re" + { s->pos = cursor; s->line++; goto std; } -#line 2274 "ext/date/lib/parse_date.c" +#line 2273 "ext/date/lib/parse_date.c" yy50: - YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - goto yy12; + YYDEBUG(50, *YYCURSOR); + yych = *++YYCURSOR; + goto yy12; yy51: - YYDEBUG(51, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; - YYDEBUG(52, *YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych >= ' ') goto yy56; + YYDEBUG(51, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; + YYDEBUG(52, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych >= ' ') goto yy56; + } else { + if (yych == 'D') goto yy61; + if (yych >= 'F') goto yy63; + } + } else { + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy59; + } else { + if (yych <= 'S') { + if (yych >= 'S') goto yy58; } else { - if(yych == 'D') goto yy61; - if(yych >= 'F') goto yy63; + if (yych <= 'T') goto yy65; + if (yych >= 'W') goto yy62; } + } + } + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych >= 'd') goto yy61; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych >= 'M') goto yy59; + if (yych <= 'f') { + if (yych >= 'f') goto yy63; } else { - if(yych <= 'S') { - if(yych >= 'S') goto yy58; - } else { - if(yych <= 'T') goto yy65; - if(yych >= 'W') goto yy62; - } + if (yych == 'h') goto yy60; } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych >= 'd') goto yy61; - } else { - if(yych <= 'f') { - if(yych >= 'f') goto yy63; - } else { - if(yych == 'h') goto yy60; - } - } + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy53; + if (yych <= 's') goto yy58; + goto yy65; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy53; - if(yych <= 's') goto yy58; - goto yy65; + if (yych <= 'w') { + if (yych >= 'w') goto yy62; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy62; - } else { - if(yych == 'y') goto yy64; - } + if (yych == 'y') goto yy64; } } } + } yy53: - YYDEBUG(53, *YYCURSOR); - YYCURSOR = YYMARKER; - if(yyaccept <= 15) { - if(yyaccept <= 7) { - if(yyaccept <= 3) { - if(yyaccept <= 1) { - if(yyaccept <= 0) { - goto yy3; - } else { - goto yy12; - } + YYDEBUG(53, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 15) { + if (yyaccept <= 7) { + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept <= 0) { + goto yy3; } else { - if(yyaccept <= 2) { - goto yy46; - } else { - goto yy69; - } + goto yy12; } } else { - if(yyaccept <= 5) { - if(yyaccept <= 4) { - goto yy174; - } else { - goto yy276; - } + if (yyaccept <= 2) { + goto yy46; } else { - if(yyaccept <= 6) { - goto yy303; - } else { - goto yy308; - } + goto yy69; } } } else { - if(yyaccept <= 11) { - if(yyaccept <= 9) { - if(yyaccept <= 8) { - goto yy332; - } else { - goto yy402; - } + if (yyaccept <= 5) { + if (yyaccept <= 4) { + goto yy174; } else { - if(yyaccept <= 10) { - goto yy558; - } else { - goto yy681; - } + goto yy276; } } else { - if(yyaccept <= 13) { - if(yyaccept <= 12) { - goto yy696; - } else { - goto yy796; - } + if (yyaccept <= 6) { + goto yy303; } else { - if(yyaccept <= 14) { - goto yy844; - } else { - goto yy854; - } + goto yy308; } } } } else { - if(yyaccept <= 23) { - if(yyaccept <= 19) { - if(yyaccept <= 17) { - if(yyaccept <= 16) { - goto yy942; - } else { - goto yy962; - } + if (yyaccept <= 11) { + if (yyaccept <= 9) { + if (yyaccept <= 8) { + goto yy332; } else { - if(yyaccept <= 18) { - goto yy993; - } else { - goto yy1000; - } + goto yy402; } } else { - if(yyaccept <= 21) { - if(yyaccept <= 20) { - goto yy1027; - } else { - goto yy972; - } + if (yyaccept <= 10) { + goto yy556; } else { - if(yyaccept <= 22) { - goto yy660; - } else { - goto yy1152; - } + goto yy679; } } } else { - if(yyaccept <= 27) { - if(yyaccept <= 25) { - if(yyaccept <= 24) { - goto yy1021; - } else { - goto yy1243; - } + if (yyaccept <= 13) { + if (yyaccept <= 12) { + goto yy694; } else { - if(yyaccept <= 26) { - goto yy1251; - } else { - goto yy1306; - } + goto yy799; } } else { - if(yyaccept <= 29) { - if(yyaccept <= 28) { - goto yy1309; - } else { - goto yy1387; - } + if (yyaccept <= 14) { + goto yy843; } else { - if(yyaccept <= 30) { - goto yy1395; - } else { - goto yy1418; - } + goto yy853; } } } } -yy54: - YYDEBUG(54, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(55, *YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy51; - goto yy53; -yy56: - YYDEBUG(56, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; -yy57: - YYDEBUG(57, *YYCURSOR); - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych <= 0x1F) goto yy53; - goto yy56; + } else { + if (yyaccept <= 23) { + if (yyaccept <= 19) { + if (yyaccept <= 17) { + if (yyaccept <= 16) { + goto yy947; + } else { + goto yy967; + } } else { - if(yych == 'D') goto yy61; - if(yych <= 'E') goto yy53; - goto yy63; + if (yyaccept <= 18) { + goto yy998; + } else { + goto yy1005; + } } } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych <= 'L') goto yy53; - goto yy59; + if (yyaccept <= 21) { + if (yyaccept <= 20) { + goto yy1032; + } else { + goto yy977; + } } else { - if(yych <= 'S') { - if(yych <= 'R') goto yy53; + if (yyaccept <= 22) { + goto yy658; } else { - if(yych <= 'T') goto yy65; - if(yych <= 'V') goto yy53; - goto yy62; + goto yy1157; } } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych <= 'c') goto yy53; - goto yy61; + if (yyaccept <= 27) { + if (yyaccept <= 25) { + if (yyaccept <= 24) { + goto yy1026; + } else { + goto yy1248; + } } else { - if(yych <= 'f') { - if(yych <= 'e') goto yy53; - goto yy63; + if (yyaccept <= 26) { + goto yy1256; } else { - if(yych == 'h') goto yy60; - goto yy53; + goto yy1311; } } } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy53; - if(yych >= 't') goto yy65; + if (yyaccept <= 29) { + if (yyaccept <= 28) { + goto yy1314; + } else { + goto yy1392; + } } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy53; - goto yy62; + if (yyaccept <= 30) { + goto yy1400; } else { - if(yych == 'y') goto yy64; - goto yy53; + goto yy1423; } } } } -yy58: - YYDEBUG(58, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; + } +yy54: + YYDEBUG(54, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(55, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy51; + goto yy53; +yy56: + YYDEBUG(56, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy57: + YYDEBUG(57, *YYCURSOR); + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych <= 0x1F) goto yy53; + goto yy56; } else { - if(yych <= 'E') goto yy124; - if(yych <= 'T') goto yy53; - goto yy122; + if (yych == 'D') goto yy61; + if (yych <= 'E') goto yy53; + goto yy63; } } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych <= 'L') goto yy53; + goto yy59; } else { - if(yych <= 'e') goto yy124; - if(yych == 'u') goto yy122; - goto yy53; + if (yych <= 'S') { + if (yych <= 'R') goto yy53; + } else { + if (yych <= 'T') goto yy65; + if (yych <= 'V') goto yy53; + goto yy62; + } } } -yy59: - YYDEBUG(59, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych == 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych <= 'c') goto yy53; + goto yy61; + } else { + if (yych <= 'f') { + if (yych <= 'e') goto yy53; + goto yy63; + } else { + if (yych == 'h') goto yy60; + goto yy53; + } + } } else { - if(yych <= 'i') { - if(yych <= 'h') goto yy53; - goto yy114; + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy53; + if (yych >= 't') goto yy65; } else { - if(yych == 'o') goto yy113; - goto yy53; + if (yych <= 'w') { + if (yych <= 'v') goto yy53; + goto yy62; + } else { + if (yych == 'y') goto yy64; + goto yy53; + } } } + } +yy58: + YYDEBUG(58, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy124; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy124; + if (yych == 'u') goto yy122; + goto yy53; + } + } +yy59: + YYDEBUG(59, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy53; + goto yy114; + } else { + if (yych == 'o') goto yy113; + goto yy53; + } + } yy60: - YYDEBUG(60, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy111; - if(yych == 'o') goto yy111; - goto yy53; + YYDEBUG(60, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy111; + if (yych == 'o') goto yy111; + goto yy53; yy61: - YYDEBUG(61, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy110; - if(yych == 'a') goto yy110; - goto yy53; + YYDEBUG(61, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy110; + if (yych == 'a') goto yy110; + goto yy53; yy62: - YYDEBUG(62, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy98; - if(yych == 'e') goto yy98; - goto yy53; + YYDEBUG(62, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy98; + if (yych == 'e') goto yy98; + goto yy53; yy63: - YYDEBUG(63, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych == 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; + YYDEBUG(63, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy53; + goto yy83; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy53; - goto yy83; - } else { - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'r') goto yy82; + goto yy53; } + } yy64: - YYDEBUG(64, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy79; - if(yych == 'e') goto yy79; - goto yy53; + YYDEBUG(64, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy79; + if (yych == 'e') goto yy79; + goto yy53; yy65: - YYDEBUG(65, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy66; - if(yych <= 'T') goto yy53; - goto yy67; + YYDEBUG(65, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy66; + if (yych <= 'T') goto yy53; + goto yy67; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - } else { - if(yych == 'u') goto yy67; - goto yy53; - } + if (yych == 'u') goto yy67; + goto yy53; } + } yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy74; - if(yych == 'u') goto yy74; - goto yy53; + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy74; + if (yych == 'u') goto yy74; + goto yy53; yy67: - YYDEBUG(67, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy68; - if(yych != 'e') goto yy53; + YYDEBUG(67, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy68; + if (yych != 'e') goto yy53; yy68: - YYDEBUG(68, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'S') goto yy70; - if(yych == 's') goto yy70; + YYDEBUG(68, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'S') goto yy70; + if (yych == 's') goto yy70; yy69: - YYDEBUG(69, *YYCURSOR); -#line 1511 "ext/date/lib/parse_date.re" - { + YYDEBUG(69, *YYCURSOR); +#line 1514 "ext/date/lib/parse_date.re" + { timelib_ull i; DEBUG_OUTPUT("relative"); TIMELIB_INIT; @@ -2659,921 +2658,921 @@ yy69: while(*ptr) { i = timelib_get_unsigned_nr((char **) &ptr, 24); timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, 0, s); + timelib_set_relative((char **) &ptr, i, 1, s); } TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2668 "ext/date/lib/parse_date.c" +#line 2667 "ext/date/lib/parse_date.c" yy70: - YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy71; - if(yych != 'd') goto yy53; + YYDEBUG(70, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy71; + if (yych != 'd') goto yy53; yy71: - YYDEBUG(71, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy72; - if(yych != 'a') goto yy53; + YYDEBUG(71, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy72; + if (yych != 'a') goto yy53; yy72: - YYDEBUG(72, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych != 'y') goto yy53; + YYDEBUG(72, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych != 'y') goto yy53; yy73: - YYDEBUG(73, *YYCURSOR); - yych = *++YYCURSOR; - goto yy69; + YYDEBUG(73, *YYCURSOR); + yych = *++YYCURSOR; + goto yy69; yy74: - YYDEBUG(74, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy75; - if(yych != 'r') goto yy69; + YYDEBUG(74, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy75; + if (yych != 'r') goto yy69; yy75: - YYDEBUG(75, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy76; - if(yych != 's') goto yy53; + YYDEBUG(75, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy76; + if (yych != 's') goto yy53; yy76: - YYDEBUG(76, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy77; - if(yych != 'd') goto yy53; + YYDEBUG(76, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy77; + if (yych != 'd') goto yy53; yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy78; - if(yych != 'a') goto yy53; + YYDEBUG(77, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy78; + if (yych != 'a') goto yy53; yy78: - YYDEBUG(78, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(78, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy79: - YYDEBUG(79, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy80; - if(yych != 'a') goto yy53; + YYDEBUG(79, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy80; + if (yych != 'a') goto yy53; yy80: - YYDEBUG(80, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy81; - if(yych != 'r') goto yy53; + YYDEBUG(80, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy81; + if (yych != 'r') goto yy53; yy81: - YYDEBUG(81, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy73; - if(yych == 's') goto yy73; - goto yy69; + YYDEBUG(81, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy73; + if (yych == 's') goto yy73; + goto yy69; yy82: - YYDEBUG(82, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy95; - if(yych == 'i') goto yy95; - goto yy53; + YYDEBUG(82, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy95; + if (yych == 'i') goto yy95; + goto yy53; yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy84; - if(yych != 'r') goto yy53; + YYDEBUG(83, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy84; + if (yych != 'r') goto yy53; yy84: - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy85; - if(yych != 't') goto yy53; + YYDEBUG(84, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy85; + if (yych != 't') goto yy53; yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'H') goto yy87; - if(yych <= 'M') goto yy53; + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'H') goto yy87; + if (yych <= 'M') goto yy53; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy87; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy87; - } else { - if(yych != 'n') goto yy53; - } + if (yych != 'n') goto yy53; } - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy92; - if(yych == 'i') goto yy92; - goto yy53; + } + YYDEBUG(86, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy92; + if (yych == 'i') goto yy92; + goto yy53; yy87: - YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy88; - if(yych != 'n') goto yy53; + YYDEBUG(87, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy88; + if (yych != 'n') goto yy53; yy88: - YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy89; - if(yych != 'i') goto yy53; + YYDEBUG(88, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy89; + if (yych != 'i') goto yy53; yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy90; - if(yych != 'g') goto yy53; + YYDEBUG(89, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy90; + if (yych != 'g') goto yy53; yy90: - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy91; - if(yych != 'h') goto yy53; + YYDEBUG(90, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy91; + if (yych != 'h') goto yy53; yy91: - YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy81; - if(yych == 't') goto yy81; - goto yy53; + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy81; + if (yych == 't') goto yy81; + goto yy53; yy92: - YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy93; - if(yych != 'g') goto yy53; + YYDEBUG(92, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy93; + if (yych != 'g') goto yy53; yy93: - YYDEBUG(93, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy94; - if(yych != 'h') goto yy53; + YYDEBUG(93, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy94; + if (yych != 'h') goto yy53; yy94: - YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy81; - if(yych == 't') goto yy81; - goto yy53; + YYDEBUG(94, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy81; + if (yych == 't') goto yy81; + goto yy53; yy95: - YYDEBUG(95, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy96; - if(yych != 'd') goto yy69; + YYDEBUG(95, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy96; + if (yych != 'd') goto yy69; yy96: - YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy97; - if(yych != 'a') goto yy53; + YYDEBUG(96, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy97; + if (yych != 'a') goto yy53; yy97: - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(97, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy98: - YYDEBUG(98, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= 'C') goto yy53; - if(yych <= 'D') goto yy100; - } else { - if(yych <= 'c') goto yy53; - if(yych <= 'd') goto yy100; - if(yych >= 'f') goto yy53; - } - YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'K') goto yy106; - if(yych == 'k') goto yy106; - goto yy53; + YYDEBUG(98, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= 'C') goto yy53; + if (yych <= 'D') goto yy100; + } else { + if (yych <= 'c') goto yy53; + if (yych <= 'd') goto yy100; + if (yych >= 'f') goto yy53; + } + YYDEBUG(99, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy106; + if (yych == 'k') goto yy106; + goto yy53; yy100: - YYDEBUG(100, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'N') goto yy101; - if(yych != 'n') goto yy69; + YYDEBUG(100, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'N') goto yy101; + if (yych != 'n') goto yy69; yy101: - YYDEBUG(101, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy102; - if(yych != 'e') goto yy53; + YYDEBUG(101, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy102; + if (yych != 'e') goto yy53; yy102: - YYDEBUG(102, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy103; - if(yych != 's') goto yy53; + YYDEBUG(102, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy103; + if (yych != 's') goto yy53; yy103: - YYDEBUG(103, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy104; - if(yych != 'd') goto yy53; + YYDEBUG(103, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy104; + if (yych != 'd') goto yy53; yy104: - YYDEBUG(104, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy105; - if(yych != 'a') goto yy53; + YYDEBUG(104, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy105; + if (yych != 'a') goto yy53; yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy106: - YYDEBUG(106, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'D') goto yy107; - if(yych <= 'R') goto yy69; - goto yy73; + YYDEBUG(106, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'D') goto yy107; + if (yych <= 'R') goto yy69; + goto yy73; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy69; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy69; - } else { - if(yych == 's') goto yy73; - goto yy69; - } + if (yych == 's') goto yy73; + goto yy69; } + } yy107: - YYDEBUG(107, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy108; - if(yych != 'a') goto yy53; + YYDEBUG(107, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy108; + if (yych != 'a') goto yy53; yy108: - YYDEBUG(108, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy109; - if(yych != 'y') goto yy53; + YYDEBUG(108, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy109; + if (yych != 'y') goto yy53; yy109: - YYDEBUG(109, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy73; - if(yych == 's') goto yy73; - goto yy69; + YYDEBUG(109, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy73; + if (yych == 's') goto yy73; + goto yy69; yy110: - YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy81; - if(yych == 'y') goto yy81; - goto yy53; + YYDEBUG(110, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy81; + if (yych == 'y') goto yy81; + goto yy53; yy111: - YYDEBUG(111, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy112; - if(yych != 'u') goto yy53; + YYDEBUG(111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy112; + if (yych != 'u') goto yy53; yy112: - YYDEBUG(112, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy81; - if(yych == 'r') goto yy81; - goto yy53; + YYDEBUG(112, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy81; + if (yych == 'r') goto yy81; + goto yy53; yy113: - YYDEBUG(113, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy118; - if(yych == 'n') goto yy118; - goto yy53; + YYDEBUG(113, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy118; + if (yych == 'n') goto yy118; + goto yy53; yy114: - YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy115; - if(yych != 'n') goto yy53; + YYDEBUG(114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy115; + if (yych != 'n') goto yy53; yy115: - YYDEBUG(115, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych == 'S') goto yy73; - if(yych <= 'T') goto yy69; + YYDEBUG(115, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych == 'S') goto yy73; + if (yych <= 'T') goto yy69; + } else { + if (yych <= 's') { + if (yych <= 'r') goto yy69; + goto yy73; } else { - if(yych <= 's') { - if(yych <= 'r') goto yy69; - goto yy73; - } else { - if(yych != 'u') goto yy69; - } + if (yych != 'u') goto yy69; } - YYDEBUG(116, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy117; - if(yych != 't') goto yy53; + } + YYDEBUG(116, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy117; + if (yych != 't') goto yy53; yy117: - YYDEBUG(117, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy81; - if(yych == 'e') goto yy81; - goto yy53; + YYDEBUG(117, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy81; + if (yych == 'e') goto yy81; + goto yy53; yy118: - YYDEBUG(118, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == 'D') goto yy119; - if(yych <= 'S') goto yy69; - goto yy120; + YYDEBUG(118, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == 'D') goto yy119; + if (yych <= 'S') goto yy69; + goto yy120; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy69; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy69; - } else { - if(yych == 't') goto yy120; - goto yy69; - } + if (yych == 't') goto yy120; + goto yy69; } + } yy119: - YYDEBUG(119, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy121; - if(yych == 'a') goto yy121; - goto yy53; + YYDEBUG(119, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy121; + if (yych == 'a') goto yy121; + goto yy53; yy120: - YYDEBUG(120, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy81; - if(yych == 'h') goto yy81; - goto yy53; + YYDEBUG(120, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy81; + if (yych == 'h') goto yy81; + goto yy53; yy121: - YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(121, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy122: - YYDEBUG(122, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy133; - if(yych == 'n') goto yy133; - goto yy53; + YYDEBUG(122, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy133; + if (yych == 'n') goto yy133; + goto yy53; yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy128; - if(yych == 't') goto yy128; - goto yy53; + YYDEBUG(123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy128; + if (yych == 't') goto yy128; + goto yy53; yy124: - YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy125; - if(yych != 'c') goto yy53; + YYDEBUG(124, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy125; + if (yych != 'c') goto yy53; yy125: - YYDEBUG(125, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'O') goto yy126; - if(yych <= 'R') goto yy69; - goto yy73; + YYDEBUG(125, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'O') goto yy126; + if (yych <= 'R') goto yy69; + goto yy73; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy69; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy69; - } else { - if(yych == 's') goto yy73; - goto yy69; - } + if (yych == 's') goto yy73; + goto yy69; } + } yy126: - YYDEBUG(126, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy127; - if(yych != 'n') goto yy53; + YYDEBUG(126, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy127; + if (yych != 'n') goto yy53; yy127: - YYDEBUG(127, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy81; - if(yych == 'd') goto yy81; - goto yy53; + YYDEBUG(127, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy81; + if (yych == 'd') goto yy81; + goto yy53; yy128: - YYDEBUG(128, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy129; - if(yych != 'u') goto yy69; + YYDEBUG(128, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy129; + if (yych != 'u') goto yy69; yy129: - YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy130; - if(yych != 'r') goto yy53; + YYDEBUG(129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy130; + if (yych != 'r') goto yy53; yy130: - YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy131; - if(yych != 'd') goto yy53; + YYDEBUG(130, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy131; + if (yych != 'd') goto yy53; yy131: - YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy132; - if(yych != 'a') goto yy53; + YYDEBUG(131, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy132; + if (yych != 'a') goto yy53; yy132: - YYDEBUG(132, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy133: - YYDEBUG(133, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy134; - if(yych != 'd') goto yy69; + YYDEBUG(133, *YYCURSOR); + yyaccept = 3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy134; + if (yych != 'd') goto yy69; yy134: - YYDEBUG(134, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy135; - if(yych != 'a') goto yy53; + YYDEBUG(134, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy135; + if (yych != 'a') goto yy53; yy135: - YYDEBUG(135, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy73; - if(yych == 'y') goto yy73; - goto yy53; + YYDEBUG(135, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy73; + if (yych == 'y') goto yy73; + goto yy53; yy136: - YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - goto yy3; + YYDEBUG(136, *YYCURSOR); + yych = *++YYCURSOR; + goto yy3; yy137: - YYDEBUG(137, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(138, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy139: - YYDEBUG(139, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + YYDEBUG(139, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy140: - YYDEBUG(140, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } -yy141: - YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy136; + YYDEBUG(140, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; goto yy3; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } +yy141: + YYDEBUG(141, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy136; + goto yy3; yy142: - YYDEBUG(142, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(142, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy138; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy138; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy143: - YYDEBUG(143, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych != '/') goto yy3; - } + YYDEBUG(143, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy3; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych != '/') goto yy3; } -yy144: - YYDEBUG(144, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '@') goto yy53; - if(yych >= '[') goto yy53; - YYDEBUG(145, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 16) { - goto yy146; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy3; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy148; + goto yy3; } - goto yy53; + } +yy144: + YYDEBUG(144, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy53; + if (yych >= '[') goto yy53; + YYDEBUG(145, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy146; + } + goto yy53; yy146: - YYDEBUG(146, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(147, *YYCURSOR); - if(yybm[0+yych] & 16) { - goto yy146; - } - if(yych == '/') goto yy144; - if(yych == '_') goto yy144; - goto yy3; + YYDEBUG(146, *YYCURSOR); + yyaccept = 0; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(147, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy146; + } + if (yych == '/') goto yy144; + if (yych == '_') goto yy144; + goto yy3; yy148: - YYDEBUG(148, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(148, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy149: - YYDEBUG(149, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } + YYDEBUG(149, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy3; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy150: - YYDEBUG(150, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; + YYDEBUG(150, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy3; goto yy144; } else { - if(yych <= '_') { - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych >= '{') goto yy3; - } + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } + } yy151: - YYDEBUG(151, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + YYDEBUG(151, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy152: - YYDEBUG(152, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy53; + YYDEBUG(152, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy53; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy151; + goto yy53; + } +yy153: + YYDEBUG(153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Z') goto yy137; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy137; + goto yy3; + } +yy154: + YYDEBUG(154, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy151; - goto yy53; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; } -yy153: - YYDEBUG(153, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'Z') goto yy137; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy137; + if (yych <= 'e') goto yy155; + if (yych <= 'z') goto yy138; goto yy3; } -yy154: - YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - } + } +yy155: + YYDEBUG(155, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy155; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; } -yy155: - YYDEBUG(155, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - } + } else { + if (yych <= 'u') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'u') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'v') goto yy156; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'v') goto yy156; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy156: - YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - } + YYDEBUG(156, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'i') goto yy157; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'i') goto yy157; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy141; - } + YYDEBUG(157, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'o') goto yy158; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy141; } -yy158: - YYDEBUG(158, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'U') goto yy159; - if(yych != 'u') goto yy3; + if (yych <= 'o') goto yy158; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy158: + YYDEBUG(158, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'U') goto yy159; + if (yych != 'u') goto yy3; + } yy159: - YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy160; - if(yych != 's') goto yy53; + YYDEBUG(159, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy160; + if (yych != 's') goto yy53; yy160: - YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 0x09) goto yy161; - if(yych != ' ') goto yy53; + YYDEBUG(160, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\t') goto yy161; + if (yych != ' ') goto yy53; yy161: - YYDEBUG(161, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; - YYDEBUG(162, *YYCURSOR); - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy161; - if(yych <= 0x1F) goto yy53; - goto yy161; - } else { - if(yych == 'D') goto yy166; - if(yych <= 'E') goto yy53; - goto yy168; - } + YYDEBUG(161, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; + YYDEBUG(162, *YYCURSOR); + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy161; + if (yych <= 0x1F) goto yy53; + goto yy161; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy165; - if(yych <= 'L') goto yy53; - goto yy164; - } else { - if(yych <= 'S') { - if(yych <= 'R') goto yy53; - } else { - if(yych <= 'T') goto yy170; - if(yych <= 'V') goto yy53; - goto yy167; - } - } + if (yych == 'D') goto yy166; + if (yych <= 'E') goto yy53; + goto yy168; } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy169; - if(yych <= 'c') goto yy53; - goto yy166; - } else { - if(yych <= 'f') { - if(yych <= 'e') goto yy53; - goto yy168; - } else { - if(yych == 'h') goto yy165; - goto yy53; - } - } + if (yych <= 'M') { + if (yych == 'H') goto yy165; + if (yych <= 'L') goto yy53; + goto yy164; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy164; - if(yych <= 'r') goto yy53; - if(yych >= 't') goto yy170; + if (yych <= 'S') { + if (yych <= 'R') goto yy53; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy53; - goto yy167; - } else { - if(yych == 'y') goto yy169; - goto yy53; - } + if (yych <= 'T') goto yy170; + if (yych <= 'V') goto yy53; + goto yy167; } } } - YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy228; - goto yy53; - } else { - if(yych <= 'E') goto yy229; - if(yych <= 'T') goto yy53; - goto yy227; + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy169; + if (yych <= 'c') goto yy53; + goto yy166; + } else { + if (yych <= 'f') { + if (yych <= 'e') goto yy53; + goto yy168; + } else { + if (yych == 'h') goto yy165; + goto yy53; + } } } else { - if(yych <= 'd') { - if(yych == 'a') goto yy228; - goto yy53; + if (yych <= 't') { + if (yych <= 'm') goto yy164; + if (yych <= 'r') goto yy53; + if (yych >= 't') goto yy170; } else { - if(yych <= 'e') goto yy229; - if(yych == 'u') goto yy227; - goto yy53; + if (yych <= 'w') { + if (yych <= 'v') goto yy53; + goto yy167; + } else { + if (yych == 'y') goto yy169; + goto yy53; + } } } + } + YYDEBUG(163, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy228; + goto yy53; + } else { + if (yych <= 'E') goto yy229; + if (yych <= 'T') goto yy53; + goto yy227; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy228; + goto yy53; + } else { + if (yych <= 'e') goto yy229; + if (yych == 'u') goto yy227; + goto yy53; + } + } yy164: - YYDEBUG(164, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych == 'I') goto yy219; - if(yych <= 'N') goto yy53; - goto yy218; - } else { - if(yych <= 'i') { - if(yych <= 'h') goto yy53; - goto yy219; - } else { - if(yych == 'o') goto yy218; - goto yy53; - } + YYDEBUG(164, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy219; + if (yych <= 'N') goto yy53; + goto yy218; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy53; + goto yy219; + } else { + if (yych == 'o') goto yy218; + goto yy53; } + } yy165: - YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy216; - if(yych == 'o') goto yy216; - goto yy53; + YYDEBUG(165, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy216; + if (yych == 'o') goto yy216; + goto yy53; yy166: - YYDEBUG(166, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy215; - if(yych == 'a') goto yy215; - goto yy53; + YYDEBUG(166, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy215; + if (yych == 'a') goto yy215; + goto yy53; yy167: - YYDEBUG(167, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy203; - if(yych == 'e') goto yy203; - goto yy53; + YYDEBUG(167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy203; + if (yych == 'e') goto yy203; + goto yy53; yy168: - YYDEBUG(168, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych == 'O') goto yy188; - if(yych <= 'Q') goto yy53; - goto yy187; - } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy53; - goto yy188; - } else { - if(yych == 'r') goto yy187; - goto yy53; - } + YYDEBUG(168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'O') goto yy188; + if (yych <= 'Q') goto yy53; + goto yy187; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy53; + goto yy188; + } else { + if (yych == 'r') goto yy187; + goto yy53; } + } yy169: - YYDEBUG(169, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy184; - if(yych == 'e') goto yy184; - goto yy53; + YYDEBUG(169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy184; + if (yych == 'e') goto yy184; + goto yy53; yy170: - YYDEBUG(170, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy171; - if(yych <= 'T') goto yy53; - goto yy172; + YYDEBUG(170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy171; + if (yych <= 'T') goto yy53; + goto yy172; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - } else { - if(yych == 'u') goto yy172; - goto yy53; - } + if (yych == 'u') goto yy172; + goto yy53; } + } yy171: - YYDEBUG(171, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy179; - if(yych == 'u') goto yy179; - goto yy53; + YYDEBUG(171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy179; + if (yych == 'u') goto yy179; + goto yy53; yy172: - YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy173; - if(yych != 'e') goto yy53; + YYDEBUG(172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy173; + if (yych != 'e') goto yy53; yy173: - YYDEBUG(173, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'S') goto yy175; - if(yych == 's') goto yy175; + YYDEBUG(173, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'S') goto yy175; + if (yych == 's') goto yy175; yy174: - YYDEBUG(174, *YYCURSOR); -#line 1416 "ext/date/lib/parse_date.re" - { + YYDEBUG(174, *YYCURSOR); +#line 1419 "ext/date/lib/parse_date.re" + { timelib_sll i; int behavior = 0; DEBUG_OUTPUT("relativetext"); @@ -3588,1183 +3587,1183 @@ yy174: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 3592 "ext/date/lib/parse_date.c" +#line 3591 "ext/date/lib/parse_date.c" yy175: - YYDEBUG(175, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy176; - if(yych != 'd') goto yy53; + YYDEBUG(175, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy176; + if (yych != 'd') goto yy53; yy176: - YYDEBUG(176, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy177; - if(yych != 'a') goto yy53; + YYDEBUG(176, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy177; + if (yych != 'a') goto yy53; yy177: - YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych != 'y') goto yy53; + YYDEBUG(177, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych != 'y') goto yy53; yy178: - YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - goto yy174; + YYDEBUG(178, *YYCURSOR); + yych = *++YYCURSOR; + goto yy174; yy179: - YYDEBUG(179, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy180; - if(yych != 'r') goto yy174; + YYDEBUG(179, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy180; + if (yych != 'r') goto yy174; yy180: - YYDEBUG(180, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy181; - if(yych != 's') goto yy53; + YYDEBUG(180, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy181; + if (yych != 's') goto yy53; yy181: - YYDEBUG(181, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy182; - if(yych != 'd') goto yy53; + YYDEBUG(181, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy182; + if (yych != 'd') goto yy53; yy182: - YYDEBUG(182, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy183; - if(yych != 'a') goto yy53; + YYDEBUG(182, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy183; + if (yych != 'a') goto yy53; yy183: - YYDEBUG(183, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(183, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy184: - YYDEBUG(184, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy185; - if(yych != 'a') goto yy53; + YYDEBUG(184, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy185; + if (yych != 'a') goto yy53; yy185: - YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy186; - if(yych != 'r') goto yy53; + YYDEBUG(185, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy186; + if (yych != 'r') goto yy53; yy186: - YYDEBUG(186, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy178; - if(yych == 's') goto yy178; - goto yy174; + YYDEBUG(186, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy178; + if (yych == 's') goto yy178; + goto yy174; yy187: - YYDEBUG(187, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy200; - if(yych == 'i') goto yy200; - goto yy53; + YYDEBUG(187, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy200; + if (yych == 'i') goto yy200; + goto yy53; yy188: - YYDEBUG(188, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy189; - if(yych != 'r') goto yy53; + YYDEBUG(188, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy189; + if (yych != 'r') goto yy53; yy189: - YYDEBUG(189, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy190; - if(yych != 't') goto yy53; + YYDEBUG(189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy190; + if (yych != 't') goto yy53; yy190: - YYDEBUG(190, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'H') goto yy192; - if(yych <= 'M') goto yy53; + YYDEBUG(190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'H') goto yy192; + if (yych <= 'M') goto yy53; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy192; } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy192; - } else { - if(yych != 'n') goto yy53; - } + if (yych != 'n') goto yy53; } - YYDEBUG(191, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy197; - if(yych == 'i') goto yy197; - goto yy53; + } + YYDEBUG(191, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy197; + if (yych == 'i') goto yy197; + goto yy53; yy192: - YYDEBUG(192, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy193; - if(yych != 'n') goto yy53; + YYDEBUG(192, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy193; + if (yych != 'n') goto yy53; yy193: - YYDEBUG(193, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy194; - if(yych != 'i') goto yy53; + YYDEBUG(193, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy194; + if (yych != 'i') goto yy53; yy194: - YYDEBUG(194, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy195; - if(yych != 'g') goto yy53; + YYDEBUG(194, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy195; + if (yych != 'g') goto yy53; yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy196; - if(yych != 'h') goto yy53; + YYDEBUG(195, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy196; + if (yych != 'h') goto yy53; yy196: - YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy186; - if(yych == 't') goto yy186; - goto yy53; + YYDEBUG(196, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy186; + if (yych == 't') goto yy186; + goto yy53; yy197: - YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy198; - if(yych != 'g') goto yy53; + YYDEBUG(197, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy198; + if (yych != 'g') goto yy53; yy198: - YYDEBUG(198, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy199; - if(yych != 'h') goto yy53; + YYDEBUG(198, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy199; + if (yych != 'h') goto yy53; yy199: - YYDEBUG(199, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy186; - if(yych == 't') goto yy186; - goto yy53; + YYDEBUG(199, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy186; + if (yych == 't') goto yy186; + goto yy53; yy200: - YYDEBUG(200, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy201; - if(yych != 'd') goto yy174; + YYDEBUG(200, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy201; + if (yych != 'd') goto yy174; yy201: - YYDEBUG(201, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy202; - if(yych != 'a') goto yy53; + YYDEBUG(201, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy202; + if (yych != 'a') goto yy53; yy202: - YYDEBUG(202, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(202, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy203: - YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= 'C') goto yy53; - if(yych <= 'D') goto yy205; - } else { - if(yych <= 'c') goto yy53; - if(yych <= 'd') goto yy205; - if(yych >= 'f') goto yy53; - } - YYDEBUG(204, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'K') goto yy211; - if(yych == 'k') goto yy211; - goto yy53; + YYDEBUG(203, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= 'C') goto yy53; + if (yych <= 'D') goto yy205; + } else { + if (yych <= 'c') goto yy53; + if (yych <= 'd') goto yy205; + if (yych >= 'f') goto yy53; + } + YYDEBUG(204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy211; + if (yych == 'k') goto yy211; + goto yy53; yy205: - YYDEBUG(205, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'N') goto yy206; - if(yych != 'n') goto yy174; + YYDEBUG(205, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'N') goto yy206; + if (yych != 'n') goto yy174; yy206: - YYDEBUG(206, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy207; - if(yych != 'e') goto yy53; + YYDEBUG(206, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy207; + if (yych != 'e') goto yy53; yy207: - YYDEBUG(207, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy208; - if(yych != 's') goto yy53; + YYDEBUG(207, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy208; + if (yych != 's') goto yy53; yy208: - YYDEBUG(208, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy209; - if(yych != 'd') goto yy53; + YYDEBUG(208, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy209; + if (yych != 'd') goto yy53; yy209: - YYDEBUG(209, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy210; - if(yych != 'a') goto yy53; + YYDEBUG(209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy210; + if (yych != 'a') goto yy53; yy210: - YYDEBUG(210, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(210, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy211: - YYDEBUG(211, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'D') goto yy212; - if(yych <= 'R') goto yy174; - goto yy178; + YYDEBUG(211, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'D') goto yy212; + if (yych <= 'R') goto yy174; + goto yy178; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy174; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy174; - } else { - if(yych == 's') goto yy178; - goto yy174; - } + if (yych == 's') goto yy178; + goto yy174; } + } yy212: - YYDEBUG(212, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy213; - if(yych != 'a') goto yy53; + YYDEBUG(212, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy213; + if (yych != 'a') goto yy53; yy213: - YYDEBUG(213, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy214; - if(yych != 'y') goto yy53; + YYDEBUG(213, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy214; + if (yych != 'y') goto yy53; yy214: - YYDEBUG(214, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy178; - if(yych == 's') goto yy178; - goto yy174; + YYDEBUG(214, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy178; + if (yych == 's') goto yy178; + goto yy174; yy215: - YYDEBUG(215, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy186; - if(yych == 'y') goto yy186; - goto yy53; + YYDEBUG(215, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy186; + if (yych == 'y') goto yy186; + goto yy53; yy216: - YYDEBUG(216, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy217; - if(yych != 'u') goto yy53; + YYDEBUG(216, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy217; + if (yych != 'u') goto yy53; yy217: - YYDEBUG(217, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy186; - if(yych == 'r') goto yy186; - goto yy53; + YYDEBUG(217, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy186; + if (yych == 'r') goto yy186; + goto yy53; yy218: - YYDEBUG(218, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy223; - if(yych == 'n') goto yy223; - goto yy53; + YYDEBUG(218, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy223; + if (yych == 'n') goto yy223; + goto yy53; yy219: - YYDEBUG(219, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy220; - if(yych != 'n') goto yy53; + YYDEBUG(219, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy220; + if (yych != 'n') goto yy53; yy220: - YYDEBUG(220, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych == 'S') goto yy178; - if(yych <= 'T') goto yy174; + YYDEBUG(220, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych == 'S') goto yy178; + if (yych <= 'T') goto yy174; + } else { + if (yych <= 's') { + if (yych <= 'r') goto yy174; + goto yy178; } else { - if(yych <= 's') { - if(yych <= 'r') goto yy174; - goto yy178; - } else { - if(yych != 'u') goto yy174; - } + if (yych != 'u') goto yy174; } - YYDEBUG(221, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy222; - if(yych != 't') goto yy53; + } + YYDEBUG(221, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy222; + if (yych != 't') goto yy53; yy222: - YYDEBUG(222, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy186; - if(yych == 'e') goto yy186; - goto yy53; + YYDEBUG(222, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy186; + if (yych == 'e') goto yy186; + goto yy53; yy223: - YYDEBUG(223, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == 'D') goto yy224; - if(yych <= 'S') goto yy174; - goto yy225; + YYDEBUG(223, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == 'D') goto yy224; + if (yych <= 'S') goto yy174; + goto yy225; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy174; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy174; - } else { - if(yych == 't') goto yy225; - goto yy174; - } + if (yych == 't') goto yy225; + goto yy174; } + } yy224: - YYDEBUG(224, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy226; - if(yych == 'a') goto yy226; - goto yy53; + YYDEBUG(224, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy226; + if (yych == 'a') goto yy226; + goto yy53; yy225: - YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy186; - if(yych == 'h') goto yy186; - goto yy53; + YYDEBUG(225, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy186; + if (yych == 'h') goto yy186; + goto yy53; yy226: - YYDEBUG(226, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(226, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy227: - YYDEBUG(227, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy238; - if(yych == 'n') goto yy238; - goto yy53; + YYDEBUG(227, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy238; + if (yych == 'n') goto yy238; + goto yy53; yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy233; - if(yych == 't') goto yy233; - goto yy53; + YYDEBUG(228, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy233; + if (yych == 't') goto yy233; + goto yy53; yy229: - YYDEBUG(229, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy230; - if(yych != 'c') goto yy53; + YYDEBUG(229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy230; + if (yych != 'c') goto yy53; yy230: - YYDEBUG(230, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == 'O') goto yy231; - if(yych <= 'R') goto yy174; - goto yy178; + YYDEBUG(230, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == 'O') goto yy231; + if (yych <= 'R') goto yy174; + goto yy178; + } else { + if (yych <= 'o') { + if (yych <= 'n') goto yy174; } else { - if(yych <= 'o') { - if(yych <= 'n') goto yy174; - } else { - if(yych == 's') goto yy178; - goto yy174; - } + if (yych == 's') goto yy178; + goto yy174; } + } yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy232; - if(yych != 'n') goto yy53; + YYDEBUG(231, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy232; + if (yych != 'n') goto yy53; yy232: - YYDEBUG(232, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy186; - if(yych == 'd') goto yy186; - goto yy53; + YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy186; + if (yych == 'd') goto yy186; + goto yy53; yy233: - YYDEBUG(233, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy234; - if(yych != 'u') goto yy174; + YYDEBUG(233, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy234; + if (yych != 'u') goto yy174; yy234: - YYDEBUG(234, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy235; - if(yych != 'r') goto yy53; + YYDEBUG(234, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy235; + if (yych != 'r') goto yy53; yy235: - YYDEBUG(235, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'D') goto yy236; - if(yych != 'd') goto yy53; + YYDEBUG(235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy236; + if (yych != 'd') goto yy53; yy236: - YYDEBUG(236, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy237; - if(yych != 'a') goto yy53; + YYDEBUG(236, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy237; + if (yych != 'a') goto yy53; yy237: - YYDEBUG(237, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(237, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy238: - YYDEBUG(238, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'D') goto yy239; - if(yych != 'd') goto yy174; + YYDEBUG(238, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy239; + if (yych != 'd') goto yy174; yy239: - YYDEBUG(239, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy240; - if(yych != 'a') goto yy53; + YYDEBUG(239, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy240; + if (yych != 'a') goto yy53; yy240: - YYDEBUG(240, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy178; - if(yych == 'y') goto yy178; - goto yy53; + YYDEBUG(240, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy178; + if (yych == 'y') goto yy178; + goto yy53; yy241: - YYDEBUG(241, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy155; - } + YYDEBUG(241, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy242; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy155; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy242; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy242: - YYDEBUG(242, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - goto yy156; - } + YYDEBUG(242, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'v') goto yy243; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; + goto yy156; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'v') goto yy243; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy243: - YYDEBUG(243, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - goto yy157; - } + YYDEBUG(243, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy244; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + goto yy157; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy244; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy244: - YYDEBUG(244, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy141; - goto yy158; - } + YYDEBUG(244, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy245; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy141; + goto yy158; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy245; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy245: - YYDEBUG(245, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'T') goto yy3; - goto yy159; - } + YYDEBUG(245, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy246; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'T') goto yy3; + goto yy159; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy246; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy246: - YYDEBUG(246, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy160; - if(yych != 's') goto yy152; + YYDEBUG(246, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy160; + if (yych != 's') goto yy152; yy247: - YYDEBUG(247, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy53; - } + YYDEBUG(247, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy53; + } + } else { + if (yych <= '_') { + if (yych <= '/') goto yy144; + if (yych <= '^') goto yy53; + goto yy144; } else { - if(yych <= '_') { - if(yych <= '/') goto yy144; - if(yych <= '^') goto yy53; - goto yy144; - } else { - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy151; - goto yy53; - } + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy151; + goto yy53; } + } yy248: - YYDEBUG(248, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - } + YYDEBUG(248, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 's') goto yy249; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 's') goto yy249; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy249: - YYDEBUG(249, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(249, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy250; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy250: - YYDEBUG(250, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy3; - } + YYDEBUG(250, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy3; + } + } else { + if (yych <= 'Z') { + if (yych <= ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy140; } else { - if(yych <= 'Z') { - if(yych <= ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy140; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy251: - YYDEBUG(251, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - goto yy249; - } + YYDEBUG(251, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy252; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + goto yy249; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy252; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy252: - YYDEBUG(252, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + YYDEBUG(252, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy253; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy253: - YYDEBUG(253, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; - } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; - goto yy3; - } + YYDEBUG(253, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy140; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy254: - YYDEBUG(254, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy261; - } + YYDEBUG(254, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'g') goto yy261; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy261; } -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy256; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'g') goto yy261; + if (yych <= 'z') goto yy138; + goto yy3; } -yy256: - YYDEBUG(256, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - } + } +yy255: + YYDEBUG(255, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'u') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'v') goto yy257; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; } -yy257: - YYDEBUG(257, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy258; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'e') goto yy256; + if (yych <= 'z') goto yy138; + goto yy3; } -yy258: - YYDEBUG(258, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy141; - } + } +yy256: + YYDEBUG(256, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'n') goto yy259; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; } -yy259: - YYDEBUG(259, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'u') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'v') goto yy257; + if (yych <= 'z') goto yy139; goto yy3; + } + } +yy257: + YYDEBUG(257, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'T') goto yy260; - if(yych != 't') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; } -yy260: - YYDEBUG(260, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy160; - if(yych == 'h') goto yy160; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'e') goto yy258; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy258: + YYDEBUG(258, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'n') goto yy259; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy259: + YYDEBUG(259, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'T') goto yy260; + if (yych != 't') goto yy3; + } +yy260: + YYDEBUG(260, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy53; yy261: - YYDEBUG(261, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy139; - } + YYDEBUG(261, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'h') goto yy262; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy139; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'h') goto yy262; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy262: - YYDEBUG(262, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - } + YYDEBUG(262, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 't') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy263: - YYDEBUG(263, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy3; - goto yy161; - } else { - if(yych == ' ') goto yy161; - goto yy3; - } + YYDEBUG(263, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy3; + goto yy161; + } else { + if (yych == ' ') goto yy161; + goto yy3; + } + } else { + if (yych <= 'Z') { + if (yych <= ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy141; } else { - if(yych <= 'Z') { - if(yych <= ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy141; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy264: - YYDEBUG(264, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy261; - } + YYDEBUG(264, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy271; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy261; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy271; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy265: - YYDEBUG(265, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy256; - } + YYDEBUG(265, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy266; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy256; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy266; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy266: - YYDEBUG(266, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'U') goto yy139; - goto yy257; - } + YYDEBUG(266, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'v') goto yy267; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy139; + goto yy257; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'v') goto yy267; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy267: - YYDEBUG(267, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy258; - } + YYDEBUG(267, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy268; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy258; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy268; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy268: - YYDEBUG(268, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy141; - goto yy259; - } + YYDEBUG(268, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy269; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; + goto yy259; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy269; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy269: - YYDEBUG(269, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'S') goto yy3; - goto yy260; - } + YYDEBUG(269, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy270; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'S') goto yy3; + goto yy260; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy270; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy270: - YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy160; - if(yych == 'h') goto yy247; - goto yy152; + YYDEBUG(270, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy160; + if (yych == 'h') goto yy247; + goto yy152; yy271: - YYDEBUG(271, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy139; - goto yy262; - } + YYDEBUG(271, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy272; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy139; + goto yy262; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy272; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy272: - YYDEBUG(272, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; - } + YYDEBUG(272, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy273: - YYDEBUG(273, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; - } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; - goto yy3; - } + YYDEBUG(273, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy141; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy274: - YYDEBUG(274, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'C') goto yy138; - if(yych >= 'E') goto yy277; - } + YYDEBUG(274, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'd') goto yy275; - if(yych <= 'e') goto yy277; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'C') goto yy138; + if (yych >= 'E') goto yy277; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'd') goto yy275; + if (yych <= 'e') goto yy277; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy275: - YYDEBUG(275, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'N') { - if(yych <= ')') { - if(yych >= ')') goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'M') goto yy139; - goto yy283; - } + YYDEBUG(275, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'N') { + if (yych <= ')') { + if (yych >= ')') goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych >= 'a') goto yy139; - } else { - if(yych <= 'n') goto yy283; - if(yych <= 'z') goto yy139; - } + if (yych <= '@') goto yy276; + if (yych <= 'M') goto yy139; + goto yy283; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych >= 'a') goto yy139; + } else { + if (yych <= 'n') goto yy283; + if (yych <= 'z') goto yy139; } + } yy276: - YYDEBUG(276, *YYCURSOR); -#line 1400 "ext/date/lib/parse_date.re" - { + YYDEBUG(276, *YYCURSOR); +#line 1401 "ext/date/lib/parse_date.re" + { const timelib_relunit* relunit; DEBUG_OUTPUT("daytext"); TIMELIB_INIT; @@ -4773,490 +4772,492 @@ yy276: TIMELIB_UNHAVE_TIME(); relunit = timelib_lookup_relunit((char**) &ptr); s->time->relative.weekday = relunit->multiplier; - s->time->relative.weekday_behavior = 1; + if (s->time->relative.weekday_behavior != 2) { + s->time->relative.weekday_behavior = 1; + } TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } -#line 4782 "ext/date/lib/parse_date.c" +#line 4783 "ext/date/lib/parse_date.c" yy277: - YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'K') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'J') goto yy139; - } + YYDEBUG(277, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'K') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'j') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'k') goto yy278; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy139; + } + } else { + if (yych <= 'j') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'k') goto yy278; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy278: - YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - } + YYDEBUG(278, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy279; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; } -yy279: - YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy280; - if(yych <= 'z') goto yy141; - goto yy3; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'd') goto yy279; + if (yych <= 'z') goto yy140; + goto yy3; } -yy280: - YYDEBUG(280, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; + } +yy279: + YYDEBUG(279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; goto yy3; } else { - if(yych <= 'Y') goto yy281; - if(yych != 'y') goto yy3; + if (yych <= 'a') goto yy280; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy280: + YYDEBUG(280, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy281; + if (yych != 'y') goto yy3; + } yy281: - YYDEBUG(281, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy282; - if(yych != 's') goto yy276; + YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy282; + if (yych != 's') goto yy276; yy282: - YYDEBUG(282, *YYCURSOR); - yych = *++YYCURSOR; - goto yy276; + YYDEBUG(282, *YYCURSOR); + yych = *++YYCURSOR; + goto yy276; yy283: - YYDEBUG(283, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + YYDEBUG(283, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy284; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; } -yy284: - YYDEBUG(284, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy141; - } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 's') goto yy285; - if(yych <= 'z') goto yy141; - goto yy3; - } - } -yy285: - YYDEBUG(285, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych == ')') goto yy136; + if (yych <= 'e') goto yy284; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy284: + YYDEBUG(284, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'D') goto yy286; - if(yych != 'd') goto yy3; + if (yych <= 's') goto yy285; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy285: + YYDEBUG(285, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'D') goto yy286; + if (yych != 'd') goto yy3; + } yy286: - YYDEBUG(286, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy287; - if(yych != 'a') goto yy53; + YYDEBUG(286, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy287; + if (yych != 'a') goto yy53; yy287: - YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; + YYDEBUG(287, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; yy288: - YYDEBUG(288, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - if(yych <= 'D') goto yy275; - goto yy277; - } + YYDEBUG(288, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy143; - } else { - if(yych <= 'e') goto yy290; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + if (yych <= 'D') goto yy275; + goto yy277; } - YYDEBUG(289, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'M') goto yy139; - goto yy283; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; + if (yych <= 'd') { + if (yych <= 'c') goto yy143; } else { - if(yych == 'n') goto yy296; - if(yych <= 'z') goto yy148; - goto yy276; + if (yych <= 'e') goto yy290; + if (yych <= 'z') goto yy143; + goto yy3; } } + } + YYDEBUG(289, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'M') goto yy139; + goto yy283; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'n') goto yy296; + if (yych <= 'z') goto yy148; + goto yy276; + } + } yy290: - YYDEBUG(290, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'K') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'J') goto yy139; - goto yy278; - } + YYDEBUG(290, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'K') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'k') goto yy291; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy139; + goto yy278; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'k') goto yy291; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy291: - YYDEBUG(291, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy279; - } + YYDEBUG(291, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy292; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy279; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy292; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy292: - YYDEBUG(292, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy280; - } + YYDEBUG(292, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy293; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy280; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy293; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy293: - YYDEBUG(293, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy281; - } + YYDEBUG(293, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy294; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy281; } -yy294: - YYDEBUG(294, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych <= '/') { - if(yych <= '.') goto yy276; - goto yy144; - } else { - if(yych == 'S') goto yy282; - goto yy276; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'r') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy276; - goto yy151; - } else { - if(yych <= 's') goto yy295; - if(yych <= 'z') goto yy151; - goto yy276; - } + if (yych == 'y') goto yy294; + if (yych <= 'z') goto yy151; + goto yy3; } -yy295: - YYDEBUG(295, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; + } +yy294: + YYDEBUG(294, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych <= '/') { + if (yych <= '.') goto yy276; + goto yy144; + } else { + if (yych == 'S') goto yy282; goto yy276; + } + } else { + if (yych <= 'r') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy276; + goto yy151; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy276; - if(yych <= 'z') goto yy151; + if (yych <= 's') goto yy295; + if (yych <= 'z') goto yy151; goto yy276; } + } +yy295: + YYDEBUG(295, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy276; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy276; + if (yych <= 'z') goto yy151; + goto yy276; + } yy296: - YYDEBUG(296, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy284; - } + YYDEBUG(296, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy297; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy284; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy297; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy297: - YYDEBUG(297, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy141; - goto yy285; - } + YYDEBUG(297, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy298; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; + goto yy285; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy298; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy298: - YYDEBUG(298, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'C') goto yy3; - goto yy286; - } + YYDEBUG(298, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy299; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'C') goto yy3; + goto yy286; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy299; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy299: - YYDEBUG(299, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy287; - if(yych != 'a') goto yy152; - YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; + YYDEBUG(299, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy287; + if (yych != 'a') goto yy152; + YYDEBUG(300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'C') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy138; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'c') goto yy302; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy302: + YYDEBUG(302, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych >= '\t') goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy138; + if (yych == ' ') goto yy305; } } else { - if(yych <= 'b') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= ',') { + if (yych <= ')') goto yy136; } else { - if(yych <= 'c') goto yy302; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; } } -yy302: - YYDEBUG(302, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych >= 0x09) goto yy305; - } else { - if(yych == ' ') goto yy305; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - } + if (yych == 'E') goto yy311; + goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - } else { - if(yych == 'E') goto yy311; - goto yy139; - } + if (yych <= 'd') { + if (yych >= 'a') goto yy139; } else { - if(yych <= 'd') { - if(yych >= 'a') goto yy139; - } else { - if(yych <= 'e') goto yy311; - if(yych <= 'z') goto yy139; - } + if (yych <= 'e') goto yy311; + if (yych <= 'z') goto yy139; } } + } yy303: - YYDEBUG(303, *YYCURSOR); -#line 1433 "ext/date/lib/parse_date.re" - { + YYDEBUG(303, *YYCURSOR); +#line 1436 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("monthtext"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5264,59 +5265,59 @@ yy303: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 5268 "ext/date/lib/parse_date.c" +#line 5269 "ext/date/lib/parse_date.c" yy304: - YYDEBUG(304, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 20) YYFILL(20); - yych = *YYCURSOR; + YYDEBUG(304, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 20) YYFILL(20); + yych = *YYCURSOR; yy305: - YYDEBUG(305, *YYCURSOR); - if(yybm[0+yych] & 32) { - goto yy304; - } - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy307; - if(yych <= '3') goto yy309; - if(yych <= '9') goto yy310; - goto yy53; + YYDEBUG(305, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy304; + } + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy307; + if (yych <= '3') goto yy309; + if (yych <= '9') goto yy310; + goto yy53; yy306: - YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy305; - if(yych <= '0') goto yy466; - if(yych <= '2') goto yy467; - if(yych <= '3') goto yy468; - goto yy305; + YYDEBUG(306, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy305; + if (yych <= '0') goto yy464; + if (yych <= '2') goto yy465; + if (yych <= '3') goto yy466; + goto yy305; yy307: - YYDEBUG(307, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy405; - goto yy406; - } else { - if(yych <= '2') goto yy464; - if(yych <= '9') goto yy465; - goto yy325; - } + YYDEBUG(307, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy405; + goto yy406; + } else { + if (yych <= '2') goto yy462; + if (yych <= '9') goto yy463; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy308: - YYDEBUG(308, *YYCURSOR); -#line 1212 "ext/date/lib/parse_date.re" - { + YYDEBUG(308, *YYCURSOR); +#line 1213 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datetextual | datenoyear"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5327,281 +5328,277 @@ yy308: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 5331 "ext/date/lib/parse_date.c" +#line 5332 "ext/date/lib/parse_date.c" yy309: - YYDEBUG(309, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy405; - goto yy406; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(309, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy405; + goto yy406; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy310: - YYDEBUG(310, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy316; - goto yy317; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(310, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy316; + goto yy317; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy311: - YYDEBUG(311, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - } + YYDEBUG(311, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'm') goto yy312; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'm') goto yy312; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy312: - YYDEBUG(312, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - } + YYDEBUG(312, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'b') goto yy313; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; } -yy313: - YYDEBUG(313, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'E') goto yy314; - if(yych != 'e') goto yy3; + if (yych <= 'b') goto yy313; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy313: + YYDEBUG(313, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'E') goto yy314; + if (yych != 'e') goto yy3; + } yy314: - YYDEBUG(314, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych != 'r') goto yy53; + YYDEBUG(314, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych != 'r') goto yy53; yy315: - YYDEBUG(315, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; + YYDEBUG(315, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy303; goto yy305; } else { - if(yych <= '.') { - if(yych <= ',') goto yy303; - goto yy305; - } else { - if(yych <= '/') goto yy303; - if(yych <= '9') goto yy305; - goto yy303; - } + if (yych <= '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } + } yy316: - YYDEBUG(316, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy403; - if(yych <= '9') goto yy404; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '0') goto yy403; + if (yych <= '9') goto yy404; + if (yych <= ':') goto yy330; + goto yy53; + } yy317: - YYDEBUG(317, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy404; - if(yych <= '9') goto yy403; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '2') goto yy404; + if (yych <= '9') goto yy403; + if (yych <= ':') goto yy371; + goto yy53; + } yy318: - YYDEBUG(318, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy403; - if(yych <= '9') goto yy400; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '3') goto yy403; + if (yych <= '9') goto yy400; + if (yych <= ':') goto yy371; + goto yy53; + } yy319: - YYDEBUG(319, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy400; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '9') goto yy400; + if (yych <= ':') goto yy371; + goto yy53; + } yy320: - YYDEBUG(320, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(320, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy321: - YYDEBUG(321, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(321, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy322: - YYDEBUG(322, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(322, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy323: - YYDEBUG(323, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - goto yy325; + YYDEBUG(323, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + goto yy325; yy324: - YYDEBUG(324, *YYCURSOR); - yyaccept = 7; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 17) YYFILL(17); - yych = *YYCURSOR; + YYDEBUG(324, *YYCURSOR); + yyaccept = 7; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17); + yych = *YYCURSOR; yy325: - YYDEBUG(325, *YYCURSOR); - if(yybm[0+yych] & 64) { - goto yy324; - } - if(yych <= '2') { - if(yych <= '/') goto yy308; - if(yych <= '0') goto yy366; - if(yych <= '1') goto yy367; - goto yy368; - } else { - if(yych <= '9') goto yy369; - if(yych != 'T') goto yy308; - } - YYDEBUG(326, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy327; - if(yych <= '2') goto yy328; - if(yych <= '9') goto yy329; - goto yy53; + YYDEBUG(325, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy324; + } + if (yych <= '2') { + if (yych <= '/') goto yy308; + if (yych <= '0') goto yy366; + if (yych <= '1') goto yy367; + goto yy368; + } else { + if (yych <= '9') goto yy369; + if (yych != 'T') goto yy308; + } + YYDEBUG(326, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy327; + if (yych <= '2') goto yy328; + if (yych <= '9') goto yy329; + goto yy53; yy327: - YYDEBUG(327, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy53; - } else { - if(yych <= '9') goto yy329; - if(yych <= ':') goto yy330; - goto yy53; - } + YYDEBUG(327, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '9') goto yy329; + if (yych <= ':') goto yy330; + goto yy53; + } yy328: - YYDEBUG(328, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy53; - } else { - if(yych <= '3') goto yy329; - if(yych == ':') goto yy330; - goto yy53; - } + YYDEBUG(328, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '3') goto yy329; + if (yych == ':') goto yy330; + goto yy53; + } yy329: - YYDEBUG(329, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '.') goto yy330; - if(yych != ':') goto yy53; + YYDEBUG(329, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy330; + if (yych != ':') goto yy53; yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy331; - if(yych <= '9') goto yy333; - goto yy53; + YYDEBUG(330, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy331; + if (yych <= '9') goto yy333; + goto yy53; yy331: - YYDEBUG(331, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - } else { - if(yych <= '9') goto yy333; - if(yych <= ':') goto yy334; - } + YYDEBUG(331, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + } else { + if (yych <= '9') goto yy333; + if (yych <= ':') goto yy334; + } yy332: - YYDEBUG(332, *YYCURSOR); -#line 1481 "ext/date/lib/parse_date.re" - { + YYDEBUG(332, *YYCURSOR); +#line 1484 "ext/date/lib/parse_date.re" + { int tz_not_found; DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); TIMELIB_INIT; @@ -5629,619 +5626,619 @@ yy332: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 5633 "ext/date/lib/parse_date.c" +#line 5630 "ext/date/lib/parse_date.c" yy333: - YYDEBUG(333, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy334; - if(yych != ':') goto yy332; + YYDEBUG(333, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy334; + if (yych != ':') goto yy332; yy334: - YYDEBUG(334, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy335; - if(yych <= '6') goto yy336; - if(yych <= '9') goto yy337; - goto yy53; + YYDEBUG(334, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy335; + if (yych <= '6') goto yy336; + if (yych <= '9') goto yy337; + goto yy53; yy335: - YYDEBUG(335, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy338; - goto yy332; + YYDEBUG(335, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy338; + goto yy332; yy336: - YYDEBUG(336, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy338; - goto yy332; + YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy338; + goto yy332; yy337: - YYDEBUG(337, *YYCURSOR); - yych = *++YYCURSOR; - goto yy332; + YYDEBUG(337, *YYCURSOR); + yych = *++YYCURSOR; + goto yy332; yy338: - YYDEBUG(338, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy332; - } else { - if(yych <= ' ') goto yy339; - if(yych == '(') goto yy342; - goto yy332; - } + YYDEBUG(338, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy332; + } else { + if (yych <= ' ') goto yy339; + if (yych == '(') goto yy342; + goto yy332; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy332; + if (yych <= '-') goto yy341; + goto yy332; } else { - if(yych <= '@') { - if(yych == ',') goto yy332; - if(yych <= '-') goto yy341; - goto yy332; - } else { - if(yych <= 'Z') goto yy343; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy344; - goto yy332; - } + if (yych <= 'Z') goto yy343; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy344; + goto yy332; } + } yy339: - YYDEBUG(339, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; - YYDEBUG(340, *YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy339; - goto yy53; - } else { - if(yych <= ' ') goto yy339; - if(yych == '(') goto yy342; - goto yy53; - } + YYDEBUG(339, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; + YYDEBUG(340, *YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy339; + goto yy53; } else { - if(yych <= '@') { - if(yych == ',') goto yy53; - if(yych >= '.') goto yy53; - } else { - if(yych <= 'Z') goto yy343; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych <= ' ') goto yy339; + if (yych == '(') goto yy342; + goto yy53; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy53; + if (yych >= '.') goto yy53; + } else { + if (yych <= 'Z') goto yy343; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy344; + goto yy53; } + } yy341: - YYDEBUG(341, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy361; - if(yych <= '2') goto yy362; - if(yych <= '9') goto yy363; - goto yy53; + YYDEBUG(341, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy361; + if (yych <= '2') goto yy362; + if (yych <= '9') goto yy363; + goto yy53; yy342: - YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') goto yy53; - if(yych <= 'Z') goto yy344; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy344; - goto yy53; + YYDEBUG(342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') goto yy53; + if (yych <= 'Z') goto yy344; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy344; + goto yy53; yy343: - YYDEBUG(343, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy345; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy350; - goto yy332; - } + YYDEBUG(343, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy345; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy350; + goto yy332; + } yy344: - YYDEBUG(344, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy345; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(344, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy345; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy345: - YYDEBUG(345, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(345, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy346: - YYDEBUG(346, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy347; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(346, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy347; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy347: - YYDEBUG(347, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy348; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(347, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= 'Z') goto yy348; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } yy348: - YYDEBUG(348, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '@') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= 'Z') goto yy349; - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } -yy349: - YYDEBUG(349, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy337; + YYDEBUG(348, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy337; goto yy332; + } else { + if (yych <= 'Z') goto yy349; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; + } +yy349: + YYDEBUG(349, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy337; + goto yy332; yy350: - YYDEBUG(350, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } + YYDEBUG(350, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy346; + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy346; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } + } yy351: - YYDEBUG(351, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych != '/') goto yy332; - } + YYDEBUG(351, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy347; - if(yych <= '^') goto yy332; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy356; - goto yy332; - } + if (yych != '/') goto yy332; } -yy352: - YYDEBUG(352, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '@') goto yy53; - if(yych >= '[') goto yy53; - YYDEBUG(353, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= '`') goto yy53; - if(yych >= '{') goto yy53; -yy354: - YYDEBUG(354, *YYCURSOR); - yyaccept = 8; - YYMARKER = ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(355, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy352; - goto yy332; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy347; + if (yych <= '^') goto yy332; } else { - if(yych <= '_') goto yy352; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy354; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy356; goto yy332; } + } +yy352: + YYDEBUG(352, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy53; + if (yych >= '[') goto yy53; + YYDEBUG(353, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '`') goto yy53; + if (yych >= '{') goto yy53; +yy354: + YYDEBUG(354, *YYCURSOR); + yyaccept = 8; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(355, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy352; + goto yy332; + } else { + if (yych <= '_') goto yy352; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy354; + goto yy332; + } yy356: - YYDEBUG(356, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } - } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy348; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + YYDEBUG(356, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; } - YYDEBUG(357, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy332; - goto yy337; - } else { - if(yych == '/') goto yy352; - goto yy332; - } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy348; + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy349; - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } - YYDEBUG(358, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy337; - if(yych <= '.') goto yy332; + } + YYDEBUG(357, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy332; + goto yy337; + } else { + if (yych == '/') goto yy352; + goto yy332; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy349; + if (yych <= '^') goto yy332; goto yy352; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych >= '{') goto yy332; - } + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } -yy359: - YYDEBUG(359, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(360, *YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy352; - goto yy53; + } + YYDEBUG(358, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy337; + if (yych <= '.') goto yy332; + goto yy352; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '_') goto yy352; - if(yych <= '`') goto yy53; - if(yych <= 'z') goto yy359; - goto yy53; + if (yych <= '`') goto yy332; + if (yych >= '{') goto yy332; } + } +yy359: + YYDEBUG(359, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(360, *YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy352; + goto yy53; + } else { + if (yych <= '_') goto yy352; + if (yych <= '`') goto yy53; + if (yych <= 'z') goto yy359; + goto yy53; + } yy361: - YYDEBUG(361, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy363; - if(yych <= ':') goto yy364; - goto yy332; + YYDEBUG(361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy363; + if (yych <= ':') goto yy364; + goto yy332; yy362: - YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy332; - if(yych >= '4') goto yy365; - } else { - if(yych <= '9') goto yy337; - if(yych <= ':') goto yy364; - goto yy332; - } + YYDEBUG(362, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy332; + if (yych >= '4') goto yy365; + } else { + if (yych <= '9') goto yy337; + if (yych <= ':') goto yy364; + goto yy332; + } yy363: - YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '5') goto yy365; - if(yych <= '9') goto yy337; - if(yych >= ';') goto yy332; + YYDEBUG(363, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '5') goto yy365; + if (yych <= '9') goto yy337; + if (yych >= ';') goto yy332; yy364: - YYDEBUG(364, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '5') goto yy365; - if(yych <= '9') goto yy337; - goto yy332; + YYDEBUG(364, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '5') goto yy365; + if (yych <= '9') goto yy337; + goto yy332; yy365: - YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy337; - goto yy332; + YYDEBUG(365, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy337; + goto yy332; yy366: - YYDEBUG(366, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy398; - if(yych <= '9') goto yy399; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(366, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy308; + } else { + if (yych <= '0') goto yy398; + if (yych <= '9') goto yy399; + if (yych <= ':') goto yy330; + goto yy308; + } yy367: - YYDEBUG(367, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy399; - if(yych <= '9') goto yy398; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(367, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '2') goto yy399; + if (yych <= '9') goto yy398; + if (yych <= ':') goto yy371; + goto yy308; + } yy368: - YYDEBUG(368, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy398; - if(yych <= '9') goto yy370; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(368, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '3') goto yy398; + if (yych <= '9') goto yy370; + if (yych <= ':') goto yy371; + goto yy308; + } yy369: - YYDEBUG(369, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych <= ':') goto yy371; - goto yy308; - } -yy370: - YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; + YYDEBUG(369, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych <= ':') goto yy371; goto yy308; + } +yy370: + YYDEBUG(370, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy308; yy371: - YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy372; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(371, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy372; + if (yych <= '9') goto yy373; + goto yy53; yy372: - YYDEBUG(372, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy389; - if(yych <= ':') goto yy374; - goto yy332; - } + YYDEBUG(372, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy389; + if (yych <= ':') goto yy374; + goto yy332; + } yy373: - YYDEBUG(373, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy374; - if(yych != ':') goto yy332; + YYDEBUG(373, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy374; + if (yych != ':') goto yy332; yy374: - YYDEBUG(374, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy375; - if(yych <= '6') goto yy376; - if(yych <= '9') goto yy337; - goto yy53; + YYDEBUG(374, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy375; + if (yych <= '6') goto yy376; + if (yych <= '9') goto yy337; + goto yy53; yy375: - YYDEBUG(375, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy332; - if(yych <= '9') goto yy377; - goto yy332; + YYDEBUG(375, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy332; + if (yych <= '9') goto yy377; + goto yy332; yy376: - YYDEBUG(376, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy332; + YYDEBUG(376, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy332; yy377: - YYDEBUG(377, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '*') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy379; - goto yy332; - } else { - if(yych <= ' ') goto yy379; - if(yych == '(') goto yy379; - goto yy332; - } + YYDEBUG(377, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy379; + goto yy332; } else { - if(yych <= '@') { - if(yych == ',') goto yy332; - if(yych <= '-') goto yy379; - goto yy332; - } else { - if(yych <= 'Z') goto yy379; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy379; - goto yy332; - } + if (yych <= ' ') goto yy379; + if (yych == '(') goto yy379; + goto yy332; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy332; + if (yych <= '-') goto yy379; + goto yy332; + } else { + if (yych <= 'Z') goto yy379; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy379; + goto yy332; } + } yy378: - YYDEBUG(378, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; + YYDEBUG(378, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; yy379: - YYDEBUG(379, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy378; - } else { - if(yych == ' ') goto yy378; - goto yy53; - } - } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } + YYDEBUG(379, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy378; + } else { + if (yych == ' ') goto yy378; + goto yy53; } } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy381; - goto yy344; - } else { - if(yych <= 'p') goto yy381; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych == ',') goto yy53; + goto yy341; } } - YYDEBUG(380, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= '.') goto yy382; - if(yych <= '@') goto yy332; - goto yy345; + if (yych != 'P') goto yy343; } } else { - if(yych <= '`') { - if(yych <= 'M') goto yy383; - if(yych <= 'Z') goto yy345; - goto yy332; + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy381; + goto yy344; } else { - if(yych == 'm') goto yy388; - if(yych <= 'z') goto yy350; - goto yy332; + if (yych <= 'p') goto yy381; + if (yych <= 'z') goto yy344; + goto yy53; } } -yy381: - YYDEBUG(381, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy382; - if(yych <= '@') goto yy332; - goto yy345; - } + } + YYDEBUG(380, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy383; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy383; - if(yych <= 'z') goto yy345; - goto yy332; - } + if (yych <= '.') goto yy382; + if (yych <= '@') goto yy332; + goto yy345; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy383; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy388; + if (yych <= 'z') goto yy350; + goto yy332; + } + } +yy381: + YYDEBUG(381, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; + } else { + if (yych <= '.') goto yy382; + if (yych <= '@') goto yy332; + goto yy345; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy383; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy383; + if (yych <= 'z') goto yy345; + goto yy332; } + } yy382: - YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy387; - if(yych == 'm') goto yy387; - goto yy53; + YYDEBUG(382, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy387; + if (yych == 'm') goto yy387; + goto yy53; yy383: - YYDEBUG(383, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych != '.') goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; - } + YYDEBUG(383, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; + goto yy385; + } else { + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy384: - YYDEBUG(384, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= '@') { + if (yych != '.') goto yy332; } else { - if(yych != ' ') goto yy53; + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; } + } +yy384: + YYDEBUG(384, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + } else { + if (yych != ' ') goto yy53; + } yy385: - YYDEBUG(385, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(386, *YYCURSOR); -#line 1457 "ext/date/lib/parse_date.re" - { + YYDEBUG(385, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(386, *YYCURSOR); +#line 1460 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -6263,184 +6260,181 @@ yy385: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 6267 "ext/date/lib/parse_date.c" +#line 6264 "ext/date/lib/parse_date.c" yy387: - YYDEBUG(387, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; + YYDEBUG(387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych == '.') goto yy384; + goto yy53; + } +yy388: + YYDEBUG(388, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; } else { - if(yych <= ' ') goto yy385; - if(yych == '.') goto yy384; - goto yy53; + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; } -yy388: - YYDEBUG(388, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy384; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; goto yy332; } - } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy384; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } - } } + } yy389: - YYDEBUG(389, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy332; - } else { - if(yych == '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; - } + YYDEBUG(389, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy332; + } else { + if (yych == '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy332; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy332; + if (yych <= 'a') { + if (yych <= '`') goto yy332; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy332; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy332; - } + if (yych == 'p') goto yy392; + goto yy332; } } + } yy390: - YYDEBUG(390, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(391, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy390; - goto yy53; - } else { - if(yych <= ' ') goto yy390; - if(yych <= '@') goto yy53; - } + YYDEBUG(390, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(391, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy390; + goto yy53; } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy392; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy390; + if (yych <= '@') goto yy53; } -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych <= 'M') goto yy394; - if(yych == 'm') goto yy394; - goto yy53; + if (yych <= 'a') goto yy392; + if (yych != 'p') goto yy53; } + } +yy392: + YYDEBUG(392, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy394; + if (yych == 'm') goto yy394; + goto yy53; + } yy393: - YYDEBUG(393, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy394; - if(yych != 'm') goto yy53; + YYDEBUG(393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy394; + if (yych != 'm') goto yy53; yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; - } else { - if(yych <= ' ') goto yy385; - if(yych != '.') goto yy53; - } + YYDEBUG(394, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych != '.') goto yy53; + } yy395: - YYDEBUG(395, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; - goto yy385; - } else { - if(yych == ' ') goto yy385; - goto yy53; - } + YYDEBUG(395, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + goto yy385; + } else { + if (yych == ' ') goto yy385; + goto yy53; + } yy396: - YYDEBUG(396, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych >= ':') goto yy308; -yy397: - YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - goto yy308; + YYDEBUG(396, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy308; + if (yych >= ':') goto yy308; + YYDEBUG(397, *YYCURSOR); + yych = *++YYCURSOR; + goto yy308; yy398: - YYDEBUG(398, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(398, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy330; + goto yy308; + } yy399: - YYDEBUG(399, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(399, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy371; + goto yy308; + } yy400: - YYDEBUG(400, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy308; - if(yych >= ':') goto yy308; + YYDEBUG(400, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy401: - YYDEBUG(401, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy402; - if(yych <= '9') goto yy397; + YYDEBUG(401, *YYCURSOR); + ++YYCURSOR; yy402: - YYDEBUG(402, *YYCURSOR); -#line 1186 "ext/date/lib/parse_date.re" - { + YYDEBUG(402, *YYCURSOR); +#line 1187 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datenoday"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -6451,1244 +6445,1210 @@ yy402: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 6455 "ext/date/lib/parse_date.c" +#line 6449 "ext/date/lib/parse_date.c" yy403: - YYDEBUG(403, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '9') goto yy401; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy330; + goto yy53; + } yy404: - YYDEBUG(404, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy371; + goto yy53; + } +yy405: + YYDEBUG(405, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy438; + goto yy325; } else { - if(yych <= '9') goto yy401; - if(yych <= ':') goto yy371; - goto yy308; + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy405: - YYDEBUG(405, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy440; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy330; + if (yych == 'n') goto yy321; + goto yy325; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy330; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy406: - YYDEBUG(406, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych != '.') goto yy325; - } else { - if(yych <= '0') goto yy408; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + YYDEBUG(406, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych != '.') goto yy325; + } else { + if (yych <= '0') goto yy408; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy407: - YYDEBUG(407, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy415; - goto yy416; - } else { - if(yych <= '2') goto yy417; - if(yych <= '5') goto yy418; - if(yych <= '9') goto yy419; + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; goto yy325; } + } +yy407: + YYDEBUG(407, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy413; + goto yy414; + } else { + if (yych <= '2') goto yy415; + if (yych <= '5') goto yy416; + if (yych <= '9') goto yy417; + goto yy325; + } yy408: - YYDEBUG(408, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '0') goto yy413; - if(yych <= '9') goto yy414; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(408, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '0') goto yy411; + if (yych <= '9') goto yy412; + if (yych <= ':') goto yy371; + goto yy53; + } yy409: - YYDEBUG(409, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '2') goto yy414; - if(yych <= '9') goto yy413; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(409, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '2') goto yy412; + if (yych <= '9') goto yy411; + if (yych <= ':') goto yy371; + goto yy53; + } yy410: - YYDEBUG(410, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '3') goto yy413; - if(yych <= '9') goto yy412; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(410, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy371; + goto yy53; + } else { + if (yych <= '3') goto yy411; + if (yych <= '9') goto yy401; + if (yych <= ':') goto yy371; + goto yy53; + } yy411: - YYDEBUG(411, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy308; - } else { - if(yych <= '9') goto yy412; - if(yych <= ':') goto yy371; - goto yy308; - } + YYDEBUG(411, *YYCURSOR); + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy330; + if (yych == ':') goto yy330; + goto yy402; yy412: - YYDEBUG(412, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy402; - if(yych <= '9') goto yy396; - goto yy402; + YYDEBUG(412, *YYCURSOR); + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy371; + if (yych == ':') goto yy371; + goto yy402; yy413: - YYDEBUG(413, *YYCURSOR); - yyaccept = 9; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy402; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy330; - goto yy402; - } + YYDEBUG(413, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy433; + goto yy308; + } else { + if (yych <= '0') goto yy432; + if (yych <= '9') goto yy437; + if (yych <= ':') goto yy433; + goto yy308; + } yy414: - YYDEBUG(414, *YYCURSOR); - yyaccept = 9; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy371; - goto yy402; - } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy371; - goto yy402; - } + YYDEBUG(414, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '2') goto yy437; + if (yych <= '9') goto yy432; + if (yych <= ':') goto yy418; + goto yy308; + } yy415: - YYDEBUG(415, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy435; - goto yy308; - } else { - if(yych <= '0') goto yy434; - if(yych <= '9') goto yy439; - if(yych <= ':') goto yy435; - goto yy308; - } + YYDEBUG(415, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '3') goto yy432; + if (yych <= '9') goto yy431; + if (yych <= ':') goto yy418; + goto yy308; + } yy416: - YYDEBUG(416, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '2') goto yy439; - if(yych <= '9') goto yy434; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(416, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy418; + goto yy308; + } else { + if (yych <= '9') goto yy431; + if (yych <= ':') goto yy418; + goto yy308; + } yy417: - YYDEBUG(417, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '3') goto yy434; - if(yych <= '9') goto yy433; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(417, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych >= ';') goto yy308; + } yy418: - YYDEBUG(418, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy420; - goto yy308; - } else { - if(yych <= '9') goto yy433; - if(yych <= ':') goto yy420; - goto yy308; - } + YYDEBUG(418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy419; + if (yych <= '6') goto yy420; + if (yych <= '9') goto yy373; + goto yy53; yy419: - YYDEBUG(419, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych >= ';') goto yy308; - } + YYDEBUG(419, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy421; + if (yych <= ':') goto yy374; + goto yy332; + } yy420: - YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy421; - if(yych <= '6') goto yy422; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(420, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '0') goto yy377; + if (yych == ':') goto yy374; + goto yy332; + } yy421: - YYDEBUG(421, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy423; - if(yych <= ':') goto yy374; - goto yy332; + YYDEBUG(421, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy423; + if (yych <= 0x1F) goto yy332; + goto yy423; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy423; + } else { + if (yych == '+') goto yy423; + goto yy332; + } } -yy422: - YYDEBUG(422, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '0') goto yy377; - if(yych == ':') goto yy374; - goto yy332; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy423; + if (yych <= '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy423; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy423; + goto yy332; + } } + } +yy422: + YYDEBUG(422, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; yy423: - YYDEBUG(423, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy425; - if(yych <= 0x1F) goto yy332; - goto yy425; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy425; - } else { - if(yych == '+') goto yy425; - goto yy332; - } + YYDEBUG(423, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy422; + } else { + if (yych == ' ') goto yy422; + goto yy53; } } else { - if(yych <= ':') { - if(yych <= '-') goto yy425; - if(yych <= '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy425; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy425; - goto yy332; - } + if (yych == ',') goto yy53; + goto yy341; } } -yy424: - YYDEBUG(424, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; -yy425: - YYDEBUG(425, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy424; - } else { - if(yych == ' ') goto yy424; - goto yy53; - } + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } + if (yych != 'P') goto yy343; } } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy425; + goto yy344; } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy427; - goto yy344; - } else { - if(yych <= 'p') goto yy427; - if(yych <= 'z') goto yy344; - goto yy53; - } + if (yych <= 'p') goto yy425; + if (yych <= 'z') goto yy344; + goto yy53; } } - YYDEBUG(426, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy429; - if(yych <= '@') goto yy332; - goto yy345; - } + } + YYDEBUG(424, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy428; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy432; - if(yych <= 'z') goto yy350; - goto yy332; - } + if (yych <= '.') goto yy427; + if (yych <= '@') goto yy332; + goto yy345; } -yy427: - YYDEBUG(427, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy429; - if(yych <= '@') goto yy332; - goto yy345; - } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy426; + if (yych <= 'Z') goto yy345; + goto yy332; } else { - if(yych <= '`') { - if(yych <= 'M') goto yy428; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy428; - if(yych <= 'z') goto yy345; - goto yy332; - } - } -yy428: - YYDEBUG(428, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych == '.') goto yy431; - goto yy332; - } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; - } + if (yych == 'm') goto yy430; + if (yych <= 'z') goto yy350; + goto yy332; } -yy429: - YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy430; - if(yych != 'm') goto yy53; -yy430: - YYDEBUG(430, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy53; + } +yy425: + YYDEBUG(425, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= ' ') goto yy385; - if(yych != '.') goto yy53; + if (yych <= '.') goto yy427; + if (yych <= '@') goto yy332; + goto yy345; } -yy431: - YYDEBUG(431, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy426; + if (yych <= 'Z') goto yy345; + goto yy332; + } else { + if (yych == 'm') goto yy426; + if (yych <= 'z') goto yy345; + goto yy332; + } + } +yy426: + YYDEBUG(426, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; goto yy385; } else { - if(yych == ' ') goto yy385; - goto yy53; + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy432: - YYDEBUG(432, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= '@') { + if (yych == '.') goto yy429; + goto yy332; + } else { + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; + } + } +yy427: + YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy428; + if (yych != 'm') goto yy53; +yy428: + YYDEBUG(428, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy53; + } else { + if (yych <= ' ') goto yy385; + if (yych != '.') goto yy53; + } +yy429: + YYDEBUG(429, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy53; + goto yy385; + } else { + if (yych == ' ') goto yy385; + goto yy53; + } +yy430: + YYDEBUG(430, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; + } else { + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; + } + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy429; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; goto yy332; } - } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy431; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; + } + } +yy431: + YYDEBUG(431, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; + } else { + if (yych <= '.') { + if (yych <= '-') goto yy308; + goto yy374; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy374; } } -yy433: - YYDEBUG(433, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - goto yy374; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - goto yy374; - } - } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } -yy434: - YYDEBUG(434, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - } + } +yy432: + YYDEBUG(432, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; + } else { + if (yych <= '.') { + if (yych <= '-') goto yy308; + } else { + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; } + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } + } +yy433: + YYDEBUG(433, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy434; + if (yych <= '6') goto yy435; + if (yych <= '9') goto yy333; + goto yy53; +yy434: + YYDEBUG(434, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '9') goto yy436; + if (yych <= ':') goto yy334; + goto yy332; + } yy435: - YYDEBUG(435, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy436; - if(yych <= '6') goto yy437; - if(yych <= '9') goto yy333; - goto yy53; + YYDEBUG(435, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '0') goto yy377; + if (yych == ':') goto yy334; + goto yy332; + } yy436: - YYDEBUG(436, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy332; - } else { - if(yych <= '9') goto yy438; - if(yych <= ':') goto yy334; - goto yy332; - } -yy437: - YYDEBUG(437, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy332; - } else { - if(yych <= '0') goto yy377; - if(yych == ':') goto yy334; - goto yy332; + YYDEBUG(436, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy379; + if (yych <= 0x1F) goto yy332; + goto yy379; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy379; + } else { + if (yych == '+') goto yy379; + goto yy332; + } } -yy438: - YYDEBUG(438, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy379; - if(yych <= 0x1F) goto yy332; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy379; + if (yych <= '.') goto yy334; + if (yych <= '9') goto yy332; + goto yy334; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; goto yy379; } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy379; - } else { - if(yych == '+') goto yy379; - goto yy332; - } + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy379; + goto yy332; } + } + } +yy437: + YYDEBUG(437, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy390; + if (yych <= 0x1F) goto yy308; + goto yy390; } else { - if(yych <= ':') { - if(yych <= '-') goto yy379; - if(yych <= '.') goto yy334; - if(yych <= '9') goto yy332; - goto yy334; + if (yych <= '.') { + if (yych <= '-') goto yy308; + goto yy418; } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy379; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy379; - goto yy332; - } + if (yych <= '/') goto yy308; + if (yych <= '9') goto yy396; + goto yy418; } } -yy439: - YYDEBUG(439, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy390; - if(yych <= 0x1F) goto yy308; - goto yy390; - } else { - if(yych <= '.') { - if(yych <= '-') goto yy308; - goto yy420; - } else { - if(yych <= '/') goto yy308; - if(yych <= '9') goto yy396; - goto yy420; - } - } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy392; + if (yych <= 'O') goto yy308; + goto yy392; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy392; - if(yych <= 'O') goto yy308; + if (yych <= 'a') { + if (yych <= '`') goto yy308; goto yy392; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy308; - goto yy392; - } else { - if(yych == 'p') goto yy392; - goto yy308; - } + if (yych == 'p') goto yy392; + goto yy308; } } + } +yy438: + YYDEBUG(438, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy440; + goto yy441; + } else { + if (yych <= '2') goto yy442; + if (yych <= '5') goto yy443; + if (yych <= '9') goto yy444; + goto yy325; + } +yy439: + YYDEBUG(439, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy330; + goto yy53; + } else { + if (yych <= '0') goto yy411; + if (yych <= '9') goto yy412; + if (yych <= ':') goto yy330; + goto yy53; + } yy440: - YYDEBUG(440, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy442; - goto yy443; - } else { - if(yych <= '2') goto yy444; - if(yych <= '5') goto yy445; - if(yych <= '9') goto yy446; - goto yy325; - } + YYDEBUG(440, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy457; + goto yy308; + } else { + if (yych <= '0') goto yy456; + if (yych <= '9') goto yy461; + if (yych <= ':') goto yy457; + goto yy308; + } yy441: - YYDEBUG(441, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy330; - goto yy308; - } else { - if(yych <= '0') goto yy413; - if(yych <= '9') goto yy414; - if(yych <= ':') goto yy330; - goto yy308; - } + YYDEBUG(441, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '2') goto yy461; + if (yych <= '9') goto yy456; + if (yych <= ':') goto yy445; + goto yy308; + } yy442: - YYDEBUG(442, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy459; - goto yy308; - } else { - if(yych <= '0') goto yy458; - if(yych <= '9') goto yy463; - if(yych <= ':') goto yy459; - goto yy308; - } + YYDEBUG(442, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '3') goto yy456; + if (yych <= '9') goto yy455; + if (yych <= ':') goto yy445; + goto yy308; + } yy443: - YYDEBUG(443, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '2') goto yy463; - if(yych <= '9') goto yy458; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(443, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '9') goto yy455; + if (yych <= ':') goto yy445; + goto yy308; + } yy444: - YYDEBUG(444, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '3') goto yy458; - if(yych <= '9') goto yy457; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(444, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy370; + if (yych >= ';') goto yy308; + } yy445: - YYDEBUG(445, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; - } else { - if(yych <= '9') goto yy457; - if(yych <= ':') goto yy447; - goto yy308; - } + YYDEBUG(445, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy446; + if (yych <= '6') goto yy447; + if (yych <= '9') goto yy373; + goto yy53; yy446: - YYDEBUG(446, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; - } else { - if(yych <= '9') goto yy370; - if(yych >= ';') goto yy308; - } + YYDEBUG(446, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '9') goto yy448; + if (yych <= ':') goto yy374; + goto yy332; + } yy447: - YYDEBUG(447, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy448; - if(yych <= '6') goto yy449; - if(yych <= '9') goto yy373; - goto yy53; + YYDEBUG(447, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy374; + goto yy332; + } else { + if (yych <= '0') goto yy338; + if (yych == ':') goto yy374; + goto yy332; + } yy448: - YYDEBUG(448, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '9') goto yy450; - if(yych <= ':') goto yy374; - goto yy332; - } -yy449: - YYDEBUG(449, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy374; - goto yy332; - } else { - if(yych <= '0') goto yy338; - if(yych == ':') goto yy374; - goto yy332; - } -yy450: - YYDEBUG(450, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy452; - if(yych <= 0x1F) goto yy332; - goto yy452; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy452; - } else { - if(yych == '+') goto yy452; - goto yy332; - } - } - } else { - if(yych <= ':') { - if(yych <= '-') goto yy452; - if(yych <= '.') goto yy374; - if(yych <= '9') goto yy332; - goto yy374; - } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy452; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy452; - goto yy332; - } - } - } -yy451: - YYDEBUG(451, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 8) YYFILL(8); - yych = *YYCURSOR; -yy452: - YYDEBUG(452, *YYCURSOR); - if(yych <= '-') { - if(yych <= '\'') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy53; - goto yy451; - } else { - if(yych == ' ') goto yy451; - goto yy53; - } - } else { - if(yych <= '*') { - if(yych <= '(') goto yy342; - goto yy53; - } else { - if(yych == ',') goto yy53; - goto yy341; - } - } - } else { - if(yych <= 'Z') { - if(yych <= 'A') { - if(yych <= '@') goto yy53; - } else { - if(yych != 'P') goto yy343; - } - } else { - if(yych <= 'o') { - if(yych <= '`') goto yy53; - if(yych <= 'a') goto yy454; - goto yy344; - } else { - if(yych <= 'p') goto yy454; - if(yych <= 'z') goto yy344; - goto yy53; - } - } - } - YYDEBUG(453, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; + YYDEBUG(448, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy450; + if (yych <= 0x1F) goto yy332; + goto yy450; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy450; + } else { + if (yych == '+') goto yy450; goto yy332; - } else { - if(yych <= '.') goto yy393; - if(yych <= '@') goto yy332; - goto yy345; } - } else { - if(yych <= '`') { - if(yych <= 'M') goto yy455; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy456; - if(yych <= 'z') goto yy350; + } + } else { + if (yych <= ':') { + if (yych <= '-') goto yy450; + if (yych <= '.') goto yy374; + if (yych <= '9') goto yy332; + goto yy374; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy450; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy450; goto yy332; } } -yy454: - YYDEBUG(454, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '-') { - if(yych == ')') goto yy337; - goto yy332; - } else { - if(yych <= '.') goto yy393; - if(yych <= '@') goto yy332; - goto yy345; + } +yy449: + YYDEBUG(449, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); + yych = *YYCURSOR; +yy450: + YYDEBUG(450, *YYCURSOR); + if (yych <= '-') { + if (yych <= '\'') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy53; + goto yy449; + } else { + if (yych == ' ') goto yy449; + goto yy53; } } else { - if(yych <= '`') { - if(yych <= 'M') goto yy455; - if(yych <= 'Z') goto yy345; - goto yy332; - } else { - if(yych == 'm') goto yy455; - if(yych <= 'z') goto yy345; - goto yy332; - } - } -yy455: - YYDEBUG(455, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x09) { - if(yych <= 0x00) goto yy385; - if(yych <= 0x08) goto yy332; - goto yy385; - } else { - if(yych == ' ') goto yy385; - if(yych <= '(') goto yy332; - goto yy337; - } - } else { - if(yych <= '@') { - if(yych == '.') goto yy395; - goto yy332; + if (yych <= '*') { + if (yych <= '(') goto yy342; + goto yy53; } else { - if(yych <= 'Z') goto yy346; - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy346; - goto yy332; + if (yych == ',') goto yy53; + goto yy341; } } -yy456: - YYDEBUG(456, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy385; - if(yych == 0x09) goto yy385; - goto yy332; + } else { + if (yych <= 'Z') { + if (yych <= 'A') { + if (yych <= '@') goto yy53; } else { - if(yych <= ' ') goto yy385; - if(yych == ')') goto yy337; - goto yy332; + if (yych != 'P') goto yy343; } } else { - if(yych <= 'Z') { - if(yych <= '.') goto yy395; - if(yych <= '/') goto yy352; - if(yych <= '@') goto yy332; - goto yy346; + if (yych <= 'o') { + if (yych <= '`') goto yy53; + if (yych <= 'a') goto yy452; + goto yy344; } else { - if(yych <= '_') { - if(yych <= '^') goto yy332; - goto yy352; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy351; - goto yy332; - } + if (yych <= 'p') goto yy452; + if (yych <= 'z') goto yy344; + goto yy53; } } -yy457: - YYDEBUG(457, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; - goto yy308; + } + YYDEBUG(451, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy334; - goto yy308; + if (yych <= '.') goto yy393; + if (yych <= '@') goto yy332; + goto yy345; } -yy458: - YYDEBUG(458, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych != '.') goto yy308; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy453; + if (yych <= 'Z') goto yy345; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych >= ';') goto yy308; + if (yych == 'm') goto yy454; + if (yych <= 'z') goto yy350; + goto yy332; } -yy459: - YYDEBUG(459, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy460; - if(yych <= '6') goto yy461; - if(yych <= '9') goto yy333; - goto yy53; -yy460: - YYDEBUG(460, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; + } +yy452: + YYDEBUG(452, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy337; goto yy332; } else { - if(yych <= '9') goto yy462; - if(yych <= ':') goto yy334; - goto yy332; + if (yych <= '.') goto yy393; + if (yych <= '@') goto yy332; + goto yy345; } -yy461: - YYDEBUG(461, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy334; + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy453; + if (yych <= 'Z') goto yy345; goto yy332; } else { - if(yych <= '0') goto yy338; - if(yych == ':') goto yy334; + if (yych == 'm') goto yy453; + if (yych <= 'z') goto yy345; goto yy332; } -yy462: - YYDEBUG(462, *YYCURSOR); - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= ' ') { - if(yych == 0x09) goto yy339; - if(yych <= 0x1F) goto yy332; - goto yy339; - } else { - if(yych <= '(') { - if(yych <= '\'') goto yy332; - goto yy342; - } else { - if(yych == '+') goto yy341; - goto yy332; - } - } + } +yy453: + YYDEBUG(453, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy385; + if (yych <= 0x08) goto yy332; + goto yy385; } else { - if(yych <= ':') { - if(yych <= '-') goto yy341; - if(yych <= '.') goto yy334; - if(yych <= '9') goto yy332; - goto yy334; - } else { - if(yych <= 'Z') { - if(yych <= '@') goto yy332; - goto yy343; - } else { - if(yych <= '`') goto yy332; - if(yych <= 'z') goto yy344; - goto yy332; - } - } + if (yych == ' ') goto yy385; + if (yych <= '(') goto yy332; + goto yy337; } -yy463: - YYDEBUG(463, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy447; - goto yy308; + } else { + if (yych <= '@') { + if (yych == '.') goto yy395; + goto yy332; } else { - if(yych <= '9') goto yy396; - if(yych <= ':') goto yy447; - goto yy308; + if (yych <= 'Z') goto yy346; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy346; + goto yy332; } -yy464: - YYDEBUG(464, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + } +yy454: + YYDEBUG(454, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy385; + if (yych == '\t') goto yy385; + goto yy332; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= ' ') goto yy385; + if (yych == ')') goto yy337; + goto yy332; } -yy465: - YYDEBUG(465, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych == '.') goto yy407; - goto yy325; + } else { + if (yych <= 'Z') { + if (yych <= '.') goto yy395; + if (yych <= '/') goto yy352; + if (yych <= '@') goto yy332; + goto yy346; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy332; + goto yy352; } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy351; + goto yy332; } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; + } + } +yy455: + YYDEBUG(455, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy334; + goto yy308; + } +yy456: + YYDEBUG(456, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych != '.') goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych >= ';') goto yy308; + } +yy457: + YYDEBUG(457, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy458; + if (yych <= '6') goto yy459; + if (yych <= '9') goto yy333; + goto yy53; +yy458: + YYDEBUG(458, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '9') goto yy460; + if (yych <= ':') goto yy334; + goto yy332; + } +yy459: + YYDEBUG(459, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy334; + goto yy332; + } else { + if (yych <= '0') goto yy338; + if (yych == ':') goto yy334; + goto yy332; + } +yy460: + YYDEBUG(460, *YYCURSOR); + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ' ') { + if (yych == '\t') goto yy339; + if (yych <= 0x1F) goto yy332; + goto yy339; + } else { + if (yych <= '(') { + if (yych <= '\'') goto yy332; + goto yy342; + } else { + if (yych == '+') goto yy341; + goto yy332; } } -yy466: - YYDEBUG(466, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy469; - goto yy470; - } else { - if(yych <= '2') goto yy477; - if(yych <= '9') goto yy478; - goto yy325; + } else { + if (yych <= ':') { + if (yych <= '-') goto yy341; + if (yych <= '.') goto yy334; + if (yych <= '9') goto yy332; + goto yy334; + } else { + if (yych <= 'Z') { + if (yych <= '@') goto yy332; + goto yy343; + } else { + if (yych <= '`') goto yy332; + if (yych <= 'z') goto yy344; + goto yy332; } + } + } +yy461: + YYDEBUG(461, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy445; + goto yy308; + } else { + if (yych <= '9') goto yy396; + if (yych <= ':') goto yy445; + goto yy308; + } +yy462: + YYDEBUG(462, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy407; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy463: + YYDEBUG(463, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych == '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy464: + YYDEBUG(464, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy467; + goto yy468; + } else { + if (yych <= '2') goto yy475; + if (yych <= '9') goto yy476; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy465: + YYDEBUG(465, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych <= '0') goto yy467; + goto yy468; + } else { + if (yych <= '2') goto yy475; + if (yych <= '9') goto yy476; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy466: + YYDEBUG(466, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy325; + if (yych >= '1') goto yy468; + } else { + if (yych <= '2') goto yy318; + if (yych <= '9') goto yy319; + goto yy325; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy321; + if (yych <= 'q') goto yy325; + goto yy322; + } else { + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy467: - YYDEBUG(467, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych <= '0') goto yy469; - goto yy470; - } else { - if(yych <= '2') goto yy477; - if(yych <= '9') goto yy478; - goto yy325; - } + YYDEBUG(467, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy438; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy330; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } yy468: - YYDEBUG(468, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy325; - if(yych >= '1') goto yy470; - } else { - if(yych <= '2') goto yy318; - if(yych <= '9') goto yy319; - goto yy325; - } + YYDEBUG(468, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy321; - if(yych <= 'q') goto yy325; - goto yy322; - } else { - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '0') goto yy408; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; } -yy469: - YYDEBUG(469, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy440; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy330; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } - } -yy470: - YYDEBUG(470, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy408; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; } + } +yy469: + YYDEBUG(469, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(470, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy471; + if (yych <= '9') goto yy472; yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy473; - if(yych <= '9') goto yy474; -yy473: - YYDEBUG(473, *YYCURSOR); -#line 1326 "ext/date/lib/parse_date.re" - { + YYDEBUG(471, *YYCURSOR); +#line 1327 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("pgtextshort"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -7699,1889 +7659,1889 @@ yy473: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 7703 "ext/date/lib/parse_date.c" -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy473; - if(yych >= ':') goto yy473; - YYDEBUG(475, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy473; - if(yych >= ':') goto yy473; - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - goto yy473; +#line 7663 "ext/date/lib/parse_date.c" +yy472: + YYDEBUG(472, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy471; + if (yych >= ':') goto yy471; + YYDEBUG(473, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy471; + if (yych >= ':') goto yy471; + YYDEBUG(474, *YYCURSOR); + yych = *++YYCURSOR; + goto yy471; +yy475: + YYDEBUG(475, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } +yy476: + YYDEBUG(476, *YYCURSOR); + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '/') { + if (yych <= ',') goto yy325; + if (yych <= '-') goto yy469; + if (yych <= '.') goto yy407; + goto yy325; + } else { + if (yych <= '0') goto yy439; + if (yych <= '1') goto yy409; + if (yych <= '2') goto yy410; + goto yy404; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy371; + if (yych == 'n') goto yy321; + goto yy325; + } else { + if (yych <= 'r') goto yy322; + if (yych <= 's') goto yy320; + if (yych <= 't') goto yy323; + goto yy325; + } + } yy477: - YYDEBUG(477, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; - } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; - } + YYDEBUG(477, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; - } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy138; + goto yy302; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'c') goto yy478; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy478: - YYDEBUG(478, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '/') { - if(yych <= ',') goto yy325; - if(yych <= '-') goto yy471; - if(yych <= '.') goto yy407; - goto yy325; + YYDEBUG(478, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '0') goto yy441; - if(yych <= '1') goto yy409; - if(yych <= '2') goto yy410; - goto yy411; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'q') { - if(yych <= ':') goto yy371; - if(yych == 'n') goto yy321; - goto yy325; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'r') goto yy322; - if(yych <= 's') goto yy320; - if(yych <= 't') goto yy323; - goto yy325; + if (yych == '/') goto yy144; + goto yy305; } } -yy479: - YYDEBUG(479, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'B') goto yy138; - goto yy302; + if (yych <= 'E') goto yy311; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 'c') goto yy480; - if(yych <= 'z') goto yy143; - goto yy3; + if (yych <= 'e') goto yy479; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy479: + YYDEBUG(479, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + goto yy312; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'm') goto yy480; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy480: - YYDEBUG(480, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(480, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy311; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy481; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; + goto yy313; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy481; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy481: - YYDEBUG(481, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - goto yy312; - } + YYDEBUG(481, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy482; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'D') goto yy3; + goto yy314; } -yy482: - YYDEBUG(482, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - goto yy313; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy483; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'e') goto yy482; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy482: + YYDEBUG(482, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych != 'r') goto yy152; yy483: - YYDEBUG(483, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'D') goto yy3; - goto yy314; - } + YYDEBUG(483, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= '^') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy484; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy151; + goto yy303; } + } yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych != 'r') goto yy152; + YYDEBUG(484, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 't') goto yy485; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy485: - YYDEBUG(485, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; - } else { - if(yych <= ' ') goto yy305; - if(yych <= ',') goto yy303; + YYDEBUG(485, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; + } else { + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy151; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; + if (yych != 'O') goto yy139; } } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'n') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') goto yy487; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'o') goto yy486; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy487: - YYDEBUG(487, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy486: + YYDEBUG(486, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'O') goto yy139; - } - } else { - if(yych <= 'n') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'o') goto yy488; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy140; } -yy488: - YYDEBUG(488, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy140; - } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'b') goto yy489; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'b') goto yy487; + if (yych <= 'z') goto yy140; + goto yy3; } -yy489: - YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy141; - } + } +yy487: + YYDEBUG(487, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'e') goto yy490; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; } -yy490: - YYDEBUG(490, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Q') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'e') goto yy488; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy488: + YYDEBUG(488, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Q') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy3; + } +yy489: + YYDEBUG(489, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy485; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; goto yy3; } else { - if(yych <= 'R') goto yy315; - if(yych == 'r') goto yy315; + if (yych == 't') goto yy490; + if (yych <= 'z') goto yy143; goto yy3; } -yy491: - YYDEBUG(491, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } +yy490: + YYDEBUG(490, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy487; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 't') goto yy492; - if(yych <= 'z') goto yy143; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy492: - YYDEBUG(492, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= '^') { + if (yych <= 'N') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych <= 'O') goto yy486; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'N') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'O') goto yy488; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 'n') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'n') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'o') goto yy493; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'o') goto yy491; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy491: + YYDEBUG(491, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy140; + goto yy487; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy492; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy492: + YYDEBUG(492, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; + goto yy488; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy493; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy493: - YYDEBUG(493, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy140; - goto yy489; - } + YYDEBUG(493, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '/') goto yy144; + if (yych <= 'Q') goto yy3; + goto yy315; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy483; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy494: + YYDEBUG(494, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= 'B') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'O') { + if (yych <= 'C') goto yy510; + goto yy138; } else { - if(yych == 'b') goto yy494; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'P') goto yy509; + if (yych <= 'U') goto yy138; + goto yy511; } } -yy494: - YYDEBUG(494, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'o') { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy141; - goto yy490; + if (yych == 'c') goto yy510; + goto yy138; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'u') { + if (yych <= 'p') goto yy509; + goto yy138; } else { - if(yych == 'e') goto yy495; - if(yych <= 'z') goto yy150; + if (yych <= 'v') goto yy511; + if (yych <= 'z') goto yy138; goto yy3; } } + } yy495: - YYDEBUG(495, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'Q') goto yy3; - goto yy315; - } + YYDEBUG(495, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy485; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy504; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 't') goto yy504; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy496: - YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'V') { - if(yych <= 'B') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'O') { - if(yych <= 'C') goto yy512; - goto yy138; - } else { - if(yych <= 'P') goto yy511; - if(yych <= 'U') goto yy138; - goto yy513; - } - } + YYDEBUG(496, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'o') { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych == 'c') goto yy512; - goto yy138; - } - } else { - if(yych <= 'u') { - if(yych <= 'p') goto yy511; - goto yy138; - } else { - if(yych <= 'v') goto yy513; - if(yych <= 'z') goto yy138; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy502; + } + } else { + if (yych <= 'w') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'x') goto yy502; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy497: - YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy506; - } + YYDEBUG(497, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 't') goto yy506; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy498; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy498: - YYDEBUG(498, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy504; - } + YYDEBUG(498, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'w') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'x') goto yy504; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy499; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - } + YYDEBUG(499, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy500; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy500; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy500: - YYDEBUG(500, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(500, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy501; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; } -yy501: - YYDEBUG(501, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy502; - if(yych <= 'z') goto yy140; - goto yy3; - } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy501: + YYDEBUG(501, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy136; + goto yy276; yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - } + YYDEBUG(502, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy503; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy503: - YYDEBUG(503, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == ')') goto yy136; - goto yy276; + YYDEBUG(503, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; + } + } yy504: - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(504, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy505; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'T') goto yy139; + } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'u') goto yy505; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy505: - YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(505, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'r') goto yy506; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy506: - YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'T') goto yy139; - } + YYDEBUG(506, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'u') goto yy507; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'd') goto yy507; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy507: - YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(507, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy508; + if (yych != 'a') goto yy3; + } +yy508: + YYDEBUG(508, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; +yy509: + YYDEBUG(509, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'r') goto yy508; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy508: - YYDEBUG(508, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; + if (yych == 'T') goto yy518; + goto yy139; } } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 's') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'd') goto yy509; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 't') goto yy518; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy509: - YYDEBUG(509, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + } +yy510: + YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy510; - if(yych != 'a') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + goto yy515; } -yy510: - YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'o') goto yy515; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy511: - YYDEBUG(511, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + YYDEBUG(511, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'T') goto yy520; - goto yy139; - } - } else { - if(yych <= 's') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 't') goto yy520; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy139; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'e') goto yy512; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy512: - YYDEBUG(512, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy517; - } + YYDEBUG(512, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'o') goto yy517; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'n') goto yy513; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy513: - YYDEBUG(513, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy139; - } + YYDEBUG(513, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'e') goto yy514; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; } -yy514: - YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'n') goto yy515; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 't') goto yy514; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy514: + YYDEBUG(514, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy3; + } yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(515, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy516; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; } -yy516: - YYDEBUG(516, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'n') goto yy516; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy516: + YYDEBUG(516, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'H') goto yy160; - if(yych == 'h') goto yy160; + if (yych <= 'd') goto yy517; + if (yych <= 'z') goto yy141; goto yy3; } + } yy517: - YYDEBUG(517, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(517, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; + } else { + if (yych <= ' ') goto yy161; + if (yych == ')') goto yy136; + goto yy3; + } +yy518: + YYDEBUG(518, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'n') goto yy518; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy518: - YYDEBUG(518, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; + if (yych != 'E') goto yy140; } } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy140; } else { - if(yych <= 'd') goto yy519; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 'e') goto yy519; + if (yych <= 'z') goto yy140; + goto yy303; } } + } yy519: - YYDEBUG(519, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; + YYDEBUG(519, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy141; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= ' ') goto yy161; - if(yych == ')') goto yy136; + if (yych <= 'm') goto yy520; + if (yych <= 'z') goto yy141; goto yy3; } + } yy520: - YYDEBUG(520, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + YYDEBUG(520, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'B') goto yy521; + if (yych != 'b') goto yy3; + } +yy521: + YYDEBUG(521, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy522; + if (yych != 'e') goto yy53; +yy522: + YYDEBUG(522, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy53; +yy523: + YYDEBUG(523, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy3; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'E') goto yy140; - } + if (yych <= 'O') { + if (yych == 'C') goto yy510; + goto yy138; } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy140; - } else { - if(yych <= 'e') goto yy521; - if(yych <= 'z') goto yy140; - goto yy303; - } + if (yych <= 'P') goto yy509; + if (yych <= 'U') goto yy138; + goto yy511; } } -yy521: - YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'c') { + if (yych <= '_') { + if (yych <= 'Z') goto yy138; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'b') goto yy143; + goto yy539; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'u') { + if (yych == 'p') goto yy538; + goto yy143; } else { - if(yych <= 'm') goto yy522; - if(yych <= 'z') goto yy141; + if (yych <= 'v') goto yy540; + if (yych <= 'z') goto yy143; goto yy3; } } -yy522: - YYDEBUG(522, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych == ')') goto yy136; + } +yy524: + YYDEBUG(524, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; goto yy3; } else { - if(yych <= 'B') goto yy523; - if(yych != 'b') goto yy3; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy138; + goto yy504; } -yy523: - YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy524; - if(yych != 'e') goto yy53; -yy524: - YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy315; - goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy533; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy525: - YYDEBUG(525, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } - } else { - if(yych <= 'O') { - if(yych == 'C') goto yy512; - goto yy138; - } else { - if(yych <= 'P') goto yy511; - if(yych <= 'U') goto yy138; - goto yy513; - } - } + YYDEBUG(525, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= '_') { - if(yych <= 'Z') goto yy138; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'b') goto yy143; - goto yy541; - } - } else { - if(yych <= 'u') { - if(yych == 'p') goto yy540; - goto yy143; - } else { - if(yych <= 'v') goto yy542; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy502; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'x') goto yy531; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy526: - YYDEBUG(526, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy138; - goto yy506; - } + YYDEBUG(526, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy535; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy498; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy527; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy527: - YYDEBUG(527, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy504; - } + YYDEBUG(527, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'x') goto yy533; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy499; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy528; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy528: - YYDEBUG(528, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy500; - } + YYDEBUG(528, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy529; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy500; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy529; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy529: - YYDEBUG(529, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy501; - } + YYDEBUG(529, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy530; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy530: - YYDEBUG(530, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy502; - } + YYDEBUG(530, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy276; + goto yy144; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy276; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy531; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '`') goto yy276; + if (yych <= 'z') goto yy151; + goto yy276; } + } yy531: - YYDEBUG(531, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(531, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy503; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy532; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy532: - YYDEBUG(532, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy276; - goto yy144; + YYDEBUG(532, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= '^') goto yy276; - goto yy144; - } else { - if(yych <= '`') goto yy276; - if(yych <= 'z') goto yy151; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } -yy533: - YYDEBUG(533, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy505; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy534; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } -yy534: - YYDEBUG(534, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + } +yy533: + YYDEBUG(533, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'T') goto yy139; + goto yy505; } -yy535: - YYDEBUG(535, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'T') goto yy139; - goto yy507; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'u') goto yy536; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych == 'u') goto yy534; + if (yych <= 'z') goto yy148; + goto yy276; } -yy536: - YYDEBUG(536, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - goto yy508; - } + } +yy534: + YYDEBUG(534, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy537; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy506; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy535; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy535: + YYDEBUG(535, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy507; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy536; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy536: + YYDEBUG(536, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy508; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych <= 'a') goto yy537; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy537: - YYDEBUG(537, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(537, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; +yy538: + YYDEBUG(538, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy509; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'd') goto yy538; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy538: - YYDEBUG(538, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'S') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy510; + if (yych <= 'T') goto yy518; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 's') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'a') goto yy539; - if(yych <= 'z') goto yy151; - goto yy3; + if (yych <= 't') goto yy547; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy539: - YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; + YYDEBUG(539, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + goto yy515; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy544; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy540: - YYDEBUG(540, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(540, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'S') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'T') goto yy520; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 's') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 't') goto yy549; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy139; + goto yy512; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy541; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy541: - YYDEBUG(541, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy517; - } + YYDEBUG(541, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy546; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + goto yy513; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy542; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy542: - YYDEBUG(542, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy139; - goto yy514; - } + YYDEBUG(542, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy543; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy514; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy543; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy543: - YYDEBUG(543, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - goto yy515; - } + YYDEBUG(543, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy544; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy160; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy247; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy544: - YYDEBUG(544, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy516; - } + YYDEBUG(544, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy545; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy140; + goto yy516; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy545; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy545: - YYDEBUG(545, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy160; - } + YYDEBUG(545, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy247; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy517; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy546; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy546: - YYDEBUG(546, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy140; - goto yy518; - } + YYDEBUG(546, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ')') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy161; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy547; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= ' ') goto yy161; + if (yych <= '(') goto yy3; + goto yy136; + } + } else { + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy3; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy547: - YYDEBUG(547, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(547, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy519; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'd') goto yy548; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy548: - YYDEBUG(548, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ')') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy161; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy140; } else { - if(yych <= ' ') goto yy161; - if(yych <= '(') goto yy3; - goto yy136; + if (yych <= 'E') goto yy519; + if (yych <= 'Z') goto yy140; + goto yy303; } } else { - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy149; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy151; - goto yy3; + if (yych <= 'e') goto yy548; + if (yych <= 'z') goto yy149; + goto yy303; } } -yy549: - YYDEBUG(549, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } +yy548: + YYDEBUG(548, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy140; - } else { - if(yych <= 'E') goto yy521; - if(yych <= 'Z') goto yy140; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy149; - } else { - if(yych <= 'e') goto yy550; - if(yych <= 'z') goto yy149; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy141; + goto yy520; } -yy550: - YYDEBUG(550, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy141; - goto yy522; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy551; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'm') goto yy549; + if (yych <= 'z') goto yy150; + goto yy3; } -yy551: - YYDEBUG(551, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'A') goto yy3; - goto yy523; - } + } +yy549: + YYDEBUG(549, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy552; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'A') goto yy3; + goto yy521; } -yy552: - YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy524; - if(yych != 'e') goto yy152; - YYDEBUG(553, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy485; - goto yy152; -yy554: - YYDEBUG(554, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy562; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'g') goto yy562; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'b') goto yy550; + if (yych <= 'z') goto yy151; + goto yy3; } -yy555: - YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy138; - goto yy559; - } + } +yy550: + YYDEBUG(550, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy522; + if (yych != 'e') goto yy152; + YYDEBUG(551, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy483; + goto yy152; +yy552: + YYDEBUG(552, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'r') goto yy559; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy560; } -yy556: - YYDEBUG(556, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy138; - } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'o') goto yy557; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'g') goto yy560; + if (yych <= 'z') goto yy138; + goto yy3; } -yy557: - YYDEBUG(557, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } +yy553: + YYDEBUG(553, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy138; + goto yy557; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy558; - if(yych <= 'z') goto yy139; + if (yych <= 'r') goto yy557; + if (yych <= 'z') goto yy138; + goto yy3; } -yy558: - YYDEBUG(558, *YYCURSOR); -#line 1382 "ext/date/lib/parse_date.re" - { + } +yy554: + YYDEBUG(554, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy138; + } + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'o') goto yy555; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy555: + YYDEBUG(555, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy556; + if (yych <= 'z') goto yy139; + } +yy556: + YYDEBUG(556, *YYCURSOR); +#line 1383 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("ago"); TIMELIB_INIT; s->time->relative.y = 0 - s->time->relative.y; @@ -9597,2603 +9557,2603 @@ yy558: TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 9601 "ext/date/lib/parse_date.c" -yy559: - YYDEBUG(559, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } +#line 9561 "ext/date/lib/parse_date.c" +yy557: + YYDEBUG(557, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'I') goto yy139; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'h') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'i') goto yy560; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy560: - YYDEBUG(560, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy140; + if (yych != 'I') goto yy139; } } else { - if(yych <= 'k') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'h') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'l') goto yy561; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'i') goto yy558; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy561: - YYDEBUG(561, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } +yy558: + YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy140; + } + } else { + if (yych <= 'k') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'l') goto yy559; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy559: + YYDEBUG(559, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy141; + goto yy303; + } + } +yy560: + YYDEBUG(560, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych == ' ') goto yy305; goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy141; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy562: - YYDEBUG(562, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych != 'U') goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'U') goto yy139; - } + if (yych <= 't') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'u') goto yy563; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= 'u') goto yy561; + if (yych <= 'z') goto yy139; + goto yy303; } } + } +yy561: + YYDEBUG(561, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 's') goto yy562; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy562: + YYDEBUG(562, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 't') goto yy563; + if (yych <= 'z') goto yy141; + goto yy3; + } + } yy563: - YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - } + YYDEBUG(563, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 's') goto yy564; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych == ' ') goto yy305; + goto yy303; + } + } else { + if (yych <= '.') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } else { + if (yych <= '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } + } yy564: - YYDEBUG(564, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(564, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy565; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy138; + goto yy560; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy571; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy565: - YYDEBUG(565, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + YYDEBUG(565, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '.') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } else { - if(yych <= '/') goto yy303; - if(yych <= '9') goto yy305; - goto yy303; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy138; + goto yy557; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy568; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy566: - YYDEBUG(566, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy138; - goto yy562; - } + YYDEBUG(566, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy573; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy138; + goto yy555; } -yy567: - YYDEBUG(567, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy138; - goto yy559; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy570; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == 'o') goto yy567; + if (yych <= 'z') goto yy143; + goto yy3; } -yy568: - YYDEBUG(568, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy138; - goto yy557; - } + } +yy567: + YYDEBUG(567, *YYCURSOR); + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy556; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy569; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy556; } -yy569: - YYDEBUG(569, *YYCURSOR); - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy558; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy558; - } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy556; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy558; - goto yy144; - } else { - if(yych <= '`') goto yy558; - if(yych <= 'z') goto yy148; - goto yy558; - } + if (yych <= '`') goto yy556; + if (yych <= 'z') goto yy148; + goto yy556; } -yy570: - YYDEBUG(570, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy568: + YYDEBUG(568, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'H') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'I') goto yy560; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'h') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'i') goto yy571; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy571: - YYDEBUG(571, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'H') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy140; - goto yy561; + if (yych <= 'I') goto yy558; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'h') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 'l') goto yy572; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'i') goto yy569; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy572: - YYDEBUG(572, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } + } +yy569: + YYDEBUG(569, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy141; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy150; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy140; + goto yy559; } -yy573: - YYDEBUG(573, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'T') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'U') goto yy563; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 't') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'u') goto yy574; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych == 'l') goto yy570; + if (yych <= 'z') goto yy149; + goto yy3; } -yy574: - YYDEBUG(574, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - goto yy564; - } + } +yy570: + YYDEBUG(570, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy141; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych == 's') goto yy575; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy150; + goto yy303; } } -yy575: - YYDEBUG(575, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } +yy571: + YYDEBUG(571, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy565; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 't') goto yy576; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy576: - YYDEBUG(576, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } else { + if (yych <= '^') { + if (yych <= 'T') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych <= 'U') goto yy561; + if (yych <= 'Z') goto yy139; goto yy303; } } else { - if(yych <= '^') { - if(yych == '/') goto yy144; - if(yych <= '9') goto yy305; - goto yy303; + if (yych <= 't') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy151; + if (yych <= 'u') goto yy572; + if (yych <= 'z') goto yy148; goto yy303; } } -yy577: - YYDEBUG(577, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy138; - goto yy591; - } + } +yy572: + YYDEBUG(572, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'b') goto yy591; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + goto yy562; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy573; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy573: + YYDEBUG(573, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy563; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy574; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy574: + YYDEBUG(574, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '^') { + if (yych == '/') goto yy144; + if (yych <= '9') goto yy305; + goto yy303; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy151; + goto yy303; + } + } +yy575: + YYDEBUG(575, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy138; + goto yy589; + } + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'b') goto yy589; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy576: + YYDEBUG(576, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych == 'F') goto yy586; + if (yych <= 'Q') goto yy138; + goto yy585; + } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'e') goto yy138; + goto yy586; + } else { + if (yych == 'r') goto yy585; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy577: + YYDEBUG(577, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy138; + goto yy582; + } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'u') goto yy582; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy578: - YYDEBUG(578, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'F') goto yy588; - if(yych <= 'Q') goto yy138; - goto yy587; - } + YYDEBUG(578, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'e') goto yy138; - goto yy588; - } else { - if(yych == 'r') goto yy587; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy138; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'i') goto yy579; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy579: - YYDEBUG(579, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy138; - goto yy584; - } + YYDEBUG(579, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'u') goto yy584; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy580; + if (yych <= 'z') goto yy139; + goto yy276; + } + } yy580: - YYDEBUG(580, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy138; - } + YYDEBUG(580, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'i') goto yy581; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy581; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy581: - YYDEBUG(581, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(581, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy582; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy582: - YYDEBUG(582, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy583; - if(yych <= 'z') goto yy140; - goto yy3; - } + YYDEBUG(582, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'r') goto yy583; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy583: - YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(583, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy584; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy584: - YYDEBUG(584, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - } + YYDEBUG(584, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'r') goto yy585; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy141; + goto yy517; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'h') goto yy517; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy585: - YYDEBUG(585, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - } + YYDEBUG(585, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 't') goto yy586; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy139; + goto yy588; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 's') goto yy588; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy586: - YYDEBUG(586, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy141; - goto yy519; - } + YYDEBUG(586, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'h') goto yy519; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy587; + if (yych <= 'z') goto yy139; + goto yy3; } + } yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy139; - goto yy590; - } + YYDEBUG(587, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 's') goto yy590; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy588: - YYDEBUG(588, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(588, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy589; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 't') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy589: - YYDEBUG(589, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + YYDEBUG(589, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy590: - YYDEBUG(590, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; + if (yych != 'R') goto yy139; } } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'q') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 't') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'r') goto yy590; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy591: - YYDEBUG(591, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy590: + YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'R') goto yy139; - } - } else { - if(yych <= 'q') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'r') goto yy592; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy140; } -yy592: - YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy140; - } + } else { + if (yych <= 't') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 't') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'u') goto yy593; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'u') goto yy591; + if (yych <= 'z') goto yy140; + goto yy3; } -yy593: - YYDEBUG(593, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy594; - if(yych <= 'z') goto yy141; - goto yy3; - } + } +yy591: + YYDEBUG(591, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + goto yy3; + } else { + if (yych <= 'a') goto yy592; + if (yych <= 'z') goto yy141; + goto yy3; } + } +yy592: + YYDEBUG(592, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Q') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'R') goto yy593; + if (yych != 'r') goto yy3; + } +yy593: + YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy315; + if (yych == 'y') goto yy315; + goto yy53; yy594: - YYDEBUG(594, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Q') { - if(yych == ')') goto yy136; + YYDEBUG(594, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy138; + goto yy589; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; goto yy3; } else { - if(yych <= 'R') goto yy595; - if(yych != 'r') goto yy3; + if (yych == 'b') goto yy608; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy595: - YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy315; - if(yych == 'y') goto yy315; - goto yy53; -yy596: - YYDEBUG(596, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; + YYDEBUG(595, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; + } else { + if (yych <= 'E') { + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'F') goto yy586; + if (yych <= 'Q') goto yy138; + goto yy585; + } + } + } else { + if (yych <= 'e') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy138; - goto yy591; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'q') { + if (yych <= 'f') goto yy605; + goto yy143; } else { - if(yych == 'b') goto yy610; - if(yych <= 'z') goto yy143; + if (yych <= 'r') goto yy604; + if (yych <= 'z') goto yy143; goto yy3; } } -yy597: - YYDEBUG(597, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'E') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'F') goto yy588; - if(yych <= 'Q') goto yy138; - goto yy587; - } - } + } +yy596: + YYDEBUG(596, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'e') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'q') { - if(yych <= 'f') goto yy607; - goto yy143; - } else { - if(yych <= 'r') goto yy606; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy138; + goto yy582; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy601; + if (yych <= 'z') goto yy143; + goto yy3; + } + } +yy597: + YYDEBUG(597, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy138; + goto yy579; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy598; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy598: - YYDEBUG(598, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy138; - goto yy584; - } + YYDEBUG(598, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy603; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy580; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy599; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy599: - YYDEBUG(599, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy138; - goto yy581; - } + YYDEBUG(599, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy600; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy581; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy600; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy600: - YYDEBUG(600, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy582; - } + YYDEBUG(600, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy601; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy601: - YYDEBUG(601, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy583; - } + YYDEBUG(601, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy602; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; + goto yy583; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy602; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy602: - YYDEBUG(602, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(602, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy584; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy603; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy603: - YYDEBUG(603, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - goto yy585; - } + YYDEBUG(603, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy604; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy141; + goto yy517; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy546; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy604: - YYDEBUG(604, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy586; - } + YYDEBUG(604, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy605; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy139; + goto yy588; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy607; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy605: - YYDEBUG(605, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy141; - goto yy519; - } + YYDEBUG(605, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy548; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy587; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy606; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy606: - YYDEBUG(606, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy139; - goto yy590; - } + YYDEBUG(606, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy609; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy607: - YYDEBUG(607, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy589; - } + YYDEBUG(607, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy608; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy608: - YYDEBUG(608, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(608, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy609: - YYDEBUG(609, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'Q') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy140; - goto yy263; + if (yych <= 'R') goto yy590; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'q') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych == 't') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'r') goto yy609; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy609: + YYDEBUG(609, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy140; + goto yy591; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'u') goto yy610; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy610: - YYDEBUG(610, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(610, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'Q') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'R') goto yy592; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'q') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'r') goto yy611; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy592; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy611; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy611: - YYDEBUG(611, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'T') goto yy140; - goto yy593; - } + YYDEBUG(611, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'u') goto yy612; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'Q') goto yy3; + goto yy593; } -yy612: - YYDEBUG(612, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy594; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy613; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 'r') goto yy612; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy612: + YYDEBUG(612, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy315; + if (yych == 'y') goto yy483; + goto yy152; yy613: - YYDEBUG(613, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'Q') goto yy3; - goto yy595; - } + YYDEBUG(613, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy614; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == 'L') goto yy620; + if (yych <= 'M') goto yy138; + goto yy619; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'k') goto yy138; + goto yy620; + } else { + if (yych == 'n') goto yy619; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy315; - if(yych == 'y') goto yy485; - goto yy152; + YYDEBUG(614, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy615; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy615: - YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(615, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych == 'L') goto yy622; - if(yych <= 'M') goto yy138; - goto yy621; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'k') goto yy138; - goto yy622; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych == 'n') goto yy621; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy616: - YYDEBUG(616, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; + if (yych != 'U') goto yy139; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 't') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'n') goto yy617; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'u') goto yy616; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy617: - YYDEBUG(617, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } +yy616: + YYDEBUG(616, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'U') goto yy139; - } - } else { - if(yych <= 't') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'u') goto yy618; - if(yych <= 'z') goto yy139; - goto yy303; - } - } - } -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy619; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'a') goto yy617; + if (yych <= 'z') goto yy140; + goto yy3; } -yy619: - YYDEBUG(619, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + } +yy617: + YYDEBUG(617, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy620; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; } -yy620: - YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Y') goto yy315; - if(yych == 'y') goto yy315; + if (yych <= 'r') goto yy618; + if (yych <= 'z') goto yy141; goto yy3; } -yy621: - YYDEBUG(621, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy618: + YYDEBUG(618, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy315; + if (yych == 'y') goto yy315; + goto yy3; + } +yy619: + YYDEBUG(619, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'E') goto yy623; - goto yy139; - } + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'e') goto yy623; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy622: - YYDEBUG(622, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } + if (yych == 'E') goto yy621; + goto yy139; } } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'Y') goto yy139; - } + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'x') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'y') goto yy623; - if(yych <= 'z') goto yy139; - goto yy303; - } + if (yych <= 'e') goto yy621; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy623: - YYDEBUG(623, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy303; + } +yy620: + YYDEBUG(620, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych == ' ') goto yy305; goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy140; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy624: - YYDEBUG(624, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= 'K') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'L') goto yy622; - if(yych <= 'M') goto yy138; - goto yy621; - } + if (yych != 'Y') goto yy139; } } else { - if(yych <= 'k') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } + if (yych <= 'x') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'm') { - if(yych <= 'l') goto yy631; - goto yy143; - } else { - if(yych <= 'n') goto yy630; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'y') goto yy621; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy625: - YYDEBUG(625, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy617; - } + } +yy621: + YYDEBUG(621, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy303; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy303; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy626; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy140; + goto yy303; } -yy626: - YYDEBUG(626, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + } +yy622: + YYDEBUG(622, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '^') { - if(yych <= 'T') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'U') goto yy618; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 'K') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych <= 't') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'u') goto yy627; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'L') goto yy620; + if (yych <= 'M') goto yy138; + goto yy619; } } -yy627: - YYDEBUG(627, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'k') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy619; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; + if (yych <= 'm') { + if (yych <= 'l') goto yy629; + goto yy143; } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy628; - if(yych <= 'z') goto yy149; + if (yych <= 'n') goto yy628; + if (yych <= 'z') goto yy143; goto yy3; } } -yy628: - YYDEBUG(628, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy620; - } + } +yy623: + YYDEBUG(623, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy629; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy615; } -yy629: - YYDEBUG(629, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy315; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy485; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == 'n') goto yy624; + if (yych <= 'z') goto yy143; + goto yy3; } -yy630: - YYDEBUG(630, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } +yy624: + YYDEBUG(624, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy623; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy632; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy631: - YYDEBUG(631, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } + } else { + if (yych <= '^') { + if (yych <= 'T') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } + if (yych <= 'U') goto yy616; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '^') { - if(yych <= 'X') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'Y') goto yy623; - if(yych <= 'Z') goto yy139; - goto yy303; - } + if (yych <= 't') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'x') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'y') goto yy632; - if(yych <= 'z') goto yy148; - goto yy303; - } + if (yych <= 'u') goto yy625; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy632: - YYDEBUG(632, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy305; - } + } +yy625: + YYDEBUG(625, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy140; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy149; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy617; } -yy633: - YYDEBUG(633, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy626; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy626: + YYDEBUG(626, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy618; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy627; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy627: + YYDEBUG(627, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy315; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy483; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy628: + YYDEBUG(628, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy305; } } -yy634: - YYDEBUG(634, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; - goto yy3; + if (yych <= 'E') goto yy621; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy139; - goto yy3; + if (yych <= 'e') goto yy630; + if (yych <= 'z') goto yy148; + goto yy303; } } -yy635: - YYDEBUG(635, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; + } +yy629: + YYDEBUG(629, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy305; } } - YYDEBUG(636, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } else { + if (yych <= '^') { + if (yych <= 'X') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= 'Y') goto yy621; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; - goto yy139; + if (yych <= 'x') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'Z') { - if(yych >= 'J') goto yy139; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'y') goto yy630; + if (yych <= 'z') goto yy148; + goto yy303; } } - YYDEBUG(637, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; - } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; - goto yy3; - } + } +yy630: + YYDEBUG(630, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy305; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy140; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy149; + goto yy303; } } -yy638: - YYDEBUG(638, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy305; - goto yy3; + } +yy631: + YYDEBUG(631, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy138; } else { - if(yych <= ' ') goto yy305; - if(yych == ')') goto yy136; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; goto yy3; } + } + } +yy632: + YYDEBUG(632, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; } else { - if(yych <= '@') { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy305; - goto yy3; + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy633: + YYDEBUG(633, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy138; } else { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; goto yy3; } } -yy639: - YYDEBUG(639, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy3; - goto yy305; + } + YYDEBUG(634, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy139; + } else { + if (yych <= 'Z') { + if (yych >= 'J') goto yy139; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy3; - goto yy305; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy139; + goto yy3; } + } + } + YYDEBUG(635, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; + } else { + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy636: + YYDEBUG(636, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy305; + goto yy3; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy3; + if (yych <= ' ') goto yy305; + if (yych == ')') goto yy136; + goto yy3; + } + } else { + if (yych <= '@') { + if (yych == '/') goto yy3; + if (yych <= '9') goto yy305; + goto yy3; + } else { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy637: + YYDEBUG(637, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy3; + goto yy305; + } else { + if (yych == ')') goto yy136; + if (yych <= ',') goto yy3; + goto yy305; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'Z') { + if (yych <= 'I') goto yy632; goto yy138; } else { - if(yych <= 'Z') { - if(yych <= 'I') goto yy634; - goto yy138; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy138; + goto yy3; } } -yy640: - YYDEBUG(640, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } +yy638: + YYDEBUG(638, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '9') { + if (yych <= '/') goto yy3; + goto yy660; + } else { + if (yych <= ':') goto yy645; + if (yych <= 'C') goto yy3; goto yy57; - } else { - if(yych <= '9') { - if(yych <= '/') goto yy3; - goto yy662; - } else { - if(yych <= ':') goto yy647; - if(yych <= 'C') goto yy3; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy641: - YYDEBUG(641, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '3') { - if(yych <= '/') goto yy3; - goto yy662; - } else { - if(yych <= '5') goto yy645; - if(yych <= '9') goto yy646; - goto yy647; - } - } + } +yy639: + YYDEBUG(639, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy3; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy3; - } + if (yych <= '3') { + if (yych <= '/') goto yy3; + goto yy660; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } + if (yych <= '5') goto yy643; + if (yych <= '9') goto yy644; + goto yy645; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy3; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } + if (yych == 'F') goto yy57; + goto yy3; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; + goto yy57; } } } -yy642: - YYDEBUG(642, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= 'C') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= '5') { - if(yych <= '/') goto yy3; - goto yy645; - } else { - if(yych <= '9') goto yy646; - if(yych <= ':') goto yy647; - goto yy3; - } - } - } else { - if(yych <= 'G') { - if(yych == 'E') goto yy3; - if(yych <= 'F') goto yy57; + if (yych == 'f') goto yy57; goto yy3; - } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; - goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy3; + goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy643: - YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(644, *YYCURSOR); - if(yybm[0+yych] & 8) { - goto yy54; - } - if(yych <= ',') { - if(yych == '+') goto yy643; - goto yy53; + } +yy640: + YYDEBUG(640, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '5') { + if (yych <= '/') goto yy3; + goto yy643; + } else { + if (yych <= '9') goto yy644; + if (yych <= ':') goto yy645; + goto yy3; + } + } } else { - if(yych <= '-') goto yy643; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy51; - goto yy53; - } -yy645: - YYDEBUG(645, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; + if (yych <= 'G') { + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy57; + goto yy3; + } else { + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy661; - if(yych <= 'C') goto yy3; + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; goto yy57; } - } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + } + } + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'f') goto yy57; + goto yy3; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy646: - YYDEBUG(646, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } +yy641: + YYDEBUG(641, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(642, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy54; + } + if (yych <= ',') { + if (yych == '+') goto yy641; + goto yy53; + } else { + if (yych <= '-') goto yy641; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy51; + goto yy53; + } +yy643: + YYDEBUG(643, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy659; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy649; - if(yych <= 'C') goto yy3; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; + } else { + if (yych == 'g') goto yy3; goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + } + } +yy644: + YYDEBUG(644, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy647; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; + goto yy57; + } else { + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } + } +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy3; + if (yych <= '5') goto yy646; + if (yych <= '9') goto yy136; + goto yy3; +yy646: + YYDEBUG(646, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy136; + goto yy3; yy647: - YYDEBUG(647, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy3; - if(yych <= '5') goto yy648; - if(yych <= '9') goto yy136; - goto yy3; + YYDEBUG(647, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych >= ':') goto yy57; yy648: - YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy136; - goto yy3; + YYDEBUG(648, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych != '-') goto yy57; yy649: - YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych >= ':') goto yy57; + YYDEBUG(649, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy650; + if (yych <= '1') goto yy651; + goto yy53; yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych != '-') goto yy57; + YYDEBUG(650, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy652; + goto yy53; yy651: - YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy652; - if(yych <= '1') goto yy653; - goto yy53; + YYDEBUG(651, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy652: - YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy654; - goto yy53; -yy653: - YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + YYDEBUG(652, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; + YYDEBUG(653, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy654; + if (yych <= '2') goto yy655; + if (yych <= '3') goto yy656; + goto yy53; yy654: - YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; - YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy656; - if(yych <= '2') goto yy657; - if(yych <= '3') goto yy658; - goto yy53; + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy657; + goto yy53; +yy655: + YYDEBUG(655, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy657; + goto yy53; yy656: - YYDEBUG(656, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy659; - goto yy53; + YYDEBUG(656, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy659; - goto yy53; + YYDEBUG(657, *YYCURSOR); + ++YYCURSOR; yy658: - YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; -yy659: - YYDEBUG(659, *YYCURSOR); - ++YYCURSOR; -yy660: - YYDEBUG(660, *YYCURSOR); + YYDEBUG(658, *YYCURSOR); #line 1097 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -12203,568 +12163,568 @@ yy660: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 12207 "ext/date/lib/parse_date.c" -yy661: - YYDEBUG(661, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; +#line 12167 "ext/date/lib/parse_date.c" +yy659: + YYDEBUG(659, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy648; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy650; - if(yych <= 'C') goto yy3; - goto yy57; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'g') goto yy3; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; - goto yy3; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy662: - YYDEBUG(662, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= 'C') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '5') { - if(yych <= '/') goto yy3; - } else { - if(yych <= '9') goto yy661; - if(yych <= ':') goto yy647; - goto yy3; - } - } - } else { - if(yych <= 'G') { - if(yych == 'E') goto yy3; - if(yych <= 'F') goto yy57; + } +yy660: + YYDEBUG(660, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '5') { + if (yych <= '/') goto yy3; + } else { + if (yych <= '9') goto yy659; + if (yych <= ':') goto yy645; goto yy3; - } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy3; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy3; - goto yy57; - } } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy3; - goto yy57; - } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy3; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy3; - } - } + if (yych <= 'G') { + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy57; + goto yy3; } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy3; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy3; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy3; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy3; + goto yy57; } } } - YYDEBUG(663, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; - goto yy57; - } else { - if(yych <= '/') goto yy3; - if(yych <= '9') goto yy664; - if(yych <= 'C') goto yy3; - goto yy57; - } - } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy3; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'f') goto yy57; + goto yy3; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } -yy664: - YYDEBUG(664, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy3; + } + YYDEBUG(661, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy662; + if (yych <= 'C') goto yy3; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; goto yy57; } else { - if(yych == '-') goto yy651; - if(yych <= 'C') goto yy3; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy3; + } else { + if (yych == 'g') goto yy3; goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy3; - goto yy57; - } else { - if(yych <= 'R') goto yy3; - if(yych <= 'T') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } + } + } +yy662: + YYDEBUG(662, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy3; + goto yy57; + } else { + if (yych == '-') goto yy649; + if (yych <= 'C') goto yy3; + goto yy57; + } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy3; - if(yych <= 'Y') goto yy57; + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy3; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy3; + goto yy57; + } else { + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy57; + goto yy3; + } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy57; + goto yy3; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; goto yy3; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy3; - } else { - if(yych == 'g') goto yy3; - goto yy57; - } + if (yych == 'g') goto yy3; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy3; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy3; + if (yych <= 'w') { + if (yych <= 'v') goto yy3; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy3; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy3; - } + if (yych == 'y') goto yy57; + goto yy3; } } } + } +yy663: + YYDEBUG(663, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy665; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy665; +yy664: + YYDEBUG(664, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; yy665: - YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy667; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy667; + YYDEBUG(665, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy664; + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy683; + case 'D': + case 'd': goto yy669; + case 'F': + case 'f': goto yy670; + case 'H': + case 'h': goto yy60; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy668; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'P': + case 'p': goto yy687; + case 'S': + case 's': goto yy666; + case 'T': + case 't': goto yy65; + case 'V': goto yy680; + case 'W': + case 'w': goto yy62; + case 'X': goto yy681; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } yy666: - YYDEBUG(666, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(666, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1229; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy1229; + if (yych == 'u') goto yy122; + goto yy53; + } + } yy667: - YYDEBUG(667, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy666; - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy685; - case 'D': - case 'd': goto yy671; - case 'F': - case 'f': goto yy672; - case 'H': - case 'h': goto yy60; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy670; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'P': - case 'p': goto yy689; - case 'S': - case 's': goto yy668; - case 'T': - case 't': goto yy65; - case 'V': goto yy682; - case 'W': - case 'w': goto yy62; - case 'X': goto yy683; - case 'Y': - case 'y': goto yy64; - default: goto yy53; + YYDEBUG(667, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '`') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1229; + if (yych == 'U') goto yy122; + goto yy53; + } + } else { + if (yych <= 'e') { + if (yych <= 'a') goto yy123; + if (yych <= 'd') goto yy53; + goto yy1229; + } else { + if (yych <= 's') goto yy53; + if (yych <= 't') goto yy912; + if (yych <= 'u') goto yy122; + goto yy53; } + } yy668: - YYDEBUG(668, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1224; - if(yych <= 'T') goto yy53; - goto yy122; - } + YYDEBUG(668, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'A') goto yy779; + goto yy53; } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; - } else { - if(yych <= 'e') goto yy1224; - if(yych == 'u') goto yy122; - goto yy53; - } + if (yych <= 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } + } else { + if (yych <= 'h') { + if (yych == 'a') goto yy779; + goto yy53; + } else { + if (yych <= 'i') goto yy114; + if (yych == 'o') goto yy113; + goto yy53; } + } yy669: - YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '`') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1224; - if(yych == 'U') goto yy122; - goto yy53; - } + YYDEBUG(669, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy110; + if (yych <= 'D') goto yy53; + goto yy766; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy110; } else { - if(yych <= 'e') { - if(yych <= 'a') goto yy123; - if(yych <= 'd') goto yy53; - goto yy1224; - } else { - if(yych <= 's') goto yy53; - if(yych <= 't') goto yy913; - if(yych <= 'u') goto yy122; - goto yy53; - } + if (yych == 'e') goto yy766; + goto yy53; } + } yy670: - YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'H') { - if(yych == 'A') goto yy781; - goto yy53; - } else { - if(yych <= 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; - } + YYDEBUG(670, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'N') { + if (yych == 'E') goto yy782; + goto yy53; } else { - if(yych <= 'h') { - if(yych == 'a') goto yy781; - goto yy53; - } else { - if(yych <= 'i') goto yy114; - if(yych == 'o') goto yy113; - goto yy53; - } + if (yych <= 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; } -yy671: - YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych == 'A') goto yy110; - if(yych <= 'D') goto yy53; - goto yy768; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy110; - } else { - if(yych == 'e') goto yy768; - goto yy53; - } + } else { + if (yych <= 'n') { + if (yych == 'e') goto yy782; + goto yy53; + } else { + if (yych <= 'o') goto yy83; + if (yych == 'r') goto yy82; + goto yy53; } -yy672: - YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'N') { - if(yych == 'E') goto yy784; - goto yy53; - } else { - if(yych <= 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; - } + } +yy671: + YYDEBUG(671, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'H') goto yy66; + if (yych <= 'T') goto yy53; + goto yy67; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy53; + goto yy1228; } else { - if(yych <= 'n') { - if(yych == 'e') goto yy784; - goto yy53; - } else { - if(yych <= 'o') goto yy83; - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'u') goto yy67; + goto yy53; } + } +yy672: + YYDEBUG(672, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy925; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy924; + goto yy57; yy673: - YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'H') goto yy66; - if(yych <= 'T') goto yy53; - goto yy67; - } else { - if(yych <= 'h') { - if(yych <= 'g') goto yy53; - goto yy1223; - } else { - if(yych == 'u') goto yy67; - goto yy53; - } - } + YYDEBUG(673, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'c') { + if (yych == 'O') goto yy717; + goto yy53; + } else { + if (yych <= 'd') goto yy912; + if (yych == 'o') goto yy717; + goto yy53; + } yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy920; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy919; - goto yy57; + YYDEBUG(674, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy912; + goto yy53; yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'c') { - if(yych == 'O') goto yy719; - goto yy53; - } else { - if(yych <= 'd') goto yy913; - if(yych == 'o') goto yy719; - goto yy53; - } + YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': + case '1': + case '2': goto yy852; + case '3': goto yy854; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy855; + case 'A': + case 'a': goto yy859; + case 'D': + case 'd': goto yy863; + case 'F': + case 'f': goto yy857; + case 'J': + case 'j': goto yy856; + case 'M': + case 'm': goto yy858; + case 'N': + case 'n': goto yy862; + case 'O': + case 'o': goto yy861; + case 'S': + case 's': goto yy860; + default: goto yy53; + } yy676: - YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy913; - goto yy53; + YYDEBUG(676, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy802; + case '1': goto yy803; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy804; + case 'A': + case 'a': goto yy808; + case 'D': + case 'd': goto yy812; + case 'F': + case 'f': goto yy806; + case 'J': + case 'j': goto yy805; + case 'M': + case 'm': goto yy807; + case 'N': + case 'n': goto yy811; + case 'O': + case 'o': goto yy810; + case 'S': + case 's': goto yy809; + default: goto yy765; + } yy677: - YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': - case '1': - case '2': goto yy853; - case '3': goto yy855; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy856; - case 'A': - case 'a': goto yy860; - case 'D': - case 'd': goto yy864; - case 'F': - case 'f': goto yy858; - case 'J': - case 'j': goto yy857; - case 'M': - case 'm': goto yy859; - case 'N': - case 'n': goto yy863; - case 'O': - case 'o': goto yy862; - case 'S': - case 's': goto yy861; - default: goto yy53; - } + YYDEBUG(677, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '1') { + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy755; + goto yy756; + } else { + if (yych <= '5') goto yy757; + if (yych <= '9') goto yy758; + goto yy765; + } yy678: - YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy803; - case '1': goto yy804; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy805; - case 'A': - case 'a': goto yy809; - case 'D': - case 'd': goto yy813; - case 'F': - case 'f': goto yy807; - case 'J': - case 'j': goto yy806; - case 'M': - case 'm': goto yy808; - case 'N': - case 'n': goto yy812; - case 'O': - case 'o': goto yy811; - case 'S': - case 's': goto yy810; - default: goto yy767; - } -yy679: - YYDEBUG(679, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '1') { - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy757; - goto yy758; + YYDEBUG(678, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; } else { - if(yych <= '5') goto yy759; - if(yych <= '9') goto yy760; - goto yy767; + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '.') goto yy719; } -yy680: - YYDEBUG(680, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '.') goto yy721; - } + } else { + if (yych <= 'U') { + if (yych <= '9') goto yy721; + if (yych == 'I') goto yy754; } else { - if(yych <= 'U') { - if(yych <= '9') goto yy723; - if(yych == 'I') goto yy756; - } else { - if(yych == 'W') goto yy681; - if(yych <= 'X') goto yy729; - } + if (yych == 'W') goto yy679; + if (yych <= 'X') goto yy727; } -yy681: - YYDEBUG(681, *YYCURSOR); -#line 1225 "ext/date/lib/parse_date.re" - { + } +yy679: + YYDEBUG(679, *YYCURSOR); +#line 1226 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datenoyearrev"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -12774,149 +12734,149 @@ yy681: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 12778 "ext/date/lib/parse_date.c" -yy682: - YYDEBUG(682, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } +#line 12738 "ext/date/lib/parse_date.c" +yy680: + YYDEBUG(680, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy754; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy683: - YYDEBUG(683, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy753; - goto yy681; - } + if (yych == 'I') goto yy752; + goto yy679; } -yy684: - YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy746; - if(yych <= 'T') goto yy53; - goto yy745; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy746; - } else { - if(yych == 'u') goto yy745; - goto yy53; - } + } +yy681: + YYDEBUG(681, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; + } else { + if (yych == ' ') goto yy719; + goto yy679; } -yy685: - YYDEBUG(685, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= 'L') { - if(yych == '.') goto yy690; - goto yy53; - } else { - if(yych <= 'M') goto yy691; - if(yych == 'P') goto yy739; - goto yy53; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= 'o') { - if(yych <= 'U') goto yy738; - if(yych == 'm') goto yy691; - goto yy53; - } else { - if(yych <= 'p') goto yy739; - if(yych == 'u') goto yy738; - goto yy53; - } + if (yych == 'I') goto yy751; + goto yy679; } -yy686: - YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy733; - if(yych == 'c') goto yy733; - goto yy53; -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy719; - if(yych == 'o') goto yy719; - goto yy53; -yy688: - YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy695; - if(yych <= '9') goto yy697; - goto yy53; -yy689: - YYDEBUG(689, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } +yy682: + YYDEBUG(682, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy744; + if (yych <= 'T') goto yy53; + goto yy743; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy744; } else { - if(yych <= 'M') goto yy691; - if(yych == 'm') goto yy691; + if (yych == 'u') goto yy743; goto yy53; } -yy690: - YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy691; - if(yych != 'm') goto yy53; -yy691: - YYDEBUG(691, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; + } +yy683: + YYDEBUG(683, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych == '.') goto yy688; goto yy53; } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + if (yych <= 'M') goto yy689; + if (yych == 'P') goto yy737; + goto yy53; } - YYDEBUG(692, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; + } else { + if (yych <= 'o') { + if (yych <= 'U') goto yy736; + if (yych == 'm') goto yy689; + goto yy53; } else { - if(yych != ' ') goto yy53; + if (yych <= 'p') goto yy737; + if (yych == 'u') goto yy736; + goto yy53; } -yy693: - YYDEBUG(693, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(694, *YYCURSOR); + } +yy684: + YYDEBUG(684, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy731; + if (yych == 'c') goto yy731; + goto yy53; +yy685: + YYDEBUG(685, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy717; + if (yych == 'o') goto yy717; + goto yy53; +yy686: + YYDEBUG(686, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy693; + if (yych <= '9') goto yy695; + goto yy53; +yy687: + YYDEBUG(687, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy689; + if (yych == 'm') goto yy689; + goto yy53; + } +yy688: + YYDEBUG(688, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy689; + if (yych != 'm') goto yy53; +yy689: + YYDEBUG(689, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(690, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + } else { + if (yych != ' ') goto yy53; + } +yy691: + YYDEBUG(691, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(692, *YYCURSOR); #line 973 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); TIMELIB_INIT; TIMELIB_HAVE_TIME(); @@ -12931,21 +12891,21 @@ yy693: TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 12935 "ext/date/lib/parse_date.c" -yy695: - YYDEBUG(695, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy698; - } else { - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - } -yy696: - YYDEBUG(696, *YYCURSOR); +#line 12895 "ext/date/lib/parse_date.c" +yy693: + YYDEBUG(693, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy696; + } else { + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + } +yy694: + YYDEBUG(694, *YYCURSOR); #line 990 "ext/date/lib/parse_date.re" - { + { int tz_not_found; DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); TIMELIB_INIT; @@ -12969,276 +12929,276 @@ yy696: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 12973 "ext/date/lib/parse_date.c" +#line 12933 "ext/date/lib/parse_date.c" +yy695: + YYDEBUG(695, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy696; + if (yych != ':') goto yy694; +yy696: + YYDEBUG(696, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy697; + if (yych <= '6') goto yy698; + if (yych <= '9') goto yy699; + goto yy53; yy697: - YYDEBUG(697, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy698; - if(yych != ':') goto yy696; + YYDEBUG(697, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy703; + goto yy694; yy698: - YYDEBUG(698, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy699; - if(yych <= '6') goto yy700; - if(yych <= '9') goto yy701; - goto yy53; + YYDEBUG(698, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych == '0') goto yy703; + goto yy694; yy699: - YYDEBUG(699, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy705; - goto yy696; + YYDEBUG(699, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '.') goto yy694; yy700: - YYDEBUG(700, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych == '0') goto yy705; - goto yy696; + YYDEBUG(700, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy701: - YYDEBUG(701, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '.') goto yy696; -yy702: - YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(701, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(702, *YYCURSOR); + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy701; + goto yy694; yy703: - YYDEBUG(703, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(704, *YYCURSOR); - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy703; - goto yy696; -yy705: - YYDEBUG(705, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy696; - } else { - if(yych <= ' ') goto yy706; - if(yych == '.') goto yy702; - goto yy696; - } + YYDEBUG(703, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy694; } else { - if(yych <= '`') { - if(yych <= 'A') goto yy708; - if(yych == 'P') goto yy708; - goto yy696; - } else { - if(yych <= 'a') goto yy708; - if(yych == 'p') goto yy708; - goto yy696; - } - } -yy706: - YYDEBUG(706, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(707, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy706; - goto yy53; - } else { - if(yych <= ' ') goto yy706; - if(yych <= '@') goto yy53; - } - } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy708; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy704; + if (yych == '.') goto yy700; + goto yy694; } -yy708: - YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych <= 'A') goto yy706; + if (yych == 'P') goto yy706; + goto yy694; } else { - if(yych <= 'M') goto yy710; - if(yych == 'm') goto yy710; - goto yy53; + if (yych <= 'a') goto yy706; + if (yych == 'p') goto yy706; + goto yy694; } - YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy710; - if(yych != 'm') goto yy53; -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; + } +yy704: + YYDEBUG(704, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(705, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy704; goto yy53; } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + if (yych <= ' ') goto yy704; + if (yych <= '@') goto yy53; } - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; - goto yy693; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych == ' ') goto yy693; - goto yy53; + if (yych <= 'a') goto yy706; + if (yych != 'p') goto yy53; } -yy712: - YYDEBUG(712, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy713; - if(yych <= 0x1F) goto yy696; - } else { - if(yych == '.') goto yy698; - if(yych <= '9') goto yy696; - goto yy698; - } + } +yy706: + YYDEBUG(706, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy708; + if (yych == 'm') goto yy708; + goto yy53; + } + YYDEBUG(707, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy708; + if (yych != 'm') goto yy53; +yy708: + YYDEBUG(708, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(709, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + goto yy691; + } else { + if (yych == ' ') goto yy691; + goto yy53; + } +yy710: + YYDEBUG(710, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy711; + if (yych <= 0x1F) goto yy694; + } else { + if (yych == '.') goto yy696; + if (yych <= '9') goto yy694; + goto yy696; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy713; + if (yych <= 'O') goto yy694; + goto yy713; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy715; - if(yych <= 'O') goto yy696; - goto yy715; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy713; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy715; - } else { - if(yych == 'p') goto yy715; - goto yy696; - } + if (yych == 'p') goto yy713; + goto yy694; } } -yy713: - YYDEBUG(713, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(714, *YYCURSOR); - if(yych <= 'A') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy713; - goto yy53; - } else { - if(yych <= ' ') goto yy713; - if(yych <= '@') goto yy53; - } + } +yy711: + YYDEBUG(711, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); + yych = *YYCURSOR; + YYDEBUG(712, *YYCURSOR); + if (yych <= 'A') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy711; + goto yy53; } else { - if(yych <= '`') { - if(yych != 'P') goto yy53; - } else { - if(yych <= 'a') goto yy715; - if(yych != 'p') goto yy53; - } + if (yych <= ' ') goto yy711; + if (yych <= '@') goto yy53; } -yy715: - YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych != '.') goto yy53; + } else { + if (yych <= '`') { + if (yych != 'P') goto yy53; } else { - if(yych <= 'M') goto yy717; - if(yych == 'm') goto yy717; - goto yy53; + if (yych <= 'a') goto yy713; + if (yych != 'p') goto yy53; } - YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy717; - if(yych != 'm') goto yy53; + } +yy713: + YYDEBUG(713, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych != '.') goto yy53; + } else { + if (yych <= 'M') goto yy715; + if (yych == 'm') goto yy715; + goto yy53; + } + YYDEBUG(714, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy715; + if (yych != 'm') goto yy53; +yy715: + YYDEBUG(715, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy691; + if (yych == '\t') goto yy691; + goto yy53; + } else { + if (yych <= ' ') goto yy691; + if (yych != '.') goto yy53; + } + YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy691; + if (yych <= 0x08) goto yy53; + goto yy691; + } else { + if (yych == ' ') goto yy691; + goto yy53; + } yy717: - YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x1F) { - if(yych <= 0x00) goto yy693; - if(yych == 0x09) goto yy693; - goto yy53; - } else { - if(yych <= ' ') goto yy693; - if(yych != '.') goto yy53; + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy718; + if (yych != 'v') goto yy53; +yy718: + YYDEBUG(718, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych != '\t') goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; } - YYDEBUG(718, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 0x09) { - if(yych <= 0x00) goto yy693; - if(yych <= 0x08) goto yy53; - goto yy693; + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych == ' ') goto yy693; - goto yy53; + if (yych <= 'E') goto yy723; + if (yych == 'e') goto yy723; + goto yy679; } + } yy719: - YYDEBUG(719, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy720; - if(yych != 'v') goto yy53; + YYDEBUG(719, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; yy720: - YYDEBUG(720, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych != 0x09) goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - } + YYDEBUG(720, *YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy719; + if (yych <= 0x1F) goto yy53; + goto yy719; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy53; + goto yy719; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy725; - if(yych == 'e') goto yy725; - goto yy681; - } + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; } + } yy721: - YYDEBUG(721, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; + YYDEBUG(721, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy722; + if (yych <= '9') goto yy728; yy722: - YYDEBUG(722, *YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy721; - if(yych <= 0x1F) goto yy53; - goto yy721; - } else { - if(yych <= '.') { - if(yych <= ',') goto yy53; - goto yy721; - } else { - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - } - } -yy723: - YYDEBUG(723, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy724; - if(yych <= '9') goto yy730; -yy724: - YYDEBUG(724, *YYCURSOR); -#line 1147 "ext/date/lib/parse_date.re" - { + YYDEBUG(722, *YYCURSOR); +#line 1148 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datefull"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -13250,1414 +13210,1416 @@ yy724: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 13254 "ext/date/lib/parse_date.c" +#line 13214 "ext/date/lib/parse_date.c" +yy723: + YYDEBUG(723, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy724; + if (yych != 'm') goto yy53; +yy724: + YYDEBUG(724, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy725; + if (yych != 'b') goto yy53; yy725: - YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy726; - if(yych != 'm') goto yy53; + YYDEBUG(725, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy726; + if (yych != 'e') goto yy53; yy726: - YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy727; - if(yych != 'b') goto yy53; + YYDEBUG(726, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych != 'r') goto yy53; yy727: - YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy728; - if(yych != 'e') goto yy53; + YYDEBUG(727, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy719; + if (yych <= 0x1F) goto yy679; + goto yy719; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy679; + goto yy719; + } else { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } + } yy728: - YYDEBUG(728, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych != 'r') goto yy53; + YYDEBUG(728, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych >= ':') goto yy722; yy729: - YYDEBUG(729, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy721; - if(yych <= 0x1F) goto yy681; - goto yy721; + YYDEBUG(729, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych >= ':') goto yy722; + YYDEBUG(730, *YYCURSOR); + yych = *++YYCURSOR; + goto yy722; +yy731: + YYDEBUG(731, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy732; + if (yych != 't') goto yy53; +yy732: + YYDEBUG(732, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'N') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= '.') { - if(yych <= ',') goto yy681; - goto yy721; - } else { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } + if (yych <= 'O') goto yy733; + if (yych != 'o') goto yy679; } -yy730: - YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych >= ':') goto yy724; -yy731: - YYDEBUG(731, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych >= ':') goto yy724; - YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - goto yy724; + } yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy734; - if(yych != 't') goto yy53; + YYDEBUG(733, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy734; + if (yych != 'b') goto yy53; yy734: - YYDEBUG(734, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } - } else { - if(yych <= 'N') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'O') goto yy735; - if(yych != 'o') goto yy681; - } - } + YYDEBUG(734, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy735; + if (yych != 'e') goto yy53; yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy736; - if(yych != 'b') goto yy53; + YYDEBUG(735, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy737; - if(yych != 'e') goto yy53; + YYDEBUG(736, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy740; + if (yych == 'g') goto yy740; + goto yy53; yy737: - YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; + YYDEBUG(737, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy738; + if (yych != 'r') goto yy53; yy738: - YYDEBUG(738, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy742; - if(yych == 'g') goto yy742; - goto yy53; + YYDEBUG(738, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'I') goto yy739; + if (yych != 'i') goto yy679; + } + } yy739: - YYDEBUG(739, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy740; - if(yych != 'r') goto yy53; + YYDEBUG(739, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy727; + if (yych == 'l') goto yy727; + goto yy53; yy740: - YYDEBUG(740, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(740, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'I') goto yy741; - if(yych != 'i') goto yy681; - } + if (yych <= 'U') goto yy741; + if (yych != 'u') goto yy679; } + } yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'L') goto yy729; - if(yych == 'l') goto yy729; - goto yy53; + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy742; + if (yych != 's') goto yy53; yy742: - YYDEBUG(742, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(742, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy727; + if (yych == 't') goto yy727; + goto yy53; +yy743: + YYDEBUG(743, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy750; + if (yych <= 'M') goto yy53; + goto yy749; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy750; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy743; - if(yych != 'u') goto yy681; - } + if (yych == 'n') goto yy749; + goto yy53; } -yy743: - YYDEBUG(743, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy744; - if(yych != 's') goto yy53; + } yy744: - YYDEBUG(744, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy729; - if(yych == 't') goto yy729; - goto yy53; + YYDEBUG(744, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy745; + if (yych != 'n') goto yy53; yy745: - YYDEBUG(745, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy752; - if(yych <= 'M') goto yy53; - goto yy751; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy752; - } else { - if(yych == 'n') goto yy751; - goto yy53; - } + YYDEBUG(745, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; } -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy747; - if(yych != 'n') goto yy53; -yy747: - YYDEBUG(747, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy748; - if(yych != 'u') goto yy681; - } + if (yych <= 'U') goto yy746; + if (yych != 'u') goto yy679; } + } +yy746: + YYDEBUG(746, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy747; + if (yych != 'a') goto yy53; +yy747: + YYDEBUG(747, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy748; + if (yych != 'r') goto yy53; yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy749; - if(yych != 'a') goto yy53; + YYDEBUG(748, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy53; yy749: - YYDEBUG(749, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy750; - if(yych != 'r') goto yy53; + YYDEBUG(749, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'E') goto yy727; + if (yych == 'e') goto yy727; + goto yy679; + } + } yy750: - YYDEBUG(750, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy53; + YYDEBUG(750, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'X') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy679; + } + } yy751: - YYDEBUG(751, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(751, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy729; - if(yych == 'e') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy752: - YYDEBUG(752, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= 'X') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy681; - } + if (yych == 'I') goto yy727; + goto yy679; } -yy753: - YYDEBUG(753, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } +yy752: + YYDEBUG(752, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy754: - YYDEBUG(754, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych != 'I') goto yy681; - } + if (yych != 'I') goto yy679; } - YYDEBUG(755, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } + YYDEBUG(753, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy756: - YYDEBUG(756, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '9') { - if(yych <= '.') goto yy721; - if(yych <= '/') goto yy681; - goto yy723; - } else { - if(yych == 'I') goto yy729; - goto yy681; - } + if (yych == 'I') goto yy727; + goto yy679; } -yy757: - YYDEBUG(757, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy802; - if(yych <= ':') goto yy698; - goto yy696; + } +yy754: + YYDEBUG(754, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; + } else { + if (yych == ' ') goto yy719; + goto yy679; } -yy758: - YYDEBUG(758, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - if(yych <= '.') goto yy791; - goto yy696; + } else { + if (yych <= '9') { + if (yych <= '.') goto yy719; + if (yych <= '/') goto yy679; + goto yy721; } else { - if(yych <= '2') goto yy802; - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - goto yy696; + if (yych == 'I') goto yy727; + goto yy679; } + } +yy755: + YYDEBUG(755, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy801; + if (yych <= ':') goto yy696; + goto yy694; + } +yy756: + YYDEBUG(756, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + if (yych <= '.') goto yy788; + goto yy694; + } else { + if (yych <= '2') goto yy801; + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + goto yy694; + } +yy757: + YYDEBUG(757, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy710; + if (yych <= ':') goto yy696; + goto yy694; + } +yy758: + YYDEBUG(758, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy788; + } else { + if (yych == ':') goto yy696; + goto yy694; + } yy759: - YYDEBUG(759, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy712; - if(yych <= ':') goto yy698; - goto yy696; - } + YYDEBUG(759, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy782; + if (yych == 'e') goto yy782; + goto yy53; yy760: - YYDEBUG(760, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy791; - } else { - if(yych == ':') goto yy698; - goto yy696; - } + YYDEBUG(760, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy779; + if (yych == 'a') goto yy779; + goto yy53; yy761: - YYDEBUG(761, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy784; - if(yych == 'e') goto yy784; - goto yy53; + YYDEBUG(761, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy737; + if (yych <= 'T') goto yy53; + goto yy736; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy737; + } else { + if (yych == 'u') goto yy736; + goto yy53; + } + } yy762: - YYDEBUG(762, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy781; - if(yych == 'a') goto yy781; - goto yy53; + YYDEBUG(762, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy772; + if (yych == 'e') goto yy772; + goto yy53; yy763: - YYDEBUG(763, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy739; - if(yych <= 'T') goto yy53; - goto yy738; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy739; - } else { - if(yych == 'u') goto yy738; - goto yy53; - } - } + YYDEBUG(763, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy766; + if (yych == 'e') goto yy766; + goto yy53; yy764: - YYDEBUG(764, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy774; - if(yych == 'e') goto yy774; - goto yy53; + YYDEBUG(764, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; yy765: - YYDEBUG(765, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy768; - if(yych == 'e') goto yy768; - goto yy53; + YYDEBUG(765, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy761; + case 'D': + case 'd': goto yy763; + case 'F': + case 'f': goto yy759; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy760; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'S': + case 's': goto yy762; + case 'V': goto yy680; + case 'X': goto yy681; + default: goto yy53; + } yy766: - YYDEBUG(766, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(766, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy767; + if (yych != 'c') goto yy53; yy767: - YYDEBUG(767, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy763; - case 'D': - case 'd': goto yy765; - case 'F': - case 'f': goto yy761; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy762; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'S': - case 's': goto yy764; - case 'V': goto yy682; - case 'X': goto yy683; - default: goto yy53; + YYDEBUG(767, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; } -yy768: - YYDEBUG(768, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy769; - if(yych != 'c') goto yy53; -yy769: - YYDEBUG(769, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy770; - if(yych != 'e') goto yy681; - } + if (yych <= 'E') goto yy768; + if (yych != 'e') goto yy679; } + } +yy768: + YYDEBUG(768, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy769; + if (yych != 'm') goto yy53; +yy769: + YYDEBUG(769, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy770; + if (yych != 'b') goto yy53; yy770: - YYDEBUG(770, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy771; - if(yych != 'm') goto yy53; + YYDEBUG(770, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy771; + if (yych != 'e') goto yy53; yy771: - YYDEBUG(771, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy772; - if(yych != 'b') goto yy53; + YYDEBUG(771, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy772: - YYDEBUG(772, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy773; - if(yych != 'e') goto yy53; + YYDEBUG(772, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy773; + if (yych != 'p') goto yy53; yy773: - YYDEBUG(773, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; -yy774: - YYDEBUG(774, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy775; - if(yych != 'p') goto yy53; -yy775: - YYDEBUG(775, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(773, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'S') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'S') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'T') goto yy776; - if(yych != 't') goto yy681; - } + if (yych <= 'T') goto yy774; + if (yych != 't') goto yy679; } -yy776: - YYDEBUG(776, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + } +yy774: + YYDEBUG(774, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy777; - if(yych != 'e') goto yy681; - } + if (yych <= 'E') goto yy775; + if (yych != 'e') goto yy679; } + } +yy775: + YYDEBUG(775, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy776; + if (yych != 'm') goto yy53; +yy776: + YYDEBUG(776, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy777; + if (yych != 'b') goto yy53; yy777: - YYDEBUG(777, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy778; - if(yych != 'm') goto yy53; + YYDEBUG(777, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy778; + if (yych != 'e') goto yy53; yy778: - YYDEBUG(778, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy779; - if(yych != 'b') goto yy53; + YYDEBUG(778, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy727; + if (yych == 'r') goto yy727; + goto yy53; yy779: - YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy780; - if(yych != 'e') goto yy53; + YYDEBUG(779, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy780; + if (yych <= 'X') goto yy53; + goto yy727; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy727; + goto yy53; + } + } yy780: - YYDEBUG(780, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy729; - if(yych == 'r') goto yy729; - goto yy53; -yy781: - YYDEBUG(781, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy782; - if(yych <= 'X') goto yy53; - goto yy729; + YYDEBUG(780, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'B') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy729; - goto yy53; - } + if (yych <= 'C') goto yy781; + if (yych != 'c') goto yy679; } + } +yy781: + YYDEBUG(781, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy727; + if (yych == 'h') goto yy727; + goto yy53; yy782: - YYDEBUG(782, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } + YYDEBUG(782, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy783; + if (yych != 'b') goto yy53; +yy783: + YYDEBUG(783, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + goto yy719; + } + } else { + if (yych <= 'Q') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'B') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'C') goto yy783; - if(yych != 'c') goto yy681; - } + if (yych <= 'R') goto yy784; + if (yych != 'r') goto yy679; } -yy783: - YYDEBUG(783, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy729; - if(yych == 'h') goto yy729; - goto yy53; + } yy784: - YYDEBUG(784, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy785; - if(yych != 'b') goto yy53; + YYDEBUG(784, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy785; + if (yych != 'u') goto yy53; yy785: - YYDEBUG(785, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - goto yy721; - } - } else { - if(yych <= 'Q') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'R') goto yy786; - if(yych != 'r') goto yy681; - } - } + YYDEBUG(785, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy786; + if (yych != 'a') goto yy53; yy786: - YYDEBUG(786, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy787; - if(yych != 'u') goto yy53; + YYDEBUG(786, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy787; + if (yych != 'r') goto yy53; yy787: - YYDEBUG(787, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy788; - if(yych != 'a') goto yy53; + YYDEBUG(787, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy53; yy788: - YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy789; - if(yych != 'r') goto yy53; + YYDEBUG(788, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy795; + if (yych <= '6') goto yy796; + if (yych <= '9') goto yy797; + goto yy53; yy789: - YYDEBUG(789, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy53; -yy790: - YYDEBUG(790, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy801; - goto yy53; + YYDEBUG(789, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(790, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy791: - YYDEBUG(791, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy792; - if(yych <= '6') goto yy793; - if(yych <= '9') goto yy794; - goto yy53; + YYDEBUG(791, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy792: - YYDEBUG(792, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy800; - goto yy696; -yy793: - YYDEBUG(793, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy702; - goto yy696; - } else { - if(yych <= '0') goto yy800; - if(yych <= '9') goto yy795; - goto yy696; - } -yy794: - YYDEBUG(794, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych >= ':') goto yy696; -yy795: - YYDEBUG(795, *YYCURSOR); - yyaccept = 13; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') goto yy796; - if(yych <= '9') goto yy797; -yy796: - YYDEBUG(796, *YYCURSOR); -#line 1173 "ext/date/lib/parse_date.re" - { - DEBUG_OUTPUT("pointed date YY"); + YYDEBUG(792, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(793, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(794, *YYCURSOR); +#line 1162 "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, 2); - TIMELIB_PROCESS_YEAR(s->time->y); + s->time->y = timelib_get_nr((char **) &ptr, 4); TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 14022 "ext/date/lib/parse_date.c" +#line 13962 "ext/date/lib/parse_date.c" +yy795: + YYDEBUG(795, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy800; + goto yy694; +yy796: + YYDEBUG(796, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy700; + goto yy694; + } else { + if (yych <= '0') goto yy800; + if (yych <= '9') goto yy798; + goto yy694; + } yy797: - YYDEBUG(797, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(798, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(799, *YYCURSOR); -#line 1161 "ext/date/lib/parse_date.re" - { - DEBUG_OUTPUT("pointed date YYYY"); + YYDEBUG(797, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych >= ':') goto yy694; +yy798: + YYDEBUG(798, *YYCURSOR); + yyaccept = 13; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy799; + if (yych <= '9') goto yy792; +yy799: + YYDEBUG(799, *YYCURSOR); +#line 1174 "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, 4); + s->time->y = timelib_get_nr((char **) &ptr, 2); + TIMELIB_PROCESS_YEAR(s->time->y); TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 14042 "ext/date/lib/parse_date.c" +#line 14010 "ext/date/lib/parse_date.c" yy800: - YYDEBUG(800, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy706; - if(yych <= 0x1F) goto yy696; - goto yy706; - } else { - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - goto yy797; - } + YYDEBUG(800, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy704; + if (yych <= 0x1F) goto yy694; + goto yy704; + } else { + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + goto yy792; + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy706; + if (yych <= 'O') goto yy694; + goto yy706; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy708; - if(yych <= 'O') goto yy696; - goto yy708; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy706; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy708; - } else { - if(yych == 'p') goto yy708; - goto yy696; - } + if (yych == 'p') goto yy706; + goto yy694; } } + } yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy795; - goto yy53; -yy802: - YYDEBUG(802, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ':') { - if(yych <= ' ') { - if(yych == 0x09) goto yy713; - if(yych <= 0x1F) goto yy696; - goto yy713; - } else { - if(yych <= '-') { - if(yych <= ',') goto yy696; - goto yy790; - } else { - if(yych <= '.') goto yy791; - if(yych <= '9') goto yy696; - goto yy698; - } + YYDEBUG(801, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ':') { + if (yych <= ' ') { + if (yych == '\t') goto yy711; + if (yych <= 0x1F) goto yy694; + goto yy711; + } else { + if (yych <= '-') { + if (yych <= ',') goto yy694; + goto yy789; + } else { + if (yych <= '.') goto yy788; + if (yych <= '9') goto yy694; + goto yy696; } + } + } else { + if (yych <= 'P') { + if (yych == 'A') goto yy713; + if (yych <= 'O') goto yy694; + goto yy713; } else { - if(yych <= 'P') { - if(yych == 'A') goto yy715; - if(yych <= 'O') goto yy696; - goto yy715; + if (yych <= 'a') { + if (yych <= '`') goto yy694; + goto yy713; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy696; - goto yy715; - } else { - if(yych == 'p') goto yy715; - goto yy696; - } + if (yych == 'p') goto yy713; + goto yy694; } } + } +yy802: + YYDEBUG(802, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy804; + goto yy53; + } yy803: - YYDEBUG(803, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy805; - goto yy53; - } + YYDEBUG(803, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } yy804: - YYDEBUG(804, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; - } + YYDEBUG(804, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + if (yych <= '.') goto yy789; + goto yy53; yy805: - YYDEBUG(805, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - if(yych <= '.') goto yy790; - goto yy53; -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy838; - if(yych <= 'T') goto yy53; + YYDEBUG(805, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy837; + if (yych <= 'T') goto yy53; + goto yy836; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; goto yy837; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy838; - } else { - if(yych == 'u') goto yy837; - goto yy53; - } + if (yych == 'u') goto yy836; + goto yy53; } + } +yy806: + YYDEBUG(806, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy834; + if (yych == 'e') goto yy834; + goto yy53; yy807: - YYDEBUG(807, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy835; - if(yych == 'e') goto yy835; - goto yy53; + YYDEBUG(807, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy831; + if (yych == 'a') goto yy831; + goto yy53; yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy832; - if(yych == 'a') goto yy832; - goto yy53; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy829; - if(yych <= 'T') goto yy53; + YYDEBUG(808, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy828; + if (yych <= 'T') goto yy53; + goto yy827; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; goto yy828; } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy829; - } else { - if(yych == 'u') goto yy828; - goto yy53; - } + if (yych == 'u') goto yy827; + goto yy53; } + } +yy809: + YYDEBUG(809, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy824; + if (yych == 'e') goto yy824; + goto yy53; yy810: - YYDEBUG(810, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy825; - if(yych == 'e') goto yy825; - goto yy53; + YYDEBUG(810, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy822; + if (yych == 'c') goto yy822; + goto yy53; yy811: - YYDEBUG(811, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy823; - if(yych == 'c') goto yy823; - goto yy53; + YYDEBUG(811, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy820; + if (yych == 'o') goto yy820; + goto yy53; yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy821; - if(yych == 'o') goto yy821; - goto yy53; + YYDEBUG(812, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy813; + if (yych != 'e') goto yy53; yy813: - YYDEBUG(813, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy814; - if(yych != 'e') goto yy53; + YYDEBUG(813, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy814; + if (yych != 'c') goto yy53; yy814: - YYDEBUG(814, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy815; - if(yych != 'c') goto yy53; -yy815: - YYDEBUG(815, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych >= '.') goto yy721; - } + YYDEBUG(814, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych >= '.') goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy770; - if(yych == 'e') goto yy770; - goto yy681; - } + if (yych <= 'E') goto yy768; + if (yych == 'e') goto yy768; + goto yy679; } + } +yy815: + YYDEBUG(815, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy720; + if (yych <= '0') goto yy816; + if (yych <= '2') goto yy817; + if (yych <= '3') goto yy818; + goto yy720; yy816: - YYDEBUG(816, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy722; - if(yych <= '0') goto yy817; - if(yych <= '2') goto yy818; - if(yych <= '3') goto yy819; - goto yy722; + YYDEBUG(816, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy819; + goto yy722; yy817: - YYDEBUG(817, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy820; - goto yy724; + YYDEBUG(817, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy819; + goto yy722; yy818: - YYDEBUG(818, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy820; - goto yy724; + YYDEBUG(818, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '1') goto yy819; + if (yych <= '9') goto yy728; + goto yy722; yy819: - YYDEBUG(819, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '1') goto yy820; - if(yych <= '9') goto yy730; - goto yy724; + YYDEBUG(819, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy722; + if (yych <= '9') goto yy729; + goto yy722; yy820: - YYDEBUG(820, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy724; - if(yych <= '9') goto yy731; - goto yy724; + YYDEBUG(820, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy821; + if (yych != 'v') goto yy53; yy821: - YYDEBUG(821, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy822; - if(yych != 'v') goto yy53; -yy822: - YYDEBUG(822, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(821, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy725; - if(yych == 'e') goto yy725; - goto yy681; - } + if (yych <= 'E') goto yy723; + if (yych == 'e') goto yy723; + goto yy679; } + } +yy822: + YYDEBUG(822, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy823; + if (yych != 't') goto yy53; yy823: - YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy824; - if(yych != 't') goto yy53; -yy824: - YYDEBUG(824, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(823, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'N') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'N') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'O') goto yy735; - if(yych == 'o') goto yy735; - goto yy681; - } + if (yych <= 'O') goto yy733; + if (yych == 'o') goto yy733; + goto yy679; } + } +yy824: + YYDEBUG(824, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy825; + if (yych != 'p') goto yy53; yy825: - YYDEBUG(825, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy826; - if(yych != 'p') goto yy53; -yy826: - YYDEBUG(826, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(825, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'S') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'S') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'T') goto yy827; - if(yych != 't') goto yy681; - } + if (yych <= 'T') goto yy826; + if (yych != 't') goto yy679; } -yy827: - YYDEBUG(827, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + } +yy826: + YYDEBUG(826, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy777; - if(yych == 'e') goto yy777; - goto yy681; - } + if (yych <= 'E') goto yy775; + if (yych == 'e') goto yy775; + goto yy679; } + } +yy827: + YYDEBUG(827, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy830; + if (yych == 'g') goto yy830; + goto yy53; yy828: - YYDEBUG(828, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy831; - if(yych == 'g') goto yy831; - goto yy53; + YYDEBUG(828, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy829; + if (yych != 'r') goto yy53; yy829: - YYDEBUG(829, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy830; - if(yych != 'r') goto yy53; + YYDEBUG(829, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'I') goto yy739; + if (yych == 'i') goto yy739; + goto yy679; + } + } yy830: - YYDEBUG(830, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(830, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'H') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'I') goto yy741; - if(yych == 'i') goto yy741; - goto yy681; - } + if (yych <= 'U') goto yy741; + if (yych == 'u') goto yy741; + goto yy679; } + } yy831: - YYDEBUG(831, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(831, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy832; + if (yych <= 'X') goto yy53; + goto yy833; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy743; - if(yych == 'u') goto yy743; - goto yy681; - } + if (yych == 'y') goto yy833; + goto yy53; } + } yy832: - YYDEBUG(832, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy833; - if(yych <= 'X') goto yy53; - goto yy834; + YYDEBUG(832, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'B') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy834; - goto yy53; - } + if (yych <= 'C') goto yy781; + if (yych == 'c') goto yy781; + goto yy679; } + } yy833: - YYDEBUG(833, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(833, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy679; + goto yy719; } else { - if(yych <= 'B') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'C') goto yy783; - if(yych == 'c') goto yy783; - goto yy681; - } + if (yych == ' ') goto yy719; + goto yy679; } -yy834: - YYDEBUG(834, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= ',') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy681; - goto yy721; - } else { - if(yych == ' ') goto yy721; - goto yy681; - } + } else { + if (yych <= '.') { + if (yych <= '-') goto yy815; + goto yy719; } else { - if(yych <= '.') { - if(yych <= '-') goto yy816; - goto yy721; - } else { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } + } +yy834: + YYDEBUG(834, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy835; + if (yych != 'b') goto yy53; yy835: - YYDEBUG(835, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy836; - if(yych != 'b') goto yy53; -yy836: - YYDEBUG(836, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(835, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'Q') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'Q') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'R') goto yy786; - if(yych == 'r') goto yy786; - goto yy681; - } + if (yych <= 'R') goto yy784; + if (yych == 'r') goto yy784; + goto yy679; } -yy837: - YYDEBUG(837, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy841; - if(yych <= 'M') goto yy53; + } +yy836: + YYDEBUG(836, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy840; + if (yych <= 'M') goto yy53; + goto yy839; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; goto yy840; } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy841; - } else { - if(yych == 'n') goto yy840; - goto yy53; - } + if (yych == 'n') goto yy839; + goto yy53; } + } +yy837: + YYDEBUG(837, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy838; + if (yych != 'n') goto yy53; yy838: - YYDEBUG(838, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy839; - if(yych != 'n') goto yy53; + YYDEBUG(838, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; + } else { + if (yych <= 'U') goto yy746; + if (yych == 'u') goto yy746; + goto yy679; + } + } yy839: - YYDEBUG(839, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + YYDEBUG(839, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'T') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'U') goto yy748; - if(yych == 'u') goto yy748; - goto yy681; - } + if (yych <= 'E') goto yy727; + if (yych == 'e') goto yy727; + goto yy679; } + } yy840: - YYDEBUG(840, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } - } else { - if(yych <= 'D') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'E') goto yy729; - if(yych == 'e') goto yy729; - goto yy681; - } + YYDEBUG(840, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy719; + goto yy679; + } else { + if (yych <= ' ') goto yy719; + if (yych <= ',') goto yy679; + if (yych <= '-') goto yy815; + goto yy719; } -yy841: - YYDEBUG(841, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= 0x1F) { - if(yych == 0x09) goto yy721; - goto yy681; - } else { - if(yych <= ' ') goto yy721; - if(yych <= ',') goto yy681; - if(yych <= '-') goto yy816; - goto yy721; - } + } else { + if (yych <= 'X') { + if (yych <= '/') goto yy679; + if (yych <= '9') goto yy721; + goto yy679; } else { - if(yych <= 'X') { - if(yych <= '/') goto yy681; - if(yych <= '9') goto yy723; - goto yy681; - } else { - if(yych <= 'Y') goto yy729; - if(yych == 'y') goto yy729; - goto yy681; - } + if (yych <= 'Y') goto yy727; + if (yych == 'y') goto yy727; + goto yy679; } + } +yy841: + YYDEBUG(841, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy842; + if (yych <= '3') goto yy844; + if (yych <= '9') goto yy845; + goto yy53; yy842: - YYDEBUG(842, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy843; - if(yych <= '3') goto yy845; - if(yych <= '9') goto yy846; - goto yy53; -yy843: - YYDEBUG(843, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy852; - if(yych >= 'n') goto yy848; + YYDEBUG(842, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy851; + if (yych >= 'n') goto yy847; + } else { + if (yych <= 'r') { + if (yych >= 'r') goto yy848; } else { - if(yych <= 'r') { - if(yych >= 'r') goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; } -yy844: - YYDEBUG(844, *YYCURSOR); -#line 1134 "ext/date/lib/parse_date.re" - { + } +yy843: + YYDEBUG(843, *YYCURSOR); +#line 1135 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("gnudateshort"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -14668,114 +14630,114 @@ yy844: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 14672 "ext/date/lib/parse_date.c" -yy845: - YYDEBUG(845, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - goto yy852; - } else { - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; - goto yy848; - } +#line 14634 "ext/date/lib/parse_date.c" +yy844: + YYDEBUG(844, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '1') { + if (yych <= '/') goto yy843; + goto yy851; + } else { + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; + } + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; + goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy846: - YYDEBUG(846, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; + } +yy845: + YYDEBUG(845, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } + } +yy846: + YYDEBUG(846, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy850; + goto yy53; yy847: - YYDEBUG(847, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy851; - goto yy53; + YYDEBUG(847, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy850; + goto yy53; yy848: - YYDEBUG(848, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy851; - goto yy53; + YYDEBUG(848, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy850; + goto yy53; yy849: - YYDEBUG(849, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy851; - goto yy53; + YYDEBUG(849, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != 'h') goto yy53; yy850: - YYDEBUG(850, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 'h') goto yy53; + YYDEBUG(850, *YYCURSOR); + yych = *++YYCURSOR; + goto yy843; yy851: - YYDEBUG(851, *YYCURSOR); - yych = *++YYCURSOR; - goto yy844; -yy852: - YYDEBUG(852, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy797; - if(yych <= 'm') goto yy844; + YYDEBUG(851, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy792; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy853: - YYDEBUG(853, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') { - if(yych >= '/') goto yy907; - } else { - if(yych <= '9') goto yy856; - if(yych >= 'n') goto yy904; - } + } +yy852: + YYDEBUG(852, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') { + if (yych >= '/') goto yy906; } else { - if(yych <= 'r') { - if(yych >= 'r') goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - } + if (yych <= '9') goto yy855; + if (yych >= 'n') goto yy903; } -yy854: - YYDEBUG(854, *YYCURSOR); + } else { + if (yych <= 'r') { + if (yych >= 'r') goto yy904; + } else { + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + } + } +yy853: + YYDEBUG(853, *YYCURSOR); #line 1082 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("americanshort | american"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -14788,231 +14750,231 @@ yy854: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 14792 "ext/date/lib/parse_date.c" -yy855: - YYDEBUG(855, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') { - if(yych <= '.') goto yy854; - goto yy907; - } else { - if(yych <= '1') goto yy856; - if(yych <= 'm') goto yy854; - goto yy904; - } +#line 14754 "ext/date/lib/parse_date.c" +yy854: + YYDEBUG(854, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') { + if (yych <= '.') goto yy853; + goto yy906; + } else { + if (yych <= '1') goto yy855; + if (yych <= 'm') goto yy853; + goto yy903; + } + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy853; + goto yy904; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy854; - goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - goto yy854; - } + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + goto yy853; } -yy856: - YYDEBUG(856, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == '/') goto yy907; - if(yych <= 'm') goto yy854; + } +yy855: + YYDEBUG(855, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == '/') goto yy906; + if (yych <= 'm') goto yy853; + goto yy903; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy853; goto yy904; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy854; - goto yy905; - } else { - if(yych <= 's') goto yy903; - if(yych <= 't') goto yy906; - goto yy854; - } + if (yych <= 's') goto yy902; + if (yych <= 't') goto yy905; + goto yy853; } -yy857: - YYDEBUG(857, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy902; - if(yych <= 'T') goto yy53; + } +yy856: + YYDEBUG(856, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy901; + if (yych <= 'T') goto yy53; + goto yy900; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; goto yy901; } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy902; - } else { - if(yych == 'u') goto yy901; - goto yy53; - } + if (yych == 'u') goto yy900; + goto yy53; } + } +yy857: + YYDEBUG(857, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy899; + if (yych == 'e') goto yy899; + goto yy53; yy858: - YYDEBUG(858, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy900; - if(yych == 'e') goto yy900; - goto yy53; + YYDEBUG(858, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy898; + if (yych == 'a') goto yy898; + goto yy53; yy859: - YYDEBUG(859, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy899; - if(yych == 'a') goto yy899; - goto yy53; -yy860: - YYDEBUG(860, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy898; - if(yych <= 'T') goto yy53; + YYDEBUG(859, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy897; + if (yych <= 'T') goto yy53; + goto yy896; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; goto yy897; } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy898; - } else { - if(yych == 'u') goto yy897; - goto yy53; - } + if (yych == 'u') goto yy896; + goto yy53; } + } +yy860: + YYDEBUG(860, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy894; + if (yych == 'e') goto yy894; + goto yy53; yy861: - YYDEBUG(861, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy895; - if(yych == 'e') goto yy895; - goto yy53; + YYDEBUG(861, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy893; + if (yych == 'c') goto yy893; + goto yy53; yy862: - YYDEBUG(862, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy894; - if(yych == 'c') goto yy894; - goto yy53; + YYDEBUG(862, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy892; + if (yych == 'o') goto yy892; + goto yy53; yy863: - YYDEBUG(863, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy893; - if(yych == 'o') goto yy893; - goto yy53; + YYDEBUG(863, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy864; + if (yych != 'e') goto yy53; yy864: - YYDEBUG(864, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy865; - if(yych != 'e') goto yy53; + YYDEBUG(864, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy865; + if (yych != 'c') goto yy53; yy865: - YYDEBUG(865, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy866; - if(yych != 'c') goto yy53; + YYDEBUG(865, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; yy866: - YYDEBUG(866, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; -yy867: - YYDEBUG(867, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(868, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(869, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(870, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(871, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(872, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy873; - if(yych <= '2') goto yy874; - goto yy53; + YYDEBUG(866, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(867, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(868, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(869, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(870, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(871, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy872; + if (yych <= '2') goto yy873; + goto yy53; +yy872: + YYDEBUG(872, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy874; + goto yy53; yy873: - YYDEBUG(873, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy875; - goto yy53; + YYDEBUG(873, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; yy874: - YYDEBUG(874, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; -yy875: - YYDEBUG(875, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(876, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(877, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(878, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(879, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy880; - if(yych <= '6') goto yy881; - goto yy53; + YYDEBUG(874, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(875, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(876, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(877, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(878, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy879; + if (yych <= '6') goto yy880; + goto yy53; +yy879: + YYDEBUG(879, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy881; + goto yy53; yy880: - YYDEBUG(880, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy882; - goto yy53; + YYDEBUG(880, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; yy881: - YYDEBUG(881, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; + YYDEBUG(881, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\t') goto yy882; + if (yych != ' ') goto yy53; yy882: - YYDEBUG(882, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 0x09) goto yy883; - if(yych != ' ') goto yy53; -yy883: - YYDEBUG(883, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); - yych = *YYCURSOR; - YYDEBUG(884, *YYCURSOR); - if(yych <= ' ') { - if(yych == 0x09) goto yy883; - if(yych <= 0x1F) goto yy53; - goto yy883; - } else { - if(yych <= '+') { - if(yych <= '*') goto yy53; - } else { - if(yych != '-') goto yy53; - } - } - YYDEBUG(885, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy886; - if(yych <= '2') goto yy888; - if(yych <= '9') goto yy889; - goto yy53; + YYDEBUG(882, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + YYDEBUG(883, *YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy882; + if (yych <= 0x1F) goto yy53; + goto yy882; + } else { + if (yych <= '+') { + if (yych <= '*') goto yy53; + } else { + if (yych != '-') goto yy53; + } + } + YYDEBUG(884, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy885; + if (yych <= '2') goto yy887; + if (yych <= '9') goto yy888; + goto yy53; +yy885: + YYDEBUG(885, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy886; + if (yych <= '9') goto yy888; + if (yych <= ':') goto yy889; yy886: - YYDEBUG(886, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '/') goto yy887; - if(yych <= '9') goto yy889; - if(yych <= ':') goto yy890; -yy887: - YYDEBUG(887, *YYCURSOR); -#line 1352 "ext/date/lib/parse_date.re" - { + YYDEBUG(886, *YYCURSOR); +#line 1353 "ext/date/lib/parse_date.re" + { int tz_not_found; DEBUG_OUTPUT("clf"); TIMELIB_INIT; @@ -15031,503 +14993,551 @@ yy887: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 15035 "ext/date/lib/parse_date.c" +#line 14997 "ext/date/lib/parse_date.c" +yy887: + YYDEBUG(887, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy886; + if (yych >= '4') goto yy890; + } else { + if (yych <= '9') goto yy891; + if (yych <= ':') goto yy889; + goto yy886; + } yy888: - YYDEBUG(888, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy887; - if(yych >= '4') goto yy891; - } else { - if(yych <= '9') goto yy892; - if(yych <= ':') goto yy890; - goto yy887; - } + YYDEBUG(888, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych <= '5') goto yy890; + if (yych <= '9') goto yy891; + if (yych >= ';') goto yy886; yy889: - YYDEBUG(889, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych <= '5') goto yy891; - if(yych <= '9') goto yy892; - if(yych >= ';') goto yy887; + YYDEBUG(889, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych <= '5') goto yy890; + if (yych <= '9') goto yy891; + goto yy886; yy890: - YYDEBUG(890, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych <= '5') goto yy891; - if(yych <= '9') goto yy892; - goto yy887; + YYDEBUG(890, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy886; + if (yych >= ':') goto yy886; yy891: - YYDEBUG(891, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy887; - if(yych >= ':') goto yy887; + YYDEBUG(891, *YYCURSOR); + yych = *++YYCURSOR; + goto yy886; yy892: - YYDEBUG(892, *YYCURSOR); - yych = *++YYCURSOR; - goto yy887; + YYDEBUG(892, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy865; + if (yych == 'v') goto yy865; + goto yy53; yy893: - YYDEBUG(893, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy866; - if(yych == 'v') goto yy866; - goto yy53; + YYDEBUG(893, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy865; + if (yych == 't') goto yy865; + goto yy53; yy894: - YYDEBUG(894, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy866; - if(yych == 't') goto yy866; - goto yy53; + YYDEBUG(894, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy895; + if (yych != 'p') goto yy53; yy895: - YYDEBUG(895, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy896; - if(yych != 'p') goto yy53; + YYDEBUG(895, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == '/') goto yy866; + goto yy53; + } else { + if (yych <= 'T') goto yy865; + if (yych == 't') goto yy865; + goto yy53; + } yy896: - YYDEBUG(896, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych == '/') goto yy867; - goto yy53; + YYDEBUG(896, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy865; + if (yych == 'g') goto yy865; + goto yy53; +yy897: + YYDEBUG(897, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy865; + if (yych == 'r') goto yy865; + goto yy53; +yy898: + YYDEBUG(898, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy865; + if (yych <= 'X') goto yy53; + goto yy865; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + goto yy865; } else { - if(yych <= 'T') goto yy866; - if(yych == 't') goto yy866; + if (yych == 'y') goto yy865; goto yy53; } -yy897: - YYDEBUG(897, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy866; - if(yych == 'g') goto yy866; - goto yy53; -yy898: - YYDEBUG(898, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy866; - if(yych == 'r') goto yy866; - goto yy53; + } yy899: - YYDEBUG(899, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy866; - if(yych <= 'X') goto yy53; - goto yy866; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - goto yy866; - } else { - if(yych == 'y') goto yy866; - goto yy53; - } - } + YYDEBUG(899, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy865; + if (yych == 'b') goto yy865; + goto yy53; yy900: - YYDEBUG(900, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy866; - if(yych == 'b') goto yy866; - goto yy53; -yy901: - YYDEBUG(901, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy866; - if(yych <= 'M') goto yy53; - goto yy866; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy866; - } else { - if(yych == 'n') goto yy866; - goto yy53; - } + YYDEBUG(900, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy865; + if (yych <= 'M') goto yy53; + goto yy865; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy865; + } else { + if (yych == 'n') goto yy865; + goto yy53; } + } +yy901: + YYDEBUG(901, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy865; + if (yych == 'n') goto yy865; + goto yy53; yy902: - YYDEBUG(902, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy866; - if(yych == 'n') goto yy866; - goto yy53; + YYDEBUG(902, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy911; + goto yy53; yy903: - YYDEBUG(903, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy912; - goto yy53; + YYDEBUG(903, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy911; + goto yy53; yy904: - YYDEBUG(904, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy912; - goto yy53; + YYDEBUG(904, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy911; + goto yy53; yy905: - YYDEBUG(905, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy912; - goto yy53; + YYDEBUG(905, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy911; + goto yy53; yy906: - YYDEBUG(906, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy912; - goto yy53; -yy907: - YYDEBUG(907, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(908, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(909, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(910, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy854; - if(yych >= ':') goto yy854; - YYDEBUG(911, *YYCURSOR); - yych = *++YYCURSOR; - goto yy854; + YYDEBUG(906, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(907, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(908, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(909, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy853; + if (yych >= ':') goto yy853; + YYDEBUG(910, *YYCURSOR); + yych = *++YYCURSOR; + goto yy853; +yy911: + YYDEBUG(911, *YYCURSOR); + yyaccept = 15; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '/') goto yy906; + goto yy853; yy912: - YYDEBUG(912, *YYCURSOR); - yyaccept = 15; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '/') goto yy907; - goto yy854; + YYDEBUG(912, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '\t') goto yy914; + goto yy765; + } else { + if (yych <= '-') goto yy915; + if (yych <= '.') goto yy914; + if (yych >= '0') goto yy765; + } yy913: - YYDEBUG(913, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') { - if(yych == 0x09) goto yy915; - goto yy767; - } else { - if(yych <= '.') goto yy915; - if(yych >= '0') goto yy767; - } + YYDEBUG(913, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case 'A': + case 'a': goto yy859; + case 'D': + case 'd': goto yy863; + case 'F': + case 'f': goto yy857; + case 'J': + case 'j': goto yy856; + case 'M': + case 'm': goto yy858; + case 'N': + case 'n': goto yy862; + case 'O': + case 'o': goto yy861; + case 'S': + case 's': goto yy860; + default: goto yy53; + } yy914: - YYDEBUG(914, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case 'A': - case 'a': goto yy860; - case 'D': - case 'd': goto yy864; - case 'F': - case 'f': goto yy858; - case 'J': - case 'j': goto yy857; - case 'M': - case 'm': goto yy859; - case 'N': - case 'n': goto yy863; - case 'O': - case 'o': goto yy862; - case 'S': - case 's': goto yy861; - default: goto yy53; - } + YYDEBUG(914, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy765; yy915: - YYDEBUG(915, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy767; + YYDEBUG(915, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy916; + if (yych <= '1') goto yy917; + if (yych <= '9') goto yy918; + goto yy765; yy916: - YYDEBUG(916, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy918; - goto yy53; + YYDEBUG(916, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy918; + goto yy53; yy917: - YYDEBUG(917, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + YYDEBUG(917, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy918: - YYDEBUG(918, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '.') goto yy790; - goto yy53; + YYDEBUG(918, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '.') goto yy789; + goto yy53; yy919: - YYDEBUG(919, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy963; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy961; - goto yy57; + YYDEBUG(919, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + goto yy922; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy921; + goto yy53; + } yy920: - YYDEBUG(920, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy929; - case '1': goto yy930; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy931; - case 'A': - case 'a': goto yy924; - case 'D': - case 'd': goto yy928; - case 'F': - case 'f': goto yy922; - case 'J': - case 'j': goto yy921; - case 'M': - case 'm': goto yy923; - case 'N': - case 'n': goto yy927; - case 'O': - case 'o': goto yy926; - case 'S': - case 's': goto yy925; - default: goto yy53; - } + YYDEBUG(920, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + goto yy922; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } yy921: - YYDEBUG(921, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy960; - if(yych <= 'T') goto yy53; - goto yy959; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy960; - } else { - if(yych == 'u') goto yy959; - goto yy53; - } - } + YYDEBUG(921, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy789; + if (yych >= '/') goto yy53; yy922: - YYDEBUG(922, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy958; - if(yych == 'e') goto yy958; - goto yy53; -yy923: - YYDEBUG(923, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy957; - if(yych == 'a') goto yy957; - goto yy53; + YYDEBUG(922, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(923, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy798; + goto yy53; yy924: - YYDEBUG(924, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy956; - if(yych <= 'T') goto yy53; - goto yy955; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy956; - } else { - if(yych == 'u') goto yy955; - goto yy53; - } - } + YYDEBUG(924, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy968; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy966; + goto yy57; yy925: - YYDEBUG(925, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy953; - if(yych == 'e') goto yy953; - goto yy53; + YYDEBUG(925, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy934; + case '1': goto yy935; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy936; + case 'A': + case 'a': goto yy929; + case 'D': + case 'd': goto yy933; + case 'F': + case 'f': goto yy927; + case 'J': + case 'j': goto yy926; + case 'M': + case 'm': goto yy928; + case 'N': + case 'n': goto yy932; + case 'O': + case 'o': goto yy931; + case 'S': + case 's': goto yy930; + default: goto yy53; + } yy926: - YYDEBUG(926, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy952; - if(yych == 'c') goto yy952; - goto yy53; + YYDEBUG(926, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy965; + if (yych <= 'T') goto yy53; + goto yy964; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy965; + } else { + if (yych == 'u') goto yy964; + goto yy53; + } + } yy927: - YYDEBUG(927, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy951; - if(yych == 'o') goto yy951; - goto yy53; + YYDEBUG(927, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy963; + if (yych == 'e') goto yy963; + goto yy53; yy928: - YYDEBUG(928, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy943; - if(yych == 'e') goto yy943; - goto yy53; + YYDEBUG(928, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy962; + if (yych == 'a') goto yy962; + goto yy53; yy929: - YYDEBUG(929, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy936; - goto yy53; + YYDEBUG(929, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy961; + if (yych <= 'T') goto yy53; + goto yy960; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy961; + } else { + if (yych == 'u') goto yy960; + goto yy53; + } + } yy930: - YYDEBUG(930, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy936; - goto yy53; + YYDEBUG(930, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy958; + if (yych == 'e') goto yy958; + goto yy53; yy931: - YYDEBUG(931, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; + YYDEBUG(931, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy957; + if (yych == 'c') goto yy957; + goto yy53; yy932: - YYDEBUG(932, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy933; - if(yych <= '3') goto yy934; - if(yych <= '9') goto yy935; - goto yy53; + YYDEBUG(932, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy956; + if (yych == 'o') goto yy956; + goto yy53; yy933: - YYDEBUG(933, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy935; - if(yych <= 'm') goto yy844; + YYDEBUG(933, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy948; + if (yych == 'e') goto yy948; + goto yy53; +yy934: + YYDEBUG(934, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy941; + goto yy53; +yy935: + YYDEBUG(935, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy941; + goto yy53; +yy936: + YYDEBUG(936, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; +yy937: + YYDEBUG(937, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy938; + if (yych <= '3') goto yy939; + if (yych <= '9') goto yy940; + goto yy53; +yy938: + YYDEBUG(938, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy940; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy934: - YYDEBUG(934, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '1') goto yy935; - if(yych <= 'm') goto yy844; + } +yy939: + YYDEBUG(939, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '1') goto yy940; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } - } -yy935: - YYDEBUG(935, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy848; - goto yy844; - } else { - if(yych <= 'r') goto yy849; - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } -yy936: - YYDEBUG(936, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; - YYDEBUG(937, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy939; - } else { - if(yych <= '3') goto yy940; - if(yych <= '9') goto yy935; - goto yy53; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } - YYDEBUG(938, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy941; - if(yych <= 'm') goto yy844; + } +yy940: + YYDEBUG(940, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy847; + goto yy843; + } else { + if (yych <= 'r') goto yy848; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; + } +yy941: + YYDEBUG(941, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; + YYDEBUG(942, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy944; + } else { + if (yych <= '3') goto yy945; + if (yych <= '9') goto yy940; + goto yy53; + } + YYDEBUG(943, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy939: - YYDEBUG(939, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy941; - if(yych <= 'm') goto yy844; + } +yy944: + YYDEBUG(944, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy940: - YYDEBUG(940, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '1') goto yy941; - if(yych <= 'm') goto yy844; + } +yy945: + YYDEBUG(945, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '1') goto yy946; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy941: - YYDEBUG(941, *YYCURSOR); - yyaccept = 16; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy848; - } else { - if(yych <= 'r') goto yy849; - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - } -yy942: - YYDEBUG(942, *YYCURSOR); + } +yy946: + YYDEBUG(946, *YYCURSOR); + yyaccept = 16; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy847; + } else { + if (yych <= 'r') goto yy848; + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + } +yy947: + YYDEBUG(947, *YYCURSOR); #line 1109 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("iso8601date2"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15538,47 +15548,47 @@ yy942: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 15542 "ext/date/lib/parse_date.c" -yy943: - YYDEBUG(943, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy944; - if(yych != 'c') goto yy53; -yy944: - YYDEBUG(944, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '-') goto yy53; -yy945: - YYDEBUG(945, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy946; - if(yych <= '2') goto yy947; - if(yych <= '3') goto yy948; - goto yy53; -yy946: - YYDEBUG(946, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy949; - goto yy53; -yy947: - YYDEBUG(947, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy949; - goto yy53; +#line 15552 "ext/date/lib/parse_date.c" yy948: - YYDEBUG(948, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; + YYDEBUG(948, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy949; + if (yych != 'c') goto yy53; yy949: - YYDEBUG(949, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(950, *YYCURSOR); -#line 1339 "ext/date/lib/parse_date.re" - { + YYDEBUG(949, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '-') goto yy53; +yy950: + YYDEBUG(950, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy951; + if (yych <= '2') goto yy952; + if (yych <= '3') goto yy953; + goto yy53; +yy951: + YYDEBUG(951, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy954; + goto yy53; +yy952: + YYDEBUG(952, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy954; + goto yy53; +yy953: + YYDEBUG(953, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; +yy954: + YYDEBUG(954, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(955, *YYCURSOR); +#line 1340 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("pgtextreverse"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15589,305 +15599,305 @@ yy949: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 15593 "ext/date/lib/parse_date.c" -yy951: - YYDEBUG(951, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy944; - if(yych == 'v') goto yy944; - goto yy53; -yy952: - YYDEBUG(952, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy944; - if(yych == 't') goto yy944; - goto yy53; -yy953: - YYDEBUG(953, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy954; - if(yych != 'p') goto yy53; -yy954: - YYDEBUG(954, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych == '-') goto yy945; - goto yy53; - } else { - if(yych <= 'T') goto yy944; - if(yych == 't') goto yy944; - goto yy53; - } -yy955: - YYDEBUG(955, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy944; - if(yych == 'g') goto yy944; - goto yy53; +#line 15603 "ext/date/lib/parse_date.c" yy956: - YYDEBUG(956, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy944; - if(yych == 'r') goto yy944; - goto yy53; + YYDEBUG(956, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy949; + if (yych == 'v') goto yy949; + goto yy53; yy957: - YYDEBUG(957, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy944; - if(yych <= 'X') goto yy53; - goto yy944; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - goto yy944; - } else { - if(yych == 'y') goto yy944; - goto yy53; - } - } + YYDEBUG(957, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy949; + if (yych == 't') goto yy949; + goto yy53; yy958: - YYDEBUG(958, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy944; - if(yych == 'b') goto yy944; - goto yy53; + YYDEBUG(958, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy959; + if (yych != 'p') goto yy53; yy959: - YYDEBUG(959, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy944; - if(yych <= 'M') goto yy53; - goto yy944; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy944; - } else { - if(yych == 'n') goto yy944; - goto yy53; - } - } -yy960: - YYDEBUG(960, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy944; - if(yych == 'n') goto yy944; + YYDEBUG(959, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == '-') goto yy950; + goto yy53; + } else { + if (yych <= 'T') goto yy949; + if (yych == 't') goto yy949; goto yy53; + } +yy960: + YYDEBUG(960, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy949; + if (yych == 'g') goto yy949; + goto yy53; yy961: - YYDEBUG(961, *YYCURSOR); - yyaccept = 17; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - 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 yy969; - case '-': goto yy966; - case '.': goto yy970; - case '/': goto yy967; - case '0': goto yy983; - case '1': goto yy984; - case '2': goto yy986; - case '3': goto yy987; - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy51; - case ':': goto yy985; - case 'W': goto yy988; - default: goto yy962; - } + YYDEBUG(961, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy949; + if (yych == 'r') goto yy949; + goto yy53; yy962: - YYDEBUG(962, *YYCURSOR); -#line 1373 "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; + YYDEBUG(962, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy949; + if (yych <= 'X') goto yy53; + goto yy949; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + goto yy949; + } else { + if (yych == 'y') goto yy949; + goto yy53; + } } -#line 15739 "ext/date/lib/parse_date.c" yy963: - YYDEBUG(963, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy964; - case '1': goto yy965; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy931; - case 'A': - case 'a': goto yy924; - case 'D': - case 'd': goto yy928; - case 'F': - case 'f': goto yy922; - case 'J': - case 'j': goto yy921; - case 'M': - case 'm': goto yy923; - case 'N': - case 'n': goto yy927; - case 'O': - case 'o': goto yy926; - case 'S': - case 's': goto yy925; - default: goto yy53; - } + YYDEBUG(963, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy949; + if (yych == 'b') goto yy949; + goto yy53; yy964: - YYDEBUG(964, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy931; - goto yy53; + YYDEBUG(964, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy949; + if (yych <= 'M') goto yy53; + goto yy949; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy949; + } else { + if (yych == 'n') goto yy949; + goto yy53; + } + } yy965: - YYDEBUG(965, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy932; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy931; - goto yy53; + YYDEBUG(965, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy949; + if (yych == 'n') goto yy949; + goto yy53; yy966: - YYDEBUG(966, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy1151; - case '1': goto yy1153; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy1154; - case 'A': - case 'a': goto yy1145; - case 'D': - case 'd': goto yy1149; - case 'F': - case 'f': goto yy1143; - case 'J': - case 'j': goto yy1142; - case 'M': - case 'm': goto yy1144; - case 'N': - case 'n': goto yy1148; - case 'O': - case 'o': goto yy1147; - case 'S': - case 's': goto yy1146; - case 'W': goto yy1150; - default: goto yy1117; - } + YYDEBUG(966, *YYCURSOR); + yyaccept = 17; + 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 yy974; + case '-': goto yy971; + case '.': goto yy975; + case '/': goto yy972; + case '0': goto yy988; + case '1': goto yy989; + case '2': goto yy991; + case '3': goto yy992; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy51; + case ':': goto yy990; + case 'W': goto yy993; + default: goto yy967; + } yy967: - YYDEBUG(967, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1125; - if(yych <= '1') goto yy1126; - if(yych <= '9') goto yy1127; - goto yy53; + YYDEBUG(967, *YYCURSOR); +#line 1374 "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 15749 "ext/date/lib/parse_date.c" yy968: - YYDEBUG(968, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 11) YYFILL(11); - yych = *YYCURSOR; + YYDEBUG(968, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy969; + case '1': goto yy970; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy936; + case 'A': + case 'a': goto yy929; + case 'D': + case 'd': goto yy933; + case 'F': + case 'f': goto yy927; + case 'J': + case 'j': goto yy926; + case 'M': + case 'm': goto yy928; + case 'N': + case 'n': goto yy932; + case 'O': + case 'o': goto yy931; + case 'S': + case 's': goto yy930; + default: goto yy53; + } yy969: - YYDEBUG(969, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy968; - case '-': - case '.': goto yy1116; - case 'A': - case 'a': goto yy978; - case 'D': - case 'd': goto yy982; - case 'F': - case 'f': goto yy976; - case 'H': - case 'h': goto yy60; - case 'I': goto yy971; - case 'J': - case 'j': goto yy975; - case 'M': - case 'm': goto yy977; - case 'N': - case 'n': goto yy981; - case 'O': - case 'o': goto yy980; - case 'S': - case 's': goto yy979; - case 'T': - case 't': goto yy65; - case 'V': goto yy973; - case 'W': - case 'w': goto yy62; - case 'X': goto yy974; - case 'Y': - case 'y': goto yy64; - default: goto yy53; - } + YYDEBUG(969, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy936; + goto yy53; yy970: - YYDEBUG(970, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1117; - if(yych <= '0') goto yy1109; - if(yych <= '2') goto yy1110; - if(yych <= '3') goto yy1111; - goto yy1117; + YYDEBUG(970, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy937; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy936; + goto yy53; yy971: - YYDEBUG(971, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= 'U') { - if(yych == 'I') goto yy1108; - } else { - if(yych == 'W') goto yy972; - if(yych <= 'X') goto yy1062; - } + YYDEBUG(971, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy1156; + case '1': goto yy1158; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy1159; + case 'A': + case 'a': goto yy1150; + case 'D': + case 'd': goto yy1154; + case 'F': + case 'f': goto yy1148; + case 'J': + case 'j': goto yy1147; + case 'M': + case 'm': goto yy1149; + case 'N': + case 'n': goto yy1153; + case 'O': + case 'o': goto yy1152; + case 'S': + case 's': goto yy1151; + case 'W': goto yy1155; + default: goto yy1122; + } yy972: - YYDEBUG(972, *YYCURSOR); -#line 1199 "ext/date/lib/parse_date.re" - { + YYDEBUG(972, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1130; + if (yych <= '1') goto yy1131; + if (yych <= '9') goto yy1132; + goto yy53; +yy973: + YYDEBUG(973, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); + yych = *YYCURSOR; +yy974: + YYDEBUG(974, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy973; + case '-': + case '.': goto yy1121; + case 'A': + case 'a': goto yy983; + case 'D': + case 'd': goto yy987; + case 'F': + case 'f': goto yy981; + case 'H': + case 'h': goto yy60; + case 'I': goto yy976; + case 'J': + case 'j': goto yy980; + case 'M': + case 'm': goto yy982; + case 'N': + case 'n': goto yy986; + case 'O': + case 'o': goto yy985; + case 'S': + case 's': goto yy984; + case 'T': + case 't': goto yy65; + case 'V': goto yy978; + case 'W': + case 'w': goto yy62; + case 'X': goto yy979; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } +yy975: + YYDEBUG(975, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1122; + if (yych <= '0') goto yy1114; + if (yych <= '2') goto yy1115; + if (yych <= '3') goto yy1116; + goto yy1122; +yy976: + YYDEBUG(976, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'U') { + if (yych == 'I') goto yy1113; + } else { + if (yych == 'W') goto yy977; + if (yych <= 'X') goto yy1067; + } +yy977: + YYDEBUG(977, *YYCURSOR); +#line 1200 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datenodayrev"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -15898,223 +15908,223 @@ yy972: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 15902 "ext/date/lib/parse_date.c" -yy973: - YYDEBUG(973, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1106; - goto yy972; -yy974: - YYDEBUG(974, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1105; - goto yy972; -yy975: - YYDEBUG(975, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy1098; - if(yych <= 'T') goto yy53; - goto yy1097; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy1098; - } else { - if(yych == 'u') goto yy1097; - goto yy53; - } - } -yy976: - YYDEBUG(976, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= 'N') { - if(yych == 'E') goto yy1091; - goto yy53; - } else { - if(yych <= 'O') goto yy83; - if(yych <= 'Q') goto yy53; - goto yy82; - } +#line 15912 "ext/date/lib/parse_date.c" +yy978: + YYDEBUG(978, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1111; + goto yy977; +yy979: + YYDEBUG(979, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1110; + goto yy977; +yy980: + YYDEBUG(980, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy1103; + if (yych <= 'T') goto yy53; + goto yy1102; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy1103; } else { - if(yych <= 'n') { - if(yych == 'e') goto yy1091; - goto yy53; - } else { - if(yych <= 'o') goto yy83; - if(yych == 'r') goto yy82; - goto yy53; - } + if (yych == 'u') goto yy1102; + goto yy53; } -yy977: - YYDEBUG(977, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= 'H') { - if(yych == 'A') goto yy1088; - goto yy53; - } else { - if(yych <= 'I') goto yy114; - if(yych <= 'N') goto yy53; - goto yy113; - } + } +yy981: + YYDEBUG(981, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= 'N') { + if (yych == 'E') goto yy1096; + goto yy53; } else { - if(yych <= 'h') { - if(yych == 'a') goto yy1088; - goto yy53; - } else { - if(yych <= 'i') goto yy114; - if(yych == 'o') goto yy113; - goto yy53; - } - } -yy978: - YYDEBUG(978, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy1082; - if(yych <= 'T') goto yy53; - goto yy1081; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy1082; - } else { - if(yych == 'u') goto yy1081; - goto yy53; - } + if (yych <= 'O') goto yy83; + if (yych <= 'Q') goto yy53; + goto yy82; } -yy979: - YYDEBUG(979, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= 'D') { - if(yych == 'A') goto yy123; - goto yy53; - } else { - if(yych <= 'E') goto yy1074; - if(yych <= 'T') goto yy53; - goto yy122; - } + } else { + if (yych <= 'n') { + if (yych == 'e') goto yy1096; + goto yy53; } else { - if(yych <= 'd') { - if(yych == 'a') goto yy123; - goto yy53; - } else { - if(yych <= 'e') goto yy1074; - if(yych == 'u') goto yy122; - goto yy53; - } + if (yych <= 'o') goto yy83; + if (yych == 'r') goto yy82; + goto yy53; } -yy980: - YYDEBUG(980, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1069; - if(yych == 'c') goto yy1069; - goto yy53; -yy981: - YYDEBUG(981, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy1063; - if(yych == 'o') goto yy1063; - goto yy53; + } yy982: - YYDEBUG(982, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych == 'A') goto yy110; - if(yych <= 'D') goto yy53; - goto yy1056; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy110; - } else { - if(yych == 'e') goto yy1056; - goto yy53; - } + YYDEBUG(982, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'A') goto yy1093; + goto yy53; + } else { + if (yych <= 'I') goto yy114; + if (yych <= 'N') goto yy53; + goto yy113; + } + } else { + if (yych <= 'h') { + if (yych == 'a') goto yy1093; + goto yy53; + } else { + if (yych <= 'i') goto yy114; + if (yych == 'o') goto yy113; + goto yy53; } + } yy983: - YYDEBUG(983, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1053; - if(yych <= '9') goto yy1054; - goto yy57; + YYDEBUG(983, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy1087; + if (yych <= 'T') goto yy53; + goto yy1086; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy1087; + } else { + if (yych == 'u') goto yy1086; + goto yy53; + } + } yy984: - YYDEBUG(984, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '2') goto yy1022; - if(yych <= '9') goto yy1001; - goto yy57; + YYDEBUG(984, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'D') { + if (yych == 'A') goto yy123; + goto yy53; + } else { + if (yych <= 'E') goto yy1079; + if (yych <= 'T') goto yy53; + goto yy122; + } + } else { + if (yych <= 'd') { + if (yych == 'a') goto yy123; + goto yy53; + } else { + if (yych <= 'e') goto yy1079; + if (yych == 'u') goto yy122; + goto yy53; + } + } yy985: - YYDEBUG(985, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1002; - if(yych <= '1') goto yy1003; - goto yy53; + YYDEBUG(985, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1074; + if (yych == 'c') goto yy1074; + goto yy53; yy986: - YYDEBUG(986, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1001; - goto yy57; + YYDEBUG(986, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1068; + if (yych == 'o') goto yy1068; + goto yy53; yy987: - YYDEBUG(987, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '5') goto yy997; - if(yych <= '6') goto yy998; - if(yych <= '9') goto yy51; - goto yy57; -yy988: - YYDEBUG(988, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy989; - if(yych <= '4') goto yy990; - goto yy991; - } else { - if(yych <= 'E') { - if(yych <= 'D') goto yy53; - goto yy98; - } else { - if(yych == 'e') goto yy98; - goto yy53; - } + YYDEBUG(987, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy110; + if (yych <= 'D') goto yy53; + goto yy1061; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy110; + } else { + if (yych == 'e') goto yy1061; + goto yy53; } + } +yy988: + YYDEBUG(988, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1058; + if (yych <= '9') goto yy1059; + goto yy57; yy989: - YYDEBUG(989, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '0') goto yy53; - if(yych <= '9') goto yy992; - goto yy53; + YYDEBUG(989, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '2') goto yy1027; + if (yych <= '9') goto yy1006; + goto yy57; yy990: - YYDEBUG(990, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy992; - goto yy53; + YYDEBUG(990, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1007; + if (yych <= '1') goto yy1008; + goto yy53; yy991: - YYDEBUG(991, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; + YYDEBUG(991, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1006; + goto yy57; yy992: - YYDEBUG(992, *YYCURSOR); - yyaccept = 18; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy994; - if(yych <= '/') goto yy993; - if(yych <= '7') goto yy995; + YYDEBUG(992, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '5') goto yy1002; + if (yych <= '6') goto yy1003; + if (yych <= '9') goto yy51; + goto yy57; yy993: - YYDEBUG(993, *YYCURSOR); -#line 1307 "ext/date/lib/parse_date.re" - { + YYDEBUG(993, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy994; + if (yych <= '4') goto yy995; + goto yy996; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy53; + goto yy98; + } else { + if (yych == 'e') goto yy98; + goto yy53; + } + } +yy994: + YYDEBUG(994, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '0') goto yy53; + if (yych <= '9') goto yy997; + goto yy53; +yy995: + YYDEBUG(995, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy997; + goto yy53; +yy996: + YYDEBUG(996, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; +yy997: + YYDEBUG(997, *YYCURSOR); + yyaccept = 18; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy999; + if (yych <= '/') goto yy998; + if (yych <= '7') goto yy1000; +yy998: + YYDEBUG(998, *YYCURSOR); +#line 1308 "ext/date/lib/parse_date.re" + { timelib_sll w, d; DEBUG_OUTPUT("isoweek"); TIMELIB_INIT; @@ -16131,18 +16141,18 @@ yy993: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 16135 "ext/date/lib/parse_date.c" -yy994: - YYDEBUG(994, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '8') goto yy53; -yy995: - YYDEBUG(995, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(996, *YYCURSOR); -#line 1288 "ext/date/lib/parse_date.re" - { +#line 16145 "ext/date/lib/parse_date.c" +yy999: + YYDEBUG(999, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '8') goto yy53; +yy1000: + YYDEBUG(1000, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(1001, *YYCURSOR); +#line 1289 "ext/date/lib/parse_date.re" + { timelib_sll w, d; DEBUG_OUTPUT("isoweekday"); TIMELIB_INIT; @@ -16159,72 +16169,72 @@ yy995: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 16163 "ext/date/lib/parse_date.c" -yy997: - YYDEBUG(997, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy999; - goto yy57; -yy998: - YYDEBUG(998, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '6') goto yy999; - if(yych <= '9') goto yy51; - goto yy57; -yy999: - YYDEBUG(999, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych >= ' ') goto yy57; - } else { - if(yych == 'D') goto yy57; - if(yych >= 'F') goto yy57; - } +#line 16173 "ext/date/lib/parse_date.c" +yy1002: + YYDEBUG(1002, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1004; + goto yy57; +yy1003: + YYDEBUG(1003, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '6') goto yy1004; + if (yych <= '9') goto yy51; + goto yy57; +yy1004: + YYDEBUG(1004, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych >= ' ') goto yy57; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy57; - if(yych >= 'M') goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - if(yych >= 'W') goto yy57; - } + if (yych == 'D') goto yy57; + if (yych >= 'F') goto yy57; } } else { - if(yych <= 'h') { - if(yych <= 'd') { - if(yych == 'Y') goto yy57; - if(yych >= 'd') goto yy57; - } else { - if(yych == 'f') goto yy57; - if(yych >= 'h') goto yy57; - } + if (yych <= 'M') { + if (yych == 'H') goto yy57; + if (yych >= 'M') goto yy57; + } else { + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + if (yych >= 'W') goto yy57; + } + } + } else { + if (yych <= 'h') { + if (yych <= 'd') { + if (yych == 'Y') goto yy57; + if (yych >= 'd') goto yy57; + } else { + if (yych == 'f') goto yy57; + if (yych >= 'h') goto yy57; + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych >= 's') goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych >= 's') goto yy57; + if (yych <= 'w') { + if (yych >= 'w') goto yy57; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy57; - } else { - if(yych == 'y') goto yy57; - } + if (yych == 'y') goto yy57; } } } -yy1000: - YYDEBUG(1000, *YYCURSOR); -#line 1275 "ext/date/lib/parse_date.re" - { + } +yy1005: + YYDEBUG(1005, *YYCURSOR); +#line 1276 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("pgydotd"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -16235,111 +16245,111 @@ yy1000: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 16239 "ext/date/lib/parse_date.c" -yy1001: - YYDEBUG(1001, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy999; - goto yy57; -yy1002: - YYDEBUG(1002, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1004; - goto yy53; -yy1003: - YYDEBUG(1003, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; -yy1004: - YYDEBUG(1004, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1005, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1006; - if(yych <= '2') goto yy1007; - if(yych <= '3') goto yy1008; - goto yy53; +#line 16249 "ext/date/lib/parse_date.c" yy1006: - YYDEBUG(1006, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1009; - goto yy53; + YYDEBUG(1006, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1004; + goto yy57; yy1007: - YYDEBUG(1007, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1009; - goto yy53; + YYDEBUG(1007, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1009; + goto yy53; yy1008: - YYDEBUG(1008, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy53; + YYDEBUG(1008, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; yy1009: - YYDEBUG(1009, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ' ') goto yy53; - YYDEBUG(1010, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1011; - if(yych <= '2') goto yy1012; - goto yy53; + YYDEBUG(1009, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1010, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1011; + if (yych <= '2') goto yy1012; + if (yych <= '3') goto yy1013; + goto yy53; yy1011: - YYDEBUG(1011, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1013; - goto yy53; + YYDEBUG(1011, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1014; + goto yy53; yy1012: - YYDEBUG(1012, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '4') goto yy53; + YYDEBUG(1012, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1014; + goto yy53; yy1013: - YYDEBUG(1013, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1014, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(1015, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1016, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1017, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1018; - if(yych <= '6') goto yy1019; - goto yy53; + YYDEBUG(1013, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy53; +yy1014: + YYDEBUG(1014, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ' ') goto yy53; + YYDEBUG(1015, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1016; + if (yych <= '2') goto yy1017; + goto yy53; +yy1016: + YYDEBUG(1016, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1018; + goto yy53; +yy1017: + YYDEBUG(1017, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '4') goto yy53; yy1018: - YYDEBUG(1018, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; -yy1019: - YYDEBUG(1019, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; -yy1020: - YYDEBUG(1020, *YYCURSOR); - ++YYCURSOR; -yy1021: - YYDEBUG(1021, *YYCURSOR); -#line 1249 "ext/date/lib/parse_date.re" - { + YYDEBUG(1018, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1019, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(1020, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1021, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1022, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1023; + if (yych <= '6') goto yy1024; + goto yy53; +yy1023: + YYDEBUG(1023, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; +yy1024: + YYDEBUG(1024, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; +yy1025: + YYDEBUG(1025, *YYCURSOR); + ++YYCURSOR; +yy1026: + YYDEBUG(1026, *YYCURSOR); +#line 1250 "ext/date/lib/parse_date.re" + { int tz_not_found; DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); TIMELIB_INIT; @@ -16363,270 +16373,270 @@ yy1021: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 16367 "ext/date/lib/parse_date.c" -yy1022: - YYDEBUG(1022, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych >= '1') goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } -yy1023: - YYDEBUG(1023, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; +#line 16377 "ext/date/lib/parse_date.c" +yy1027: + YYDEBUG(1027, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych >= '1') goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } +yy1028: + YYDEBUG(1028, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '/') goto yy1005; + if (yych <= '9') goto yy1031; + if (yych <= 'C') goto yy1005; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= '/') goto yy1000; - if(yych <= '9') goto yy1026; - if(yych <= 'C') goto yy1000; - goto yy57; + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych == 'g') goto yy1005; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1024: - YYDEBUG(1024, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; + } +yy1029: + YYDEBUG(1029, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '/') goto yy1005; + if (yych <= '9') goto yy1031; + if (yych <= 'C') goto yy1005; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= '/') goto yy1000; - if(yych <= '9') goto yy1026; - if(yych <= 'C') goto yy1000; - goto yy57; + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych == 'g') goto yy1005; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1025: - YYDEBUG(1025, *YYCURSOR); - yyaccept = 19; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1000; + } +yy1030: + YYDEBUG(1030, *YYCURSOR); + yyaccept = 19; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1005; + goto yy57; + } else { + if (yych <= '1') { + if (yych <= '/') goto yy1005; + } else { + if (yych <= '9') goto yy51; + if (yych <= 'C') goto yy1005; goto yy57; - } else { - if(yych <= '1') { - if(yych <= '/') goto yy1000; - } else { - if(yych <= '9') goto yy51; - if(yych <= 'C') goto yy1000; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1005; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1000; + if (yych <= 'M') { + if (yych <= 'L') goto yy1005; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1000; - goto yy57; - } else { - if(yych <= 'R') goto yy1000; - if(yych <= 'T') goto yy57; - goto yy1000; - } + if (yych <= 'R') goto yy1005; + if (yych <= 'T') goto yy57; + goto yy1005; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1000; - if(yych <= 'Y') goto yy57; - goto yy1000; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1005; + if (yych <= 'Y') goto yy57; + goto yy1005; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1005; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1000; - } else { - if(yych == 'g') goto yy1000; - goto yy57; - } + if (yych == 'g') goto yy1005; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1005; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1000; + if (yych <= 'w') { + if (yych <= 'v') goto yy1005; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1000; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1000; - } + if (yych == 'y') goto yy57; + goto yy1005; } } } -yy1026: - YYDEBUG(1026, *YYCURSOR); - yyaccept = 20; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy56; - if(yych >= ' ') goto yy56; + } +yy1031: + YYDEBUG(1031, *YYCURSOR); + yyaccept = 20; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy56; + if (yych >= ' ') goto yy56; + } else { + if (yych == 'D') goto yy61; + if (yych >= 'F') goto yy63; + } + } else { + if (yych <= 'M') { + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy59; + } else { + if (yych <= 'S') { + if (yych >= 'S') goto yy58; } else { - if(yych == 'D') goto yy61; - if(yych >= 'F') goto yy63; + if (yych <= 'T') goto yy1033; + if (yych >= 'W') goto yy62; } + } + } + } else { + if (yych <= 'l') { + if (yych <= 'd') { + if (yych == 'Y') goto yy64; + if (yych >= 'd') goto yy61; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy60; - if(yych >= 'M') goto yy59; + if (yych <= 'f') { + if (yych >= 'f') goto yy63; } else { - if(yych <= 'S') { - if(yych >= 'S') goto yy58; - } else { - if(yych <= 'T') goto yy1028; - if(yych >= 'W') goto yy62; - } + if (yych == 'h') goto yy60; } } } else { - if(yych <= 'l') { - if(yych <= 'd') { - if(yych == 'Y') goto yy64; - if(yych >= 'd') goto yy61; - } else { - if(yych <= 'f') { - if(yych >= 'f') goto yy63; - } else { - if(yych == 'h') goto yy60; - } - } + if (yych <= 't') { + if (yych <= 'm') goto yy59; + if (yych <= 'r') goto yy1032; + if (yych <= 's') goto yy58; + goto yy1034; } else { - if(yych <= 't') { - if(yych <= 'm') goto yy59; - if(yych <= 'r') goto yy1027; - if(yych <= 's') goto yy58; - goto yy1029; + if (yych <= 'w') { + if (yych >= 'w') goto yy62; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy62; - } else { - if(yych == 'y') goto yy64; - } + if (yych == 'y') goto yy64; } } } -yy1027: - YYDEBUG(1027, *YYCURSOR); -#line 1237 "ext/date/lib/parse_date.re" - { + } +yy1032: + YYDEBUG(1032, *YYCURSOR); +#line 1238 "ext/date/lib/parse_date.re" + { DEBUG_OUTPUT("datenocolon"); TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -16636,1930 +16646,1932 @@ yy1027: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 16640 "ext/date/lib/parse_date.c" -yy1028: - YYDEBUG(1028, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1043; - goto yy1044; - } else { - if(yych <= '9') goto yy1045; - if(yych <= 'G') goto yy53; - goto yy66; - } - } else { - if(yych <= 'g') { - if(yych == 'U') goto yy67; - goto yy53; - } else { - if(yych <= 'h') goto yy66; - if(yych == 'u') goto yy67; - goto yy53; - } +#line 16650 "ext/date/lib/parse_date.c" +yy1033: + YYDEBUG(1033, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1048; + goto yy1049; + } else { + if (yych <= '9') goto yy1050; + if (yych <= 'G') goto yy53; + goto yy66; } -yy1029: - YYDEBUG(1029, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '2') goto yy1031; - } else { - if(yych <= '9') goto yy1032; - if(yych <= 'G') goto yy53; - goto yy66; - } + } else { + if (yych <= 'g') { + if (yych == 'U') goto yy67; + goto yy53; } else { - if(yych <= 'g') { - if(yych == 'U') goto yy67; - goto yy53; - } else { - if(yych <= 'h') goto yy66; - if(yych == 'u') goto yy67; - goto yy53; - } + if (yych <= 'h') goto yy66; + if (yych == 'u') goto yy67; + goto yy53; } - YYDEBUG(1030, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1037; - if(yych <= '9') goto yy1032; - goto yy53; -yy1031: - YYDEBUG(1031, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1037; - if(yych <= '5') goto yy1033; - goto yy53; -yy1032: - YYDEBUG(1032, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; -yy1033: - YYDEBUG(1033, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + } yy1034: - YYDEBUG(1034, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1035; - if(yych <= '6') goto yy1036; - goto yy53; -yy1035: - YYDEBUG(1035, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1034, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '2') goto yy1036; + } else { + if (yych <= '9') goto yy1037; + if (yych <= 'G') goto yy53; + goto yy66; + } + } else { + if (yych <= 'g') { + if (yych == 'U') goto yy67; + goto yy53; + } else { + if (yych <= 'h') goto yy66; + if (yych == 'u') goto yy67; + goto yy53; + } + } + YYDEBUG(1035, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1042; + if (yych <= '9') goto yy1037; + goto yy53; yy1036: - YYDEBUG(1036, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy53; + YYDEBUG(1036, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1042; + if (yych <= '5') goto yy1038; + goto yy53; yy1037: - YYDEBUG(1037, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1038; - if(yych <= '9') goto yy1034; - goto yy53; + YYDEBUG(1037, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; yy1038: - YYDEBUG(1038, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1039; - if(yych <= '6') goto yy1040; - if(yych <= '9') goto yy1034; - goto yy53; + YYDEBUG(1038, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1039: - YYDEBUG(1039, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1041; - if(yych <= '6') goto yy1042; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1039, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1040; + if (yych <= '6') goto yy1041; + goto yy53; yy1040: - YYDEBUG(1040, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1041; - if(yych <= '5') goto yy1035; - if(yych <= '6') goto yy1036; - goto yy53; + YYDEBUG(1040, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; yy1041: - YYDEBUG(1041, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1041, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy53; yy1042: - YYDEBUG(1042, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy1021; + YYDEBUG(1042, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1043; + if (yych <= '9') goto yy1039; + goto yy53; yy1043: - YYDEBUG(1043, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1052; - if(yych <= '9') goto yy1045; - if(yych <= ':') goto yy1046; - goto yy53; + YYDEBUG(1043, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1044; + if (yych <= '6') goto yy1045; + if (yych <= '9') goto yy1039; + goto yy53; yy1044: - YYDEBUG(1044, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1052; - goto yy1033; - } else { - if(yych == ':') goto yy1046; - goto yy53; - } + YYDEBUG(1044, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1046; + if (yych <= '6') goto yy1047; + if (yych <= '9') goto yy1025; + goto yy53; yy1045: - YYDEBUG(1045, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1033; - if(yych != ':') goto yy53; + YYDEBUG(1045, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1046; + if (yych <= '5') goto yy1040; + if (yych <= '6') goto yy1041; + goto yy53; yy1046: - YYDEBUG(1046, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= '6') goto yy53; - YYDEBUG(1047, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1048, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1049, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1050; - if(yych <= '6') goto yy1051; + YYDEBUG(1046, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; +yy1047: + YYDEBUG(1047, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy1026; +yy1048: + YYDEBUG(1048, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1057; + if (yych <= '9') goto yy1050; + if (yych <= ':') goto yy1051; + goto yy53; +yy1049: + YYDEBUG(1049, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1057; + goto yy1038; + } else { + if (yych == ':') goto yy1051; goto yy53; + } yy1050: - YYDEBUG(1050, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1050, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1038; + if (yych != ':') goto yy53; yy1051: - YYDEBUG(1051, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy53; -yy1052: - YYDEBUG(1052, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1038; - if(yych <= '9') goto yy1034; - if(yych <= ':') goto yy1046; - goto yy53; -yy1053: - YYDEBUG(1053, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1055; - goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } -yy1054: - YYDEBUG(1054, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1023; - goto yy1024; - } else { - if(yych <= '3') goto yy1025; - if(yych <= '9') goto yy999; - goto yy57; - } + YYDEBUG(1051, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= '6') goto yy53; + YYDEBUG(1052, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1053, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1054, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1055; + if (yych <= '6') goto yy1056; + goto yy53; yy1055: - YYDEBUG(1055, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1026; - goto yy57; + YYDEBUG(1055, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1025; + goto yy53; yy1056: - YYDEBUG(1056, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1057; - if(yych != 'c') goto yy53; + YYDEBUG(1056, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy53; yy1057: - YYDEBUG(1057, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1058; - if(yych != 'e') goto yy972; + YYDEBUG(1057, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1043; + if (yych <= '9') goto yy1039; + if (yych <= ':') goto yy1051; + goto yy53; yy1058: - YYDEBUG(1058, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1059; - if(yych != 'm') goto yy53; + YYDEBUG(1058, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1060; + goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } yy1059: - YYDEBUG(1059, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1060; - if(yych != 'b') goto yy53; + YYDEBUG(1059, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1028; + goto yy1029; + } else { + if (yych <= '3') goto yy1030; + if (yych <= '9') goto yy1004; + goto yy57; + } yy1060: - YYDEBUG(1060, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1061; - if(yych != 'e') goto yy53; + YYDEBUG(1060, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1031; + goto yy57; yy1061: - YYDEBUG(1061, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych != 'r') goto yy53; + YYDEBUG(1061, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1062; + if (yych != 'c') goto yy53; yy1062: - YYDEBUG(1062, *YYCURSOR); - yych = *++YYCURSOR; - goto yy972; + YYDEBUG(1062, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1063; + if (yych != 'e') goto yy977; yy1063: - YYDEBUG(1063, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy1064; - if(yych != 'v') goto yy53; + YYDEBUG(1063, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1064; + if (yych != 'm') goto yy53; yy1064: - YYDEBUG(1064, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1065; - if(yych != 'e') goto yy972; + YYDEBUG(1064, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1065; + if (yych != 'b') goto yy53; yy1065: - YYDEBUG(1065, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1066; - if(yych != 'm') goto yy53; + YYDEBUG(1065, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1066; + if (yych != 'e') goto yy53; yy1066: - YYDEBUG(1066, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1067; - if(yych != 'b') goto yy53; + YYDEBUG(1066, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych != 'r') goto yy53; yy1067: - YYDEBUG(1067, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1068; - if(yych != 'e') goto yy53; + YYDEBUG(1067, *YYCURSOR); + yych = *++YYCURSOR; + goto yy977; yy1068: - YYDEBUG(1068, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1068, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy1069; + if (yych != 'v') goto yy53; yy1069: - YYDEBUG(1069, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1070; - if(yych != 't') goto yy53; + YYDEBUG(1069, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1070; + if (yych != 'e') goto yy977; yy1070: - YYDEBUG(1070, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'O') goto yy1071; - if(yych != 'o') goto yy972; + YYDEBUG(1070, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1071; + if (yych != 'm') goto yy53; yy1071: - YYDEBUG(1071, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1072; - if(yych != 'b') goto yy53; + YYDEBUG(1071, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1072; + if (yych != 'b') goto yy53; yy1072: - YYDEBUG(1072, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1073; - if(yych != 'e') goto yy53; + YYDEBUG(1072, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1073; + if (yych != 'e') goto yy53; yy1073: - YYDEBUG(1073, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1073, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1074: - YYDEBUG(1074, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'P') { - if(yych == 'C') goto yy125; - if(yych <= 'O') goto yy53; - } else { - if(yych <= 'c') { - if(yych <= 'b') goto yy53; - goto yy125; - } else { - if(yych != 'p') goto yy53; - } - } + YYDEBUG(1074, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1075; + if (yych != 't') goto yy53; yy1075: - YYDEBUG(1075, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1076; - if(yych != 't') goto yy972; + YYDEBUG(1075, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'O') goto yy1076; + if (yych != 'o') goto yy977; yy1076: - YYDEBUG(1076, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'E') goto yy1077; - if(yych != 'e') goto yy972; + YYDEBUG(1076, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1077; + if (yych != 'b') goto yy53; yy1077: - YYDEBUG(1077, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'M') goto yy1078; - if(yych != 'm') goto yy53; + YYDEBUG(1077, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1078; + if (yych != 'e') goto yy53; yy1078: - YYDEBUG(1078, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1079; - if(yych != 'b') goto yy53; + YYDEBUG(1078, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1079: - YYDEBUG(1079, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1080; - if(yych != 'e') goto yy53; + YYDEBUG(1079, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'P') { + if (yych == 'C') goto yy125; + if (yych <= 'O') goto yy53; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy53; + goto yy125; + } else { + if (yych != 'p') goto yy53; + } + } yy1080: - YYDEBUG(1080, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1062; - if(yych == 'r') goto yy1062; - goto yy53; + YYDEBUG(1080, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1081; + if (yych != 't') goto yy977; yy1081: - YYDEBUG(1081, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy1085; - if(yych == 'g') goto yy1085; - goto yy53; + YYDEBUG(1081, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'E') goto yy1082; + if (yych != 'e') goto yy977; yy1082: - YYDEBUG(1082, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1083; - if(yych != 'r') goto yy53; + YYDEBUG(1082, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1083; + if (yych != 'm') goto yy53; yy1083: - YYDEBUG(1083, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'I') goto yy1084; - if(yych != 'i') goto yy972; + YYDEBUG(1083, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1084; + if (yych != 'b') goto yy53; yy1084: - YYDEBUG(1084, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'L') goto yy1062; - if(yych == 'l') goto yy1062; - goto yy53; + YYDEBUG(1084, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1085; + if (yych != 'e') goto yy53; yy1085: - YYDEBUG(1085, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy1086; - if(yych != 'u') goto yy972; + YYDEBUG(1085, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1067; + if (yych == 'r') goto yy1067; + goto yy53; yy1086: - YYDEBUG(1086, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'S') goto yy1087; - if(yych != 's') goto yy53; + YYDEBUG(1086, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy1090; + if (yych == 'g') goto yy1090; + goto yy53; yy1087: - YYDEBUG(1087, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1062; - if(yych == 't') goto yy1062; - goto yy53; + YYDEBUG(1087, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1088; + if (yych != 'r') goto yy53; yy1088: - YYDEBUG(1088, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy1089; - if(yych <= 'X') goto yy53; - goto yy1062; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy1062; - goto yy53; - } - } + YYDEBUG(1088, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'I') goto yy1089; + if (yych != 'i') goto yy977; yy1089: - YYDEBUG(1089, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'C') goto yy1090; - if(yych != 'c') goto yy972; + YYDEBUG(1089, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy1067; + if (yych == 'l') goto yy1067; + goto yy53; yy1090: - YYDEBUG(1090, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'H') goto yy1062; - if(yych == 'h') goto yy1062; - goto yy53; + YYDEBUG(1090, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy1091; + if (yych != 'u') goto yy977; yy1091: - YYDEBUG(1091, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1092; - if(yych != 'b') goto yy53; + YYDEBUG(1091, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy1092; + if (yych != 's') goto yy53; yy1092: - YYDEBUG(1092, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'R') goto yy1093; - if(yych != 'r') goto yy972; + YYDEBUG(1092, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1067; + if (yych == 't') goto yy1067; + goto yy53; yy1093: - YYDEBUG(1093, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'U') goto yy1094; - if(yych != 'u') goto yy53; + YYDEBUG(1093, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy1094; + if (yych <= 'X') goto yy53; + goto yy1067; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy1067; + goto yy53; + } + } yy1094: - YYDEBUG(1094, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1095; - if(yych != 'a') goto yy53; + YYDEBUG(1094, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'C') goto yy1095; + if (yych != 'c') goto yy977; yy1095: - YYDEBUG(1095, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1096; - if(yych != 'r') goto yy53; + YYDEBUG(1095, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy1067; + if (yych == 'h') goto yy1067; + goto yy53; yy1096: - YYDEBUG(1096, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy53; + YYDEBUG(1096, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1097; + if (yych != 'b') goto yy53; yy1097: - YYDEBUG(1097, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy1104; - if(yych <= 'M') goto yy53; - goto yy1103; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy1104; - } else { - if(yych == 'n') goto yy1103; - goto yy53; - } - } + YYDEBUG(1097, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'R') goto yy1098; + if (yych != 'r') goto yy977; yy1098: - YYDEBUG(1098, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy1099; - if(yych != 'n') goto yy53; + YYDEBUG(1098, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy1099; + if (yych != 'u') goto yy53; yy1099: - YYDEBUG(1099, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'U') goto yy1100; - if(yych != 'u') goto yy972; + YYDEBUG(1099, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1100; + if (yych != 'a') goto yy53; yy1100: - YYDEBUG(1100, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1101; - if(yych != 'a') goto yy53; + YYDEBUG(1100, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1101; + if (yych != 'r') goto yy53; yy1101: - YYDEBUG(1101, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1102; - if(yych != 'r') goto yy53; + YYDEBUG(1101, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy53; yy1102: - YYDEBUG(1102, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy53; + YYDEBUG(1102, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy1109; + if (yych <= 'M') goto yy53; + goto yy1108; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy1109; + } else { + if (yych == 'n') goto yy1108; + goto yy53; + } + } yy1103: - YYDEBUG(1103, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1062; - if(yych == 'e') goto yy1062; - goto yy972; + YYDEBUG(1103, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1104; + if (yych != 'n') goto yy53; yy1104: - YYDEBUG(1104, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy972; + YYDEBUG(1104, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'U') goto yy1105; + if (yych != 'u') goto yy977; yy1105: - YYDEBUG(1105, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1106; + if (yych != 'a') goto yy53; yy1106: - YYDEBUG(1106, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 'I') goto yy972; - YYDEBUG(1107, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1106, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1107; + if (yych != 'r') goto yy53; +yy1107: + YYDEBUG(1107, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy53; yy1108: - YYDEBUG(1108, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'I') goto yy1062; - goto yy972; + YYDEBUG(1108, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1067; + if (yych == 'e') goto yy1067; + goto yy977; yy1109: - YYDEBUG(1109, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy1124; - if(yych <= '9') goto yy1123; - goto yy53; + YYDEBUG(1109, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy977; yy1110: - YYDEBUG(1110, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1122; - goto yy53; + YYDEBUG(1110, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1111: - YYDEBUG(1111, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1120; - if(yych <= '6') goto yy1119; - goto yy53; -yy1112: - YYDEBUG(1112, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1091; - if(yych == 'e') goto yy1091; - goto yy53; + YYDEBUG(1111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != 'I') goto yy977; + YYDEBUG(1112, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1113: - YYDEBUG(1113, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1088; - if(yych == 'a') goto yy1088; - goto yy53; + YYDEBUG(1113, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1067; + goto yy977; yy1114: - YYDEBUG(1114, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1118; - if(yych == 'e') goto yy1118; - goto yy53; + YYDEBUG(1114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy1129; + if (yych <= '9') goto yy1128; + goto yy53; yy1115: - YYDEBUG(1115, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1056; - if(yych == 'e') goto yy1056; - goto yy53; + YYDEBUG(1115, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1127; + goto yy53; yy1116: - YYDEBUG(1116, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; + YYDEBUG(1116, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1125; + if (yych <= '6') goto yy1124; + goto yy53; yy1117: - YYDEBUG(1117, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': - case '-': - case '.': goto yy1116; - case 'A': - case 'a': goto yy978; - case 'D': - case 'd': goto yy1115; - case 'F': - case 'f': goto yy1112; - case 'I': goto yy971; - case 'J': - case 'j': goto yy975; - case 'M': - case 'm': goto yy1113; - case 'N': - case 'n': goto yy981; - case 'O': - case 'o': goto yy980; - case 'S': - case 's': goto yy1114; - case 'V': goto yy973; - case 'X': goto yy974; - default: goto yy53; - } + YYDEBUG(1117, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1096; + if (yych == 'e') goto yy1096; + goto yy53; yy1118: - YYDEBUG(1118, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy1075; - if(yych == 'p') goto yy1075; - goto yy53; + YYDEBUG(1118, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1093; + if (yych == 'a') goto yy1093; + goto yy53; yy1119: - YYDEBUG(1119, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '6') goto yy1121; - goto yy53; + YYDEBUG(1119, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1123; + if (yych == 'e') goto yy1123; + goto yy53; yy1120: - YYDEBUG(1120, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(1120, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1061; + if (yych == 'e') goto yy1061; + goto yy53; yy1121: - YYDEBUG(1121, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1000; + YYDEBUG(1121, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; yy1122: - YYDEBUG(1122, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1122, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy1121; + case 'A': + case 'a': goto yy983; + case 'D': + case 'd': goto yy1120; + case 'F': + case 'f': goto yy1117; + case 'I': goto yy976; + case 'J': + case 'j': goto yy980; + case 'M': + case 'm': goto yy1118; + case 'N': + case 'n': goto yy986; + case 'O': + case 'o': goto yy985; + case 'S': + case 's': goto yy1119; + case 'V': goto yy978; + case 'X': goto yy979; + default: goto yy53; + } yy1123: - YYDEBUG(1123, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy1080; + if (yych == 'p') goto yy1080; + goto yy53; yy1124: - YYDEBUG(1124, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '0') goto yy53; - if(yych <= '9') goto yy1121; - goto yy53; + YYDEBUG(1124, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '6') goto yy1126; + goto yy53; yy1125: - YYDEBUG(1125, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') goto yy53; - if(yych <= '/') goto yy1128; - if(yych <= '9') goto yy1136; - goto yy53; + YYDEBUG(1125, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1126: - YYDEBUG(1126, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') goto yy53; - if(yych <= '/') goto yy1128; - if(yych <= '2') goto yy1136; - goto yy53; + YYDEBUG(1126, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1005; yy1127: - YYDEBUG(1127, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; + YYDEBUG(1127, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1128: - YYDEBUG(1128, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy1129; - if(yych <= '3') goto yy1130; - if(yych <= '9') goto yy1131; - goto yy53; + YYDEBUG(1128, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1129: - YYDEBUG(1129, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1131; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '0') goto yy53; + if (yych <= '9') goto yy1126; + goto yy53; yy1130: - YYDEBUG(1130, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '1') goto yy1131; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1130, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') goto yy53; + if (yych <= '/') goto yy1133; + if (yych <= '9') goto yy1141; + goto yy53; yy1131: - YYDEBUG(1131, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'q') { - if(yych == 'n') goto yy1133; - goto yy660; - } else { - if(yych <= 'r') goto yy1134; - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + YYDEBUG(1131, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') goto yy53; + if (yych <= '/') goto yy1133; + if (yych <= '2') goto yy1141; + goto yy53; yy1132: - YYDEBUG(1132, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy659; - goto yy53; + YYDEBUG(1132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; yy1133: - YYDEBUG(1133, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy659; - goto yy53; + YYDEBUG(1133, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy1134; + if (yych <= '3') goto yy1135; + if (yych <= '9') goto yy1136; + goto yy53; yy1134: - YYDEBUG(1134, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy659; - goto yy53; -yy1135: - YYDEBUG(1135, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy659; - goto yy53; -yy1136: - YYDEBUG(1136, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '/') goto yy53; - YYDEBUG(1137, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1139; - } else { - if(yych <= '3') goto yy1140; - if(yych <= '9') goto yy1131; - goto yy53; - } - YYDEBUG(1138, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; + YYDEBUG(1134, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1136; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } -yy1139: - YYDEBUG(1139, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '9') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; + } +yy1135: + YYDEBUG(1135, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '1') goto yy1136; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } + } +yy1136: + YYDEBUG(1136, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'q') { + if (yych == 'n') goto yy1138; + goto yy658; + } else { + if (yych <= 'r') goto yy1139; + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } +yy1137: + YYDEBUG(1137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy657; + goto yy53; +yy1138: + YYDEBUG(1138, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy657; + goto yy53; +yy1139: + YYDEBUG(1139, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy657; + goto yy53; yy1140: - YYDEBUG(1140, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy660; - if(yych <= '1') goto yy1141; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } + YYDEBUG(1140, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy657; + goto yy53; yy1141: - YYDEBUG(1141, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == '/') goto yy659; - if(yych <= 'm') goto yy660; - goto yy1133; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1134; - } else { - if(yych <= 's') goto yy1132; - if(yych <= 't') goto yy1135; - goto yy660; - } - } -yy1142: - YYDEBUG(1142, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'A') goto yy1219; - if(yych <= 'T') goto yy53; - goto yy1218; - } else { - if(yych <= 'a') { - if(yych <= '`') goto yy53; - goto yy1219; - } else { - if(yych == 'u') goto yy1218; - goto yy53; - } - } -yy1143: - YYDEBUG(1143, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1216; - if(yych == 'e') goto yy1216; + YYDEBUG(1141, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '/') goto yy53; + YYDEBUG(1142, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1144; + } else { + if (yych <= '3') goto yy1145; + if (yych <= '9') goto yy1136; goto yy53; + } + YYDEBUG(1143, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1144: - YYDEBUG(1144, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1213; - if(yych == 'a') goto yy1213; - goto yy53; + YYDEBUG(1144, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '9') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1145: - YYDEBUG(1145, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych == 'P') goto yy1210; - if(yych <= 'T') goto yy53; - goto yy1209; - } else { - if(yych <= 'p') { - if(yych <= 'o') goto yy53; - goto yy1210; - } else { - if(yych == 'u') goto yy1209; - goto yy53; - } + YYDEBUG(1145, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy658; + if (yych <= '1') goto yy1146; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; } + } yy1146: - YYDEBUG(1146, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1206; - if(yych == 'e') goto yy1206; - goto yy53; + YYDEBUG(1146, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == '/') goto yy657; + if (yych <= 'm') goto yy658; + goto yy1138; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1139; + } else { + if (yych <= 's') goto yy1137; + if (yych <= 't') goto yy1140; + goto yy658; + } + } yy1147: - YYDEBUG(1147, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1204; - if(yych == 'c') goto yy1204; - goto yy53; + YYDEBUG(1147, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'A') goto yy1224; + if (yych <= 'T') goto yy53; + goto yy1223; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy53; + goto yy1224; + } else { + if (yych == 'u') goto yy1223; + goto yy53; + } + } yy1148: - YYDEBUG(1148, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'O') goto yy1202; - if(yych == 'o') goto yy1202; - goto yy53; + YYDEBUG(1148, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1221; + if (yych == 'e') goto yy1221; + goto yy53; yy1149: - YYDEBUG(1149, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'E') goto yy1200; - if(yych == 'e') goto yy1200; - goto yy53; + YYDEBUG(1149, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1218; + if (yych == 'a') goto yy1218; + goto yy53; yy1150: - YYDEBUG(1150, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '0') goto yy989; - if(yych <= '4') goto yy990; - if(yych <= '5') goto yy991; - goto yy53; + YYDEBUG(1150, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy1215; + if (yych <= 'T') goto yy53; + goto yy1214; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy53; + goto yy1215; + } else { + if (yych == 'u') goto yy1214; + goto yy53; + } + } yy1151: - YYDEBUG(1151, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1155; - if(yych <= '/') goto yy1152; - if(yych <= '9') goto yy1174; + YYDEBUG(1151, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1211; + if (yych == 'e') goto yy1211; + goto yy53; yy1152: - YYDEBUG(1152, *YYCURSOR); + YYDEBUG(1152, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1209; + if (yych == 'c') goto yy1209; + goto yy53; +yy1153: + YYDEBUG(1153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1207; + if (yych == 'o') goto yy1207; + goto yy53; +yy1154: + YYDEBUG(1154, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1205; + if (yych == 'e') goto yy1205; + goto yy53; +yy1155: + YYDEBUG(1155, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '0') goto yy994; + if (yych <= '4') goto yy995; + if (yych <= '5') goto yy996; + goto yy53; +yy1156: + YYDEBUG(1156, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1160; + if (yych <= '/') goto yy1157; + if (yych <= '9') goto yy1179; +yy1157: + YYDEBUG(1157, *YYCURSOR); #line 1122 "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 17571 "ext/date/lib/parse_date.c" -yy1153: - YYDEBUG(1153, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy1155; - if(yych <= '/') goto yy1152; - if(yych <= '2') goto yy1174; - goto yy1152; -yy1154: - YYDEBUG(1154, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '-') goto yy1152; -yy1155: - YYDEBUG(1155, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '2') goto yy1156; - if(yych <= '3') goto yy1157; - if(yych <= '9') goto yy1158; - goto yy53; -yy1156: - YYDEBUG(1156, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1158; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } +#line 17582 "ext/date/lib/parse_date.c" +yy1158: + YYDEBUG(1158, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy1160; + if (yych <= '/') goto yy1157; + if (yych <= '2') goto yy1179; + goto yy1157; +yy1159: + YYDEBUG(1159, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '-') goto yy1157; +yy1160: + YYDEBUG(1160, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '2') goto yy1161; + if (yych <= '3') goto yy1162; + if (yych <= '9') goto yy1163; + goto yy53; +yy1161: + YYDEBUG(1161, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1163; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1157: - YYDEBUG(1157, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1158: - YYDEBUG(1158, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == 'T') goto yy1163; - if(yych <= 'm') goto yy844; - goto yy1160; + } +yy1162: + YYDEBUG(1162, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy843; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1159: - YYDEBUG(1159, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 't') goto yy1173; - goto yy53; -yy1160: - YYDEBUG(1160, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy1173; - goto yy53; -yy1161: - YYDEBUG(1161, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy1173; - goto yy53; -yy1162: - YYDEBUG(1162, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'h') goto yy1173; - goto yy53; -yy1163: - YYDEBUG(1163, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1164; - if(yych <= '2') goto yy1165; - if(yych <= '9') goto yy1166; - goto yy53; + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } +yy1163: + YYDEBUG(1163, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == 'T') goto yy1168; + if (yych <= 'm') goto yy843; + goto yy1165; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } yy1164: - YYDEBUG(1164, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1166; - if(yych <= ':') goto yy1167; - goto yy53; + YYDEBUG(1164, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy1178; + goto yy53; yy1165: - YYDEBUG(1165, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1166; - if(yych == ':') goto yy1167; - goto yy53; + YYDEBUG(1165, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy1178; + goto yy53; yy1166: - YYDEBUG(1166, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; + YYDEBUG(1166, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy1178; + goto yy53; yy1167: - YYDEBUG(1167, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1168; - if(yych <= '9') goto yy1169; - goto yy53; + YYDEBUG(1167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'h') goto yy1178; + goto yy53; yy1168: - YYDEBUG(1168, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1169; - if(yych <= ':') goto yy1170; - goto yy53; + YYDEBUG(1168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1169; + if (yych <= '2') goto yy1170; + if (yych <= '9') goto yy1171; + goto yy53; yy1169: - YYDEBUG(1169, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; + YYDEBUG(1169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1171; + if (yych <= ':') goto yy1172; + goto yy53; yy1170: - YYDEBUG(1170, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1171; - if(yych <= '6') goto yy1172; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1171; + if (yych == ':') goto yy1172; + goto yy53; yy1171: - YYDEBUG(1171, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; yy1172: - YYDEBUG(1172, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '0') goto yy1020; - goto yy1021; + YYDEBUG(1172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1173; + if (yych <= '9') goto yy1174; + goto yy53; yy1173: - YYDEBUG(1173, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'T') goto yy1163; - goto yy844; + YYDEBUG(1173, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1174; + if (yych <= ':') goto yy1175; + goto yy53; yy1174: - YYDEBUG(1174, *YYCURSOR); - yyaccept = 23; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '-') goto yy1152; - YYDEBUG(1175, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1177; - } else { - if(yych <= '3') goto yy1178; - if(yych <= '9') goto yy1158; - goto yy53; + YYDEBUG(1174, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; +yy1175: + YYDEBUG(1175, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1176; + if (yych <= '6') goto yy1177; + if (yych <= '9') goto yy1025; + goto yy53; +yy1176: + YYDEBUG(1176, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; +yy1177: + YYDEBUG(1177, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '0') goto yy1025; + goto yy1026; +yy1178: + YYDEBUG(1178, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'T') goto yy1168; + goto yy843; +yy1179: + YYDEBUG(1179, *YYCURSOR); + yyaccept = 23; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '-') goto yy1157; + YYDEBUG(1180, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1182; + } else { + if (yych <= '3') goto yy1183; + if (yych <= '9') goto yy1163; + goto yy53; + } + YYDEBUG(1181, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1184; + } else { + if (yych == 'T') goto yy1168; + goto yy843; } - YYDEBUG(1176, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1179; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1177: - YYDEBUG(1177, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '9') { - if(yych <= '/') goto yy844; - goto yy1179; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } +yy1182: + YYDEBUG(1182, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '9') { + if (yych <= '/') goto yy843; + goto yy1184; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych == 'T') goto yy1168; + goto yy843; } -yy1178: - YYDEBUG(1178, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'm') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych == 'T') goto yy1163; - goto yy844; - } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; } else { - if(yych <= 'r') { - if(yych <= 'n') goto yy1160; - if(yych <= 'q') goto yy844; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy844; - } + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; } -yy1179: - YYDEBUG(1179, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych == 'T') goto yy1180; - if(yych <= 'm') goto yy660; - goto yy1160; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy660; - goto yy1161; - } else { - if(yych <= 's') goto yy1159; - if(yych <= 't') goto yy1162; - goto yy660; - } - } -yy1180: - YYDEBUG(1180, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1181; - if(yych <= '2') goto yy1182; - if(yych <= '9') goto yy1166; - goto yy53; -yy1181: - YYDEBUG(1181, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1183; - if(yych <= ':') goto yy1167; - goto yy53; -yy1182: - YYDEBUG(1182, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '3') goto yy1183; - if(yych == ':') goto yy1167; - goto yy53; + } yy1183: - YYDEBUG(1183, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1184, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1185; - if(yych <= '9') goto yy1169; - goto yy53; + YYDEBUG(1183, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'm') { + if (yych <= '1') { + if (yych <= '/') goto yy843; + } else { + if (yych == 'T') goto yy1168; + goto yy843; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy1165; + if (yych <= 'q') goto yy843; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy843; + } + } +yy1184: + YYDEBUG(1184, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych == 'T') goto yy1185; + if (yych <= 'm') goto yy658; + goto yy1165; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy658; + goto yy1166; + } else { + if (yych <= 's') goto yy1164; + if (yych <= 't') goto yy1167; + goto yy658; + } + } yy1185: - YYDEBUG(1185, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1186; - if(yych <= ':') goto yy1170; - goto yy53; + YYDEBUG(1185, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1186; + if (yych <= '2') goto yy1187; + if (yych <= '9') goto yy1171; + goto yy53; yy1186: - YYDEBUG(1186, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != ':') goto yy53; - YYDEBUG(1187, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1188; - if(yych <= '6') goto yy1189; - if(yych <= '9') goto yy1020; - goto yy53; + YYDEBUG(1186, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1188; + if (yych <= ':') goto yy1172; + goto yy53; +yy1187: + YYDEBUG(1187, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '3') goto yy1188; + if (yych == ':') goto yy1172; + goto yy53; yy1188: - YYDEBUG(1188, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1190; - goto yy1021; -yy1189: - YYDEBUG(1189, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy1021; + YYDEBUG(1188, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1190; + if (yych <= '9') goto yy1174; + goto yy53; yy1190: - YYDEBUG(1190, *YYCURSOR); - yyaccept = 24; - yych = *(YYMARKER = ++YYCURSOR); - if(yych != '.') goto yy1021; - YYDEBUG(1191, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; -yy1192: - YYDEBUG(1192, *YYCURSOR); - yyaccept = 24; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); - yych = *YYCURSOR; - YYDEBUG(1193, *YYCURSOR); - if(yych <= ',') { - if(yych != '+') goto yy1021; - } else { - if(yych <= '-') goto yy1194; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1192; - goto yy1021; - } + YYDEBUG(1190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1191; + if (yych <= ':') goto yy1175; + goto yy53; +yy1191: + YYDEBUG(1191, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != ':') goto yy53; + YYDEBUG(1192, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1193; + if (yych <= '6') goto yy1194; + if (yych <= '9') goto yy1025; + goto yy53; +yy1193: + YYDEBUG(1193, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1195; + goto yy1026; yy1194: - YYDEBUG(1194, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '1') goto yy1195; - if(yych <= '2') goto yy1196; - if(yych <= '9') goto yy1197; - goto yy53; + YYDEBUG(1194, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy1026; yy1195: - YYDEBUG(1195, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1197; - if(yych <= ':') goto yy1198; - goto yy1021; -yy1196: - YYDEBUG(1196, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '5') { - if(yych <= '/') goto yy1021; - if(yych >= '4') goto yy1199; - } else { - if(yych <= '9') goto yy1020; - if(yych <= ':') goto yy1198; - goto yy1021; - } + YYDEBUG(1195, *YYCURSOR); + yyaccept = 24; + yych = *(YYMARKER = ++YYCURSOR); + if (yych != '.') goto yy1026; + YYDEBUG(1196, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; yy1197: - YYDEBUG(1197, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '5') goto yy1199; - if(yych <= '9') goto yy1020; - if(yych >= ';') goto yy1021; -yy1198: - YYDEBUG(1198, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '5') goto yy1199; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1197, *YYCURSOR); + yyaccept = 24; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + YYDEBUG(1198, *YYCURSOR); + if (yych <= ',') { + if (yych != '+') goto yy1026; + } else { + if (yych <= '-') goto yy1199; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1197; + goto yy1026; + } yy1199: - YYDEBUG(1199, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1021; - if(yych <= '9') goto yy1020; - goto yy1021; + YYDEBUG(1199, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '1') goto yy1200; + if (yych <= '2') goto yy1201; + if (yych <= '9') goto yy1202; + goto yy53; yy1200: - YYDEBUG(1200, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'C') goto yy1201; - if(yych != 'c') goto yy53; + YYDEBUG(1200, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1202; + if (yych <= ':') goto yy1203; + goto yy1026; yy1201: - YYDEBUG(1201, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1058; - if(yych == 'e') goto yy1058; - goto yy972; - } + YYDEBUG(1201, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy1026; + if (yych >= '4') goto yy1204; + } else { + if (yych <= '9') goto yy1025; + if (yych <= ':') goto yy1203; + goto yy1026; + } yy1202: - YYDEBUG(1202, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'V') goto yy1203; - if(yych != 'v') goto yy53; + YYDEBUG(1202, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '5') goto yy1204; + if (yych <= '9') goto yy1025; + if (yych >= ';') goto yy1026; yy1203: - YYDEBUG(1203, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1065; - if(yych == 'e') goto yy1065; - goto yy972; - } + YYDEBUG(1203, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '5') goto yy1204; + if (yych <= '9') goto yy1025; + goto yy1026; yy1204: - YYDEBUG(1204, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1205; - if(yych != 't') goto yy53; + YYDEBUG(1204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1025; + goto yy1026; yy1205: - YYDEBUG(1205, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'O') goto yy1071; - if(yych == 'o') goto yy1071; - goto yy972; - } + YYDEBUG(1205, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy1206; + if (yych != 'c') goto yy53; yy1206: - YYDEBUG(1206, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'P') goto yy1207; - if(yych != 'p') goto yy53; + YYDEBUG(1206, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1063; + if (yych == 'e') goto yy1063; + goto yy977; + } yy1207: - YYDEBUG(1207, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'T') goto yy1208; - if(yych != 't') goto yy972; - } + YYDEBUG(1207, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy1208; + if (yych != 'v') goto yy53; yy1208: - YYDEBUG(1208, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1077; - if(yych == 'e') goto yy1077; - goto yy972; - } + YYDEBUG(1208, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1070; + if (yych == 'e') goto yy1070; + goto yy977; + } yy1209: - YYDEBUG(1209, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'G') goto yy1212; - if(yych == 'g') goto yy1212; - goto yy53; + YYDEBUG(1209, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1210; + if (yych != 't') goto yy53; yy1210: - YYDEBUG(1210, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy1211; - if(yych != 'r') goto yy53; + YYDEBUG(1210, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'O') goto yy1076; + if (yych == 'o') goto yy1076; + goto yy977; + } yy1211: - YYDEBUG(1211, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'I') goto yy1084; - if(yych == 'i') goto yy1084; - goto yy972; - } + YYDEBUG(1211, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy1212; + if (yych != 'p') goto yy53; yy1212: - YYDEBUG(1212, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'U') goto yy1086; - if(yych == 'u') goto yy1086; - goto yy972; - } + YYDEBUG(1212, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'T') goto yy1213; + if (yych != 't') goto yy977; + } yy1213: - YYDEBUG(1213, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych == 'R') goto yy1214; - if(yych <= 'X') goto yy53; - goto yy1215; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy53; - } else { - if(yych == 'y') goto yy1215; - goto yy53; - } - } + YYDEBUG(1213, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1082; + if (yych == 'e') goto yy1082; + goto yy977; + } yy1214: - YYDEBUG(1214, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'C') goto yy1090; - if(yych == 'c') goto yy1090; - goto yy972; - } + YYDEBUG(1214, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy1217; + if (yych == 'g') goto yy1217; + goto yy53; yy1215: - YYDEBUG(1215, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '-') goto yy945; - goto yy972; + YYDEBUG(1215, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1216; + if (yych != 'r') goto yy53; yy1216: - YYDEBUG(1216, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'B') goto yy1217; - if(yych != 'b') goto yy53; + YYDEBUG(1216, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'I') goto yy1089; + if (yych == 'i') goto yy1089; + goto yy977; + } yy1217: - YYDEBUG(1217, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Q') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'R') goto yy1093; - if(yych == 'r') goto yy1093; - goto yy972; - } + YYDEBUG(1217, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'U') goto yy1091; + if (yych == 'u') goto yy1091; + goto yy977; + } yy1218: - YYDEBUG(1218, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych == 'L') goto yy1222; - if(yych <= 'M') goto yy53; - goto yy1221; - } else { - if(yych <= 'l') { - if(yych <= 'k') goto yy53; - goto yy1222; - } else { - if(yych == 'n') goto yy1221; - goto yy53; - } + YYDEBUG(1218, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy1219; + if (yych <= 'X') goto yy53; + goto yy1220; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy53; + } else { + if (yych == 'y') goto yy1220; + goto yy53; } + } yy1219: - YYDEBUG(1219, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'N') goto yy1220; - if(yych != 'n') goto yy53; + YYDEBUG(1219, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'C') goto yy1095; + if (yych == 'c') goto yy1095; + goto yy977; + } yy1220: - YYDEBUG(1220, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'U') goto yy1100; - if(yych == 'u') goto yy1100; - goto yy972; - } + YYDEBUG(1220, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy950; + goto yy977; yy1221: - YYDEBUG(1221, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'E') goto yy1062; - if(yych == 'e') goto yy1062; - goto yy972; - } + YYDEBUG(1221, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1222; + if (yych != 'b') goto yy53; yy1222: - YYDEBUG(1222, *YYCURSOR); - yyaccept = 21; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych == '-') goto yy945; - goto yy972; - } else { - if(yych <= 'Y') goto yy1062; - if(yych == 'y') goto yy1062; - goto yy972; - } + YYDEBUG(1222, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Q') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'R') goto yy1098; + if (yych == 'r') goto yy1098; + goto yy977; + } yy1223: - YYDEBUG(1223, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy767; - goto yy915; - } else { - if(yych <= ',') goto yy767; - if(yych <= '.') goto yy915; - goto yy914; - } + YYDEBUG(1223, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy1227; + if (yych <= 'M') goto yy53; + goto yy1226; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy53; + goto yy1227; } else { - if(yych <= 'U') { - if(yych <= 'T') goto yy767; - goto yy74; - } else { - if(yych == 'u') goto yy74; - goto yy767; - } + if (yych == 'n') goto yy1226; + goto yy53; } + } yy1224: - YYDEBUG(1224, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'P') { - if(yych == 'C') goto yy125; - if(yych <= 'O') goto yy53; - goto yy775; - } else { - if(yych <= 'c') { - if(yych <= 'b') goto yy53; - goto yy125; - } else { - if(yych == 'p') goto yy775; - goto yy53; - } - } + YYDEBUG(1224, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1225; + if (yych != 'n') goto yy53; yy1225: - YYDEBUG(1225, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= ',') { - if(yych == 0x09) goto yy1227; - goto yy1229; - } else { - if(yych <= '-') goto yy1226; - if(yych <= '.') goto yy915; - if(yych <= '/') goto yy914; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } + YYDEBUG(1225, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'U') goto yy1105; + if (yych == 'u') goto yy1105; + goto yy977; + } yy1226: - YYDEBUG(1226, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch(yych) { - case '0': goto yy1230; - case '1': goto yy1231; - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy805; - case 'A': - case 'a': goto yy809; - case 'D': - case 'd': goto yy813; - case 'F': - case 'f': goto yy807; - case 'J': - case 'j': goto yy806; - case 'M': - case 'm': goto yy808; - case 'N': - case 'n': goto yy812; - case 'O': - case 'o': goto yy811; - case 'S': - case 's': goto yy810; - default: goto yy767; - } + YYDEBUG(1226, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'E') goto yy1067; + if (yych == 'e') goto yy1067; + goto yy977; + } yy1227: - YYDEBUG(1227, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy1229; - if(yych <= '0') goto yy916; - if(yych <= '1') goto yy917; - if(yych <= '9') goto yy918; - goto yy1229; + YYDEBUG(1227, *YYCURSOR); + yyaccept = 21; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych == '-') goto yy950; + goto yy977; + } else { + if (yych <= 'Y') goto yy1067; + if (yych == 'y') goto yy1067; + goto yy977; + } yy1228: - YYDEBUG(1228, *YYCURSOR); - ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; + YYDEBUG(1228, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy765; + goto yy914; + } else { + if (yych <= ',') goto yy765; + if (yych <= '-') goto yy915; + goto yy914; + } + } else { + if (yych <= 'U') { + if (yych <= '/') goto yy913; + if (yych <= 'T') goto yy765; + goto yy74; + } else { + if (yych == 'u') goto yy74; + goto yy765; + } + } yy1229: - YYDEBUG(1229, *YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - case ' ': goto yy1228; - case '-': - case '.': goto yy766; - case 'A': - case 'a': goto yy763; - case 'D': - case 'd': goto yy671; - case 'F': - case 'f': goto yy672; - case 'H': - case 'h': goto yy60; - case 'I': goto yy680; - case 'J': - case 'j': goto yy684; - case 'M': - case 'm': goto yy670; - case 'N': - case 'n': goto yy687; - case 'O': - case 'o': goto yy686; - case 'S': - case 's': goto yy668; - case 'T': - case 't': goto yy65; - case 'V': goto yy682; - case 'W': - case 'w': goto yy62; - case 'X': goto yy683; - case 'Y': - case 'y': goto yy64; - default: goto yy53; + YYDEBUG(1229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'P') { + if (yych == 'C') goto yy125; + if (yych <= 'O') goto yy53; + goto yy773; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy53; + goto yy125; + } else { + if (yych == 'p') goto yy773; + goto yy53; } + } yy1230: - YYDEBUG(1230, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; - } else { - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1232; - goto yy53; + YYDEBUG(1230, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= ',') { + if (yych == '\t') goto yy1232; + goto yy1234; + } else { + if (yych <= '-') goto yy1231; + if (yych <= '.') goto yy914; + if (yych <= '/') goto yy913; + goto yy924; } -yy1231: - YYDEBUG(1231, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '.') { - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy842; - goto yy790; + } else { + if (yych <= 'q') { + if (yych == 'n') goto yy673; + goto yy1234; } else { - if(yych <= '/') goto yy53; - if(yych >= '3') goto yy53; + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; } + } +yy1231: + YYDEBUG(1231, *YYCURSOR); + yych = *++YYCURSOR; + YYDEBUG(-1, yych); + switch (yych) { + case '0': goto yy1235; + case '1': goto yy1236; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': goto yy804; + case 'A': + case 'a': goto yy808; + case 'D': + case 'd': goto yy812; + case 'F': + case 'f': goto yy806; + case 'J': + case 'j': goto yy805; + case 'M': + case 'm': goto yy807; + case 'N': + case 'n': goto yy811; + case 'O': + case 'o': goto yy810; + case 'S': + case 's': goto yy809; + default: goto yy765; + } yy1232: - YYDEBUG(1232, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= ',') goto yy53; - if(yych <= '-') goto yy1233; - if(yych <= '.') goto yy790; - goto yy53; + YYDEBUG(1232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1234; + if (yych <= '0') goto yy919; + if (yych <= '1') goto yy920; + if (yych <= '9') goto yy921; + goto yy1234; yy1233: - YYDEBUG(1233, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '2') { - if(yych <= '/') goto yy53; - if(yych >= '1') goto yy1235; - } else { - if(yych <= '3') goto yy1236; - if(yych <= '9') goto yy846; - goto yy53; - } - YYDEBUG(1234, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy1237; - if(yych <= 'm') goto yy844; + YYDEBUG(1233, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy1234: + YYDEBUG(1234, *YYCURSOR); + YYDEBUG(-1, yych); + switch (yych) { + case '\t': + case ' ': goto yy1233; + case '-': + case '.': goto yy764; + case 'A': + case 'a': goto yy761; + case 'D': + case 'd': goto yy669; + case 'F': + case 'f': goto yy670; + case 'H': + case 'h': goto yy60; + case 'I': goto yy678; + case 'J': + case 'j': goto yy682; + case 'M': + case 'm': goto yy668; + case 'N': + case 'n': goto yy685; + case 'O': + case 'o': goto yy684; + case 'S': + case 's': goto yy666; + case 'T': + case 't': goto yy65; + case 'V': goto yy680; + case 'W': + case 'w': goto yy62; + case 'X': goto yy681; + case 'Y': + case 'y': goto yy64; + default: goto yy53; + } +yy1235: + YYDEBUG(1235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1237; + goto yy53; + } +yy1236: + YYDEBUG(1236, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy841; + goto yy789; + } else { + if (yych <= '/') goto yy53; + if (yych >= '3') goto yy53; + } +yy1237: + YYDEBUG(1237, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ',') goto yy53; + if (yych <= '-') goto yy1238; + if (yych <= '.') goto yy789; + goto yy53; +yy1238: + YYDEBUG(1238, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '2') { + if (yych <= '/') goto yy53; + if (yych >= '1') goto yy1240; + } else { + if (yych <= '3') goto yy1241; + if (yych <= '9') goto yy845; + goto yy53; + } + YYDEBUG(1239, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy1242; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1235: - YYDEBUG(1235, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy844; - if(yych <= '9') goto yy1237; - if(yych <= 'm') goto yy844; + } +yy1240: + YYDEBUG(1240, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy843; + if (yych <= '9') goto yy1242; + if (yych <= 'm') goto yy843; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1236: - YYDEBUG(1236, *YYCURSOR); - yyaccept = 14; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '1') { - if(yych <= '/') goto yy844; - } else { - if(yych <= '9') goto yy795; - if(yych <= 'm') goto yy844; - goto yy848; - } + } +yy1241: + YYDEBUG(1241, *YYCURSOR); + yyaccept = 14; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '1') { + if (yych <= '/') goto yy843; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy844; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy844; - } + if (yych <= '9') goto yy791; + if (yych <= 'm') goto yy843; + goto yy847; } -yy1237: - YYDEBUG(1237, *YYCURSOR); - yyaccept = 16; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'n') { - if(yych <= '/') goto yy942; - if(yych <= '9') goto yy797; - if(yych <= 'm') goto yy942; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy843; goto yy848; } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy942; - goto yy849; - } else { - if(yych <= 's') goto yy847; - if(yych <= 't') goto yy850; - goto yy942; - } + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy843; } -yy1238: - YYDEBUG(1238, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy1227; - if(yych <= ',') goto yy1229; - goto yy1226; - } else { - if(yych <= '.') goto yy1239; - if(yych <= '/') goto yy914; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy1240; - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } -yy1239: - YYDEBUG(1239, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '1') { - if(yych <= '/') goto yy767; - if(yych <= '0') goto yy1263; - goto yy1264; - } else { - if(yych <= '5') goto yy1265; - if(yych <= '9') goto yy1266; - goto yy767; - } -yy1240: - YYDEBUG(1240, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1258; - if(yych <= '9') goto yy1259; - goto yy53; -yy1241: - YYDEBUG(1241, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '-') goto yy963; - if(yych <= '/') goto yy57; - if(yych >= ':') goto yy57; - YYDEBUG(1242, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - YYDEBUG(-1, yych); - switch(yych) { - case 0x09: - 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 yy969; - case '-': goto yy966; - case '.': goto yy970; - case '/': goto yy967; - case '0': goto yy1244; - case '1': goto yy1245; - case '2': goto yy1246; - case '3': goto yy1247; - case '4': - case '5': goto yy1248; - case '6': goto yy1249; - case '7': - case '8': - case '9': goto yy51; - case ':': goto yy985; - case 'W': goto yy988; - default: goto yy1243; + } +yy1242: + YYDEBUG(1242, *YYCURSOR); + yyaccept = 16; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'n') { + if (yych <= '/') goto yy947; + if (yych <= '9') goto yy792; + if (yych <= 'm') goto yy947; + goto yy847; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy947; + goto yy848; + } else { + if (yych <= 's') goto yy846; + if (yych <= 't') goto yy849; + goto yy947; } + } yy1243: - YYDEBUG(1243, *YYCURSOR); + YYDEBUG(1243, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy1232; + if (yych <= ',') goto yy1234; + goto yy1231; + } else { + if (yych <= '.') goto yy1244; + if (yych <= '/') goto yy913; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy1245; + if (yych == 'n') goto yy673; + goto yy1234; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; + } + } +yy1244: + YYDEBUG(1244, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '1') { + if (yych <= '/') goto yy765; + if (yych <= '0') goto yy1268; + goto yy1269; + } else { + if (yych <= '5') goto yy1270; + if (yych <= '9') goto yy1271; + goto yy765; + } +yy1245: + YYDEBUG(1245, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1263; + if (yych <= '9') goto yy1264; + goto yy53; +yy1246: + YYDEBUG(1246, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy968; + if (yych <= '/') goto yy57; + if (yych >= ':') goto yy57; + YYDEBUG(1247, *YYCURSOR); + yyaccept = 25; + 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 yy974; + case '-': goto yy971; + case '.': goto yy975; + case '/': goto yy972; + case '0': goto yy1249; + case '1': goto yy1250; + case '2': goto yy1251; + case '3': goto yy1252; + case '4': + case '5': goto yy1253; + case '6': goto yy1254; + case '7': + case '8': + case '9': goto yy51; + case ':': goto yy990; + case 'W': goto yy993; + default: goto yy1248; + } +yy1248: + YYDEBUG(1248, *YYCURSOR); #line 1016 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; switch (s->time->have_time) { @@ -18580,100 +18592,100 @@ yy1243: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 18584 "ext/date/lib/parse_date.c" -yy1244: - YYDEBUG(1244, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1256; - if(yych <= '9') goto yy1257; - goto yy57; -yy1245: - YYDEBUG(1245, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '2') goto yy1255; - if(yych <= '9') goto yy1254; - goto yy57; -yy1246: - YYDEBUG(1246, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1254; - goto yy57; -yy1247: - YYDEBUG(1247, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '5') goto yy1252; - if(yych <= '6') goto yy1253; - if(yych <= '9') goto yy1250; - goto yy57; -yy1248: - YYDEBUG(1248, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '9') goto yy1250; - goto yy57; +#line 18596 "ext/date/lib/parse_date.c" yy1249: - YYDEBUG(1249, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy57; - if(yych <= '0') goto yy1250; - if(yych <= '9') goto yy51; - goto yy57; + YYDEBUG(1249, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1261; + if (yych <= '9') goto yy1262; + goto yy57; yy1250: - YYDEBUG(1250, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yybm[0+yych] & 4) { - goto yy51; - } - if(yych <= 'W') { - if(yych <= 'F') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych >= ' ') goto yy57; - } else { - if(yych == 'D') goto yy57; - if(yych >= 'F') goto yy57; - } + YYDEBUG(1250, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '2') goto yy1260; + if (yych <= '9') goto yy1259; + goto yy57; +yy1251: + YYDEBUG(1251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1259; + goto yy57; +yy1252: + YYDEBUG(1252, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '5') goto yy1257; + if (yych <= '6') goto yy1258; + if (yych <= '9') goto yy1255; + goto yy57; +yy1253: + YYDEBUG(1253, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '9') goto yy1255; + goto yy57; +yy1254: + YYDEBUG(1254, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy57; + if (yych <= '0') goto yy1255; + if (yych <= '9') goto yy51; + goto yy57; +yy1255: + YYDEBUG(1255, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy51; + } + if (yych <= 'W') { + if (yych <= 'F') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych >= ' ') goto yy57; } else { - if(yych <= 'M') { - if(yych == 'H') goto yy57; - if(yych >= 'M') goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - if(yych >= 'W') goto yy57; - } + if (yych == 'D') goto yy57; + if (yych >= 'F') goto yy57; } } else { - if(yych <= 'h') { - if(yych <= 'd') { - if(yych == 'Y') goto yy57; - if(yych >= 'd') goto yy57; - } else { - if(yych == 'f') goto yy57; - if(yych >= 'h') goto yy57; - } + if (yych <= 'M') { + if (yych == 'H') goto yy57; + if (yych >= 'M') goto yy57; + } else { + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + if (yych >= 'W') goto yy57; + } + } + } else { + if (yych <= 'h') { + if (yych <= 'd') { + if (yych == 'Y') goto yy57; + if (yych >= 'd') goto yy57; + } else { + if (yych == 'f') goto yy57; + if (yych >= 'h') goto yy57; + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych >= 's') goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych >= 's') goto yy57; + if (yych <= 'w') { + if (yych >= 'w') goto yy57; } else { - if(yych <= 'w') { - if(yych >= 'w') goto yy57; - } else { - if(yych == 'y') goto yy57; - } + if (yych == 'y') goto yy57; } } } -yy1251: - YYDEBUG(1251, *YYCURSOR); + } +yy1256: + YYDEBUG(1256, *YYCURSOR); #line 1062 "ext/date/lib/parse_date.re" - { + { int tz_not_found; DEBUG_OUTPUT("iso8601nocolon"); TIMELIB_INIT; @@ -18691,628 +18703,628 @@ yy1251: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 18695 "ext/date/lib/parse_date.c" -yy1252: - YYDEBUG(1252, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; +#line 18707 "ext/date/lib/parse_date.c" +yy1257: + YYDEBUG(1257, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '/') goto yy1256; + if (yych <= '9') goto yy1004; + if (yych <= 'C') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= '/') goto yy1251; - if(yych <= '9') goto yy999; - if(yych <= 'C') goto yy1251; - goto yy57; + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych == 'g') goto yy1256; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1253: - YYDEBUG(1253, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } +yy1258: + YYDEBUG(1258, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '6') { + if (yych <= '/') goto yy1256; + goto yy1004; + } else { + if (yych <= '9') goto yy51; + if (yych <= 'C') goto yy1256; goto yy57; - } else { - if(yych <= '6') { - if(yych <= '/') goto yy1251; - goto yy999; - } else { - if(yych <= '9') goto yy51; - if(yych <= 'C') goto yy1251; - goto yy57; - } } + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } } - } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; + } else { + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } + if (yych == 'g') goto yy1256; + goto yy57; } + } + } else { + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1254: - YYDEBUG(1254, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'V') { - if(yych <= 'D') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } +yy1259: + YYDEBUG(1259, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'V') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '/') goto yy1256; + if (yych <= '9') goto yy1004; + if (yych <= 'C') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'H') { + if (yych == 'F') goto yy57; + if (yych <= 'G') goto yy1256; + goto yy57; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy1256; goto yy57; } else { - if(yych <= '/') goto yy1251; - if(yych <= '9') goto yy999; - if(yych <= 'C') goto yy1251; - goto yy57; + if (yych <= 'R') goto yy1256; + if (yych <= 'T') goto yy57; + goto yy1256; } + } + } + } else { + if (yych <= 'h') { + if (yych <= 'c') { + if (yych == 'X') goto yy1256; + if (yych <= 'Y') goto yy57; + goto yy1256; } else { - if(yych <= 'H') { - if(yych == 'F') goto yy57; - if(yych <= 'G') goto yy1251; - goto yy57; + if (yych <= 'e') { + if (yych <= 'd') goto yy57; + goto yy1256; } else { - if(yych <= 'M') { - if(yych <= 'L') goto yy1251; - goto yy57; - } else { - if(yych <= 'R') goto yy1251; - if(yych <= 'T') goto yy57; - goto yy1251; - } + if (yych == 'g') goto yy1256; + goto yy57; } } } else { - if(yych <= 'h') { - if(yych <= 'c') { - if(yych == 'X') goto yy1251; - if(yych <= 'Y') goto yy57; - goto yy1251; - } else { - if(yych <= 'e') { - if(yych <= 'd') goto yy57; - goto yy1251; - } else { - if(yych == 'g') goto yy1251; - goto yy57; - } - } + if (yych <= 't') { + if (yych == 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } else { - if(yych <= 't') { - if(yych == 'm') goto yy57; - if(yych <= 'r') goto yy1251; + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; goto yy57; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych == 'y') goto yy57; + goto yy1256; } } } -yy1255: - YYDEBUG(1255, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; - goto yy57; - } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1023; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } - } + } +yy1260: + YYDEBUG(1260, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1028; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1256: - YYDEBUG(1256, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; goto yy57; } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1055; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } + if (yych == 'f') goto yy57; + goto yy1256; + } + } + } else { + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych == 'y') goto yy57; + goto yy1256; + } + } + } + } +yy1261: + YYDEBUG(1261, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1060; + } else { + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1257: - YYDEBUG(1257, *YYCURSOR); - yyaccept = 26; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '9') { - if(yych <= ' ') { - if(yych == 0x09) goto yy57; - if(yych <= 0x1F) goto yy1251; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; goto yy57; } else { - if(yych <= '0') { - if(yych <= '/') goto yy1251; - goto yy1023; - } else { - if(yych <= '2') goto yy1024; - if(yych <= '3') goto yy1025; - goto yy999; - } + if (yych == 'f') goto yy57; + goto yy1256; + } + } + } else { + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; } } else { - if(yych <= 'G') { - if(yych <= 'D') { - if(yych <= 'C') goto yy1251; - goto yy57; - } else { - if(yych == 'F') goto yy57; - goto yy1251; - } + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; } else { - if(yych <= 'L') { - if(yych <= 'H') goto yy57; - goto yy1251; - } else { - if(yych <= 'M') goto yy57; - if(yych <= 'R') goto yy1251; - goto yy57; - } + if (yych == 'y') goto yy57; + goto yy1256; + } + } + } + } +yy1262: + YYDEBUG(1262, *YYCURSOR); + yyaccept = 26; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '9') { + if (yych <= ' ') { + if (yych == '\t') goto yy57; + if (yych <= 0x1F) goto yy1256; + goto yy57; + } else { + if (yych <= '0') { + if (yych <= '/') goto yy1256; + goto yy1028; + } else { + if (yych <= '2') goto yy1029; + if (yych <= '3') goto yy1030; + goto yy1004; } } } else { - if(yych <= 'g') { - if(yych <= 'Y') { - if(yych == 'W') goto yy57; - if(yych <= 'X') goto yy1251; + if (yych <= 'G') { + if (yych <= 'D') { + if (yych <= 'C') goto yy1256; goto yy57; } else { - if(yych <= 'd') { - if(yych <= 'c') goto yy1251; - goto yy57; - } else { - if(yych == 'f') goto yy57; - goto yy1251; - } + if (yych == 'F') goto yy57; + goto yy1256; } } else { - if(yych <= 't') { - if(yych <= 'l') { - if(yych <= 'h') goto yy57; - goto yy1251; - } else { - if(yych <= 'm') goto yy57; - if(yych <= 'r') goto yy1251; - goto yy57; - } + if (yych <= 'L') { + if (yych <= 'H') goto yy57; + goto yy1256; } else { - if(yych <= 'w') { - if(yych <= 'v') goto yy1251; - goto yy57; - } else { - if(yych == 'y') goto yy57; - goto yy1251; - } + if (yych <= 'M') goto yy57; + if (yych <= 'R') goto yy1256; + goto yy57; } } } -yy1258: - YYDEBUG(1258, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy1260; - goto yy696; + } else { + if (yych <= 'g') { + if (yych <= 'Y') { + if (yych == 'W') goto yy57; + if (yych <= 'X') goto yy1256; + goto yy57; + } else { + if (yych <= 'd') { + if (yych <= 'c') goto yy1256; + goto yy57; + } else { + if (yych == 'f') goto yy57; + goto yy1256; + } + } } else { - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; + if (yych <= 't') { + if (yych <= 'l') { + if (yych <= 'h') goto yy57; + goto yy1256; + } else { + if (yych <= 'm') goto yy57; + if (yych <= 'r') goto yy1256; + goto yy57; + } + } else { + if (yych <= 'w') { + if (yych <= 'v') goto yy1256; + goto yy57; + } else { + if (yych == 'y') goto yy57; + goto yy1256; + } + } } -yy1259: - YYDEBUG(1259, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy1260; - if(yych != ':') goto yy696; -yy1260: - YYDEBUG(1260, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1261; - if(yych <= '6') goto yy1262; - if(yych <= '9') goto yy701; - goto yy53; -yy1261: - YYDEBUG(1261, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy701; - goto yy696; -yy1262: - YYDEBUG(1262, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych == '0') goto yy701; - goto yy696; + } yy1263: - YYDEBUG(1263, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy1267; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1266; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1263, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy1265; + goto yy694; + } else { + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1264: - YYDEBUG(1264, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - if(yych <= '.') goto yy1267; - goto yy696; - } else { - if(yych <= '2') goto yy1266; - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1264, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy1265; + if (yych != ':') goto yy694; yy1265: - YYDEBUG(1265, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - goto yy1267; - } else { - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1259; - if(yych <= ':') goto yy1260; - goto yy696; - } + YYDEBUG(1265, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1266; + if (yych <= '6') goto yy1267; + if (yych <= '9') goto yy699; + goto yy53; yy1266: - YYDEBUG(1266, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ',') goto yy696; - if(yych <= '-') goto yy790; - } else { - if(yych == ':') goto yy1260; - goto yy696; - } + YYDEBUG(1266, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy699; + goto yy694; yy1267: - YYDEBUG(1267, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '5') goto yy1268; - if(yych <= '6') goto yy1269; - if(yych <= '9') goto yy794; - goto yy53; + YYDEBUG(1267, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych == '0') goto yy699; + goto yy694; yy1268: - YYDEBUG(1268, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy1270; - goto yy696; + YYDEBUG(1268, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy1272; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1271; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1269: - YYDEBUG(1269, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych == '.') goto yy702; - goto yy696; - } else { - if(yych <= '0') goto yy1270; - if(yych <= '9') goto yy795; - goto yy696; - } + YYDEBUG(1269, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + if (yych <= '.') goto yy1272; + goto yy694; + } else { + if (yych <= '2') goto yy1271; + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1270: - YYDEBUG(1270, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == '.') goto yy702; - if(yych <= '/') goto yy696; - if(yych <= '9') goto yy797; - goto yy696; + YYDEBUG(1270, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + goto yy1272; + } else { + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1264; + if (yych <= ':') goto yy1265; + goto yy694; + } yy1271: - YYDEBUG(1271, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy665; - if(yych <= ',') goto yy667; - goto yy1226; - } else { - if(yych <= '.') goto yy679; - if(yych <= '/') goto yy677; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy688; - if(yych == 'n') goto yy675; - goto yy667; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy667; - } - } + YYDEBUG(1271, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy694; + if (yych <= '-') goto yy789; + } else { + if (yych == ':') goto yy1265; + goto yy694; + } yy1272: - YYDEBUG(1272, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '9') { - if(yych <= '-') { - if(yych == 0x09) goto yy1227; - if(yych <= ',') goto yy1229; - goto yy1226; - } else { - if(yych <= '.') goto yy1239; - if(yych <= '/') goto yy677; - if(yych <= '5') goto yy1241; - goto yy919; - } - } else { - if(yych <= 'q') { - if(yych <= ':') goto yy1240; - if(yych == 'n') goto yy675; - goto yy1229; - } else { - if(yych <= 'r') goto yy676; - if(yych <= 's') goto yy669; - if(yych <= 't') goto yy673; - goto yy1229; - } - } + YYDEBUG(1272, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '5') goto yy1273; + if (yych <= '6') goto yy1274; + if (yych <= '9') goto yy797; + goto yy53; yy1273: - YYDEBUG(1273, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; + YYDEBUG(1273, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy1275; + goto yy694; yy1274: - YYDEBUG(1274, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(1275, *YYCURSOR); - if(yych <= '/') goto yy1276; - if(yych <= '9') goto yy1274; + YYDEBUG(1274, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy700; + goto yy694; + } else { + if (yych <= '0') goto yy1275; + if (yych <= '9') goto yy798; + goto yy694; + } +yy1275: + YYDEBUG(1275, *YYCURSOR); + yyaccept = 12; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy700; + if (yych <= '/') goto yy694; + if (yych <= '9') goto yy792; + goto yy694; yy1276: - YYDEBUG(1276, *YYCURSOR); + YYDEBUG(1276, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy663; + if (yych <= ',') goto yy665; + goto yy1231; + } else { + if (yych <= '.') goto yy677; + if (yych <= '/') goto yy675; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy686; + if (yych == 'n') goto yy673; + goto yy665; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy665; + } + } +yy1277: + YYDEBUG(1277, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy1232; + if (yych <= ',') goto yy1234; + goto yy1231; + } else { + if (yych <= '.') goto yy1244; + if (yych <= '/') goto yy675; + if (yych <= '5') goto yy1246; + goto yy924; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy1245; + if (yych == 'n') goto yy673; + goto yy1234; + } else { + if (yych <= 'r') goto yy674; + if (yych <= 's') goto yy667; + if (yych <= 't') goto yy671; + goto yy1234; + } + } +yy1278: + YYDEBUG(1278, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; +yy1279: + YYDEBUG(1279, *YYCURSOR); + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(1280, *YYCURSOR); + if (yych <= '/') goto yy1281; + if (yych <= '9') goto yy1279; +yy1281: + YYDEBUG(1281, *YYCURSOR); #line 949 "ext/date/lib/parse_date.re" - { + { timelib_ull i; TIMELIB_INIT; @@ -19334,444 +19346,444 @@ yy1276: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 19338 "ext/date/lib/parse_date.c" -yy1277: - YYDEBUG(1277, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1317; - } +#line 19350 "ext/date/lib/parse_date.c" +yy1282: + YYDEBUG(1282, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy1317; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1322; } -yy1278: - YYDEBUG(1278, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'U') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'I') goto yy1311; - if(yych <= 'T') goto yy138; - goto yy1310; - } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'i') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'h') goto yy138; - goto yy1311; - } else { - if(yych == 'u') goto yy1310; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'n') goto yy1322; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1279: - YYDEBUG(1279, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'D') goto yy1299; - if(yych <= 'L') goto yy138; - goto yy1300; - } + } +yy1283: + YYDEBUG(1283, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'c') goto yy138; - goto yy1299; - } else { - if(yych == 'm') goto yy1300; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'I') goto yy1316; + if (yych <= 'T') goto yy138; + goto yy1315; } -yy1280: - YYDEBUG(1280, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1295; - } - } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy1295; - if(yych <= 'z') goto yy138; - goto yy3; - } + } else { + if (yych <= 'i') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy138; + goto yy1316; + } else { + if (yych == 'u') goto yy1315; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1281: - YYDEBUG(1281, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1291; - } + } +yy1284: + YYDEBUG(1284, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'e') goto yy1291; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych == 'D') goto yy1304; + if (yych <= 'L') goto yy138; + goto yy1305; } -yy1282: - YYDEBUG(1282, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; - } else { - if(yych <= '9') goto yy1285; - if(yych <= ':') goto yy1240; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'c') goto yy138; + goto yy1304; + } else { + if (yych == 'm') goto yy1305; + if (yych <= 'z') goto yy138; + goto yy3; } -yy1283: - YYDEBUG(1283, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; + } +yy1285: + YYDEBUG(1285, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '3') goto yy1285; - if(yych == ':') goto yy1240; - goto yy53; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1300; } -yy1284: - YYDEBUG(1284, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == '.') goto yy1240; - if(yych == ':') goto yy1240; - goto yy53; -yy1285: - YYDEBUG(1285, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych == '.') goto yy1240; - goto yy53; + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= '5') goto yy1286; - if(yych == ':') goto yy1240; - goto yy53; + if (yych <= 'e') goto yy1300; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1286: - YYDEBUG(1286, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; - YYDEBUG(1287, *YYCURSOR); - yyaccept = 25; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') goto yy1243; - if(yych <= '5') goto yy1288; - if(yych <= '6') goto yy1289; - goto yy1243; + YYDEBUG(1286, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1296; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'e') goto yy1296; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy1287: + YYDEBUG(1287, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '9') goto yy1290; + if (yych <= ':') goto yy1245; + goto yy53; + } yy1288: - YYDEBUG(1288, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= '/') goto yy53; - if(yych <= '9') goto yy1290; + YYDEBUG(1288, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '3') goto yy1290; + if (yych == ':') goto yy1245; goto yy53; + } yy1289: - YYDEBUG(1289, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != '0') goto yy53; + YYDEBUG(1289, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy1245; + if (yych == ':') goto yy1245; + goto yy53; yy1290: - YYDEBUG(1290, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1251; + YYDEBUG(1290, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy1245; + goto yy53; + } else { + if (yych <= '5') goto yy1291; + if (yych == ':') goto yy1245; + goto yy53; + } yy1291: - YYDEBUG(1291, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'L') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy139; - } - } else { - if(yych <= 'k') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'l') goto yy1292; - if(yych <= 'z') goto yy139; - goto yy3; - } - } -yy1292: - YYDEBUG(1292, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'F') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'E') goto yy140; - } - } else { - if(yych <= 'e') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'f') goto yy1293; - if(yych <= 'z') goto yy140; - goto yy3; - } - } + YYDEBUG(1291, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych >= ':') goto yy53; + YYDEBUG(1292, *YYCURSOR); + yyaccept = 25; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy1248; + if (yych <= '5') goto yy1293; + if (yych <= '6') goto yy1294; + goto yy1248; yy1293: - YYDEBUG(1293, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - } + YYDEBUG(1293, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy53; + if (yych <= '9') goto yy1295; + goto yy53; +yy1294: + YYDEBUG(1294, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '0') goto yy53; +yy1295: + YYDEBUG(1295, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1256; +yy1296: + YYDEBUG(1296, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 't') goto yy1294; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy139; } -yy1294: - YYDEBUG(1294, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; - goto yy3; + } else { + if (yych <= 'k') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'H') goto yy160; - if(yych == 'h') goto yy160; + if (yych <= 'l') goto yy1297; + if (yych <= 'z') goto yy139; goto yy3; } -yy1295: - YYDEBUG(1295, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'R') goto yy139; - } + } +yy1297: + YYDEBUG(1297, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'F') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 's') goto yy1296; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy3; + if (yych <= 'E') goto yy140; } -yy1296: - YYDEBUG(1296, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - } + } else { + if (yych <= 'e') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy1297; - if(yych <= 'z') goto yy140; - goto yy3; - } - } -yy1297: - YYDEBUG(1297, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - goto yy3; - } else { - if(yych <= 'a') goto yy1298; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'f') goto yy1298; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1298: - YYDEBUG(1298, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(1298, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Y') goto yy282; - if(yych == 'y') goto yy282; + if (yych <= 't') goto yy1299; + if (yych <= 'z') goto yy141; goto yy3; } + } yy1299: - YYDEBUG(1299, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy1307; + YYDEBUG(1299, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy160; + if (yych == 'h') goto yy160; + goto yy3; + } +yy1300: + YYDEBUG(1300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - goto yy3; - } else { - if(yych <= 'a') goto yy1307; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'R') goto yy139; } -yy1300: - YYDEBUG(1300, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'O') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; } else { - if(yych <= 'n') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'o') goto yy1301; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 's') goto yy1301; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy1301: - YYDEBUG(1301, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - } + YYDEBUG(1301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'r') goto yy1302; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'd') goto yy1302; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1302: - YYDEBUG(1302, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + YYDEBUG(1302, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy1303; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'a') goto yy1303; + if (yych <= 'z') goto yy141; + goto yy3; } + } yy1303: - YYDEBUG(1303, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych == ')') goto yy136; + YYDEBUG(1303, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy3; + } +yy1304: + YYDEBUG(1304, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy1312; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; goto yy3; } else { - if(yych <= 'O') goto yy1304; - if(yych != 'o') goto yy3; + if (yych <= 'a') goto yy1312; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1304: - YYDEBUG(1304, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'W') goto yy1305; - if(yych != 'w') goto yy53; + } yy1305: - YYDEBUG(1305, *YYCURSOR); - ++YYCURSOR; + YYDEBUG(1305, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; + } + } else { + if (yych <= 'n') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'o') goto yy1306; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1306: - YYDEBUG(1306, *YYCURSOR); + YYDEBUG(1306, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'r') goto yy1307; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy1307: + YYDEBUG(1307, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'r') goto yy1308; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1308: + YYDEBUG(1308, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'O') goto yy1309; + if (yych != 'o') goto yy3; + } +yy1309: + YYDEBUG(1309, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy1310; + if (yych != 'w') goto yy53; +yy1310: + YYDEBUG(1310, *YYCURSOR); + ++YYCURSOR; +yy1311: + YYDEBUG(1311, *YYCURSOR); #line 937 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; TIMELIB_HAVE_RELATIVE(); @@ -19781,43 +19793,43 @@ yy1306: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 19785 "ext/date/lib/parse_date.c" -yy1307: - YYDEBUG(1307, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy140; - } +#line 19797 "ext/date/lib/parse_date.c" +yy1312: + YYDEBUG(1312, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'y') goto yy1308; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy140; } -yy1308: - YYDEBUG(1308, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy141; + if (yych <= 'y') goto yy1313; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1309: - YYDEBUG(1309, *YYCURSOR); + } +yy1313: + YYDEBUG(1313, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy141; + } +yy1314: + YYDEBUG(1314, *YYCURSOR); #line 927 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); @@ -19825,1928 +19837,1928 @@ yy1309: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 19829 "ext/date/lib/parse_date.c" -yy1310: - YYDEBUG(1310, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'Q') goto yy139; - goto yy1313; - } +#line 19841 "ext/date/lib/parse_date.c" +yy1315: + YYDEBUG(1315, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'r') goto yy1313; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '@') goto yy276; + if (yych <= 'Q') goto yy139; + goto yy1318; } -yy1311: - YYDEBUG(1311, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= 'Q') goto yy139; - if(yych >= 'S') goto yy250; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'r') goto yy1312; - if(yych <= 's') goto yy250; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'r') goto yy1318; + if (yych <= 'z') goto yy139; + goto yy276; } -yy1312: - YYDEBUG(1312, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy263; - } + } +yy1316: + YYDEBUG(1316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'd') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'Q') goto yy139; + if (yych >= 'S') goto yy250; } -yy1313: - YYDEBUG(1313, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'r') goto yy1317; + if (yych <= 's') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1317: + YYDEBUG(1317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 's') goto yy1314; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy263; } -yy1314: - YYDEBUG(1314, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'd') goto yy1315; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= 'd') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1315: - YYDEBUG(1315, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych == ')') goto yy136; + } +yy1318: + YYDEBUG(1318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 's') goto yy1319; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy1319: + YYDEBUG(1319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'A') goto yy1316; - if(yych != 'a') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; } -yy1316: - YYDEBUG(1316, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy282; - goto yy53; -yy1317: - YYDEBUG(1317, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy1318; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= 'd') goto yy1320; + if (yych <= 'z') goto yy141; + goto yy3; } -yy1318: - YYDEBUG(1318, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + } +yy1320: + YYDEBUG(1320, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'A') goto yy1321; + if (yych != 'a') goto yy3; + } +yy1321: + YYDEBUG(1321, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy282; + goto yy53; +yy1322: + YYDEBUG(1322, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; } -yy1319: - YYDEBUG(1319, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1317; - } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1348; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 't') goto yy1323; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1320: - YYDEBUG(1320, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'U') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'H') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'I') goto yy1311; - if(yych <= 'T') goto yy138; - goto yy1310; - } - } + } +yy1323: + YYDEBUG(1323, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'h') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 't') { - if(yych <= 'i') goto yy1342; - goto yy143; - } else { - if(yych <= 'u') goto yy1341; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } -yy1321: - YYDEBUG(1321, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'C') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'D') goto yy1299; - if(yych <= 'L') goto yy138; - goto yy1300; - } - } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= 'c') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'l') { - if(yych <= 'd') goto yy1332; - goto yy143; - } else { - if(yych <= 'm') goto yy1333; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1322: - YYDEBUG(1322, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1295; - } + } +yy1324: + YYDEBUG(1324, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1328; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1322; } -yy1323: - YYDEBUG(1323, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy138; - goto yy1291; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1324; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych == 'n') goto yy1353; + if (yych <= 'z') goto yy143; + goto yy3; } -yy1324: - YYDEBUG(1324, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'L') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'K') goto yy139; - goto yy1292; - } + } +yy1325: + YYDEBUG(1325, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'U') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'H') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych == 'l') goto yy1325; - if(yych <= 'z') goto yy148; - goto yy3; + if (yych <= 'I') goto yy1316; + if (yych <= 'T') goto yy138; + goto yy1315; } } -yy1325: - YYDEBUG(1325, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'F') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'h') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'E') goto yy140; - goto yy1293; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 't') { + if (yych <= 'i') goto yy1347; + goto yy143; } else { - if(yych == 'f') goto yy1326; - if(yych <= 'z') goto yy149; + if (yych <= 'u') goto yy1346; + if (yych <= 'z') goto yy143; goto yy3; } } + } yy1326: - YYDEBUG(1326, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy141; - goto yy1294; - } + YYDEBUG(1326, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'C') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych == 't') goto yy1327; - if(yych <= 'z') goto yy150; - goto yy3; + if (yych <= 'D') goto yy1304; + if (yych <= 'L') goto yy138; + goto yy1305; } } -yy1327: - YYDEBUG(1327, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'c') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy160; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'l') { + if (yych <= 'd') goto yy1337; + goto yy143; } else { - if(yych == 'h') goto yy247; - if(yych <= 'z') goto yy151; + if (yych <= 'm') goto yy1338; + if (yych <= 'z') goto yy143; goto yy3; } } + } +yy1327: + YYDEBUG(1327, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1300; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy1333; + if (yych <= 'z') goto yy143; + goto yy3; + } + } yy1328: - YYDEBUG(1328, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'R') goto yy139; - goto yy1296; - } + YYDEBUG(1328, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 's') goto yy1329; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy138; + goto yy1296; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'e') goto yy1329; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1329: - YYDEBUG(1329, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy1297; - } + YYDEBUG(1329, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1330; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy139; + goto yy1297; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'l') goto yy1330; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1330: - YYDEBUG(1330, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1298; - } + YYDEBUG(1330, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'F') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1331; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'E') goto yy140; + goto yy1298; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'f') goto yy1331; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1331: - YYDEBUG(1331, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'X') goto yy3; - goto yy282; - } + YYDEBUG(1331, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy295; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy1299; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1332; + if (yych <= 'z') goto yy150; + goto yy3; + } + } yy1332: - YYDEBUG(1332, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1307; - } + YYDEBUG(1332, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy3; - goto yy144; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1339; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy160; } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy247; + if (yych <= 'z') goto yy151; + goto yy3; + } + } yy1333: - YYDEBUG(1333, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'N') goto yy139; - goto yy1301; - } + YYDEBUG(1333, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy1334; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'R') goto yy139; + goto yy1301; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 's') goto yy1334; + if (yych <= 'z') goto yy148; + goto yy276; + } + } yy1334: - YYDEBUG(1334, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy140; - goto yy1302; - } + YYDEBUG(1334, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1335; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy1302; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1335; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1335: - YYDEBUG(1335, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy1303; - } + YYDEBUG(1335, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1336; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1303; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1336; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1336: - YYDEBUG(1336, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'O') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'N') goto yy3; - goto yy1304; - } + YYDEBUG(1336, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'o') goto yy1337; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'X') goto yy3; + goto yy282; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy295; + if (yych <= 'z') goto yy151; + goto yy3; } + } yy1337: - YYDEBUG(1337, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'W') goto yy1305; - if(yych != 'w') goto yy152; - YYDEBUG(1338, *YYCURSOR); - yyaccept = 27; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy1306; + YYDEBUG(1337, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1312; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy3; + goto yy144; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1306; - if(yych <= 'z') goto yy151; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1344; + if (yych <= 'z') goto yy148; + goto yy3; + } + } +yy1338: + YYDEBUG(1338, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy139; goto yy1306; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'o') goto yy1339; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1339: - YYDEBUG(1339, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy140; - goto yy1308; - } + YYDEBUG(1339, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'y') goto yy1340; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy1307; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy1340; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1340: - YYDEBUG(1340, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1309; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy1309; - } + YYDEBUG(1340, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy141; - if(yych <= '^') goto yy1309; - goto yy144; - } else { - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy150; - goto yy1309; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy1308; } -yy1341: - YYDEBUG(1341, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'Q') goto yy139; - goto yy1313; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'r') goto yy1344; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych == 'r') goto yy1341; + if (yych <= 'z') goto yy150; + goto yy3; } -yy1342: - YYDEBUG(1342, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy139; - if(yych <= 'R') goto yy1312; - goto yy250; - } + } +yy1341: + YYDEBUG(1341, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'O') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'r') { - if(yych <= 'q') goto yy148; - } else { - if(yych <= 's') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } - } + if (yych <= '/') goto yy144; + if (yych <= 'N') goto yy3; + goto yy1309; } - YYDEBUG(1343, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy140; - goto yy263; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych == 'o') goto yy1342; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1342: + YYDEBUG(1342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy1310; + if (yych != 'w') goto yy152; + YYDEBUG(1343, *YYCURSOR); + yyaccept = 27; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1311; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1311; + if (yych <= 'z') goto yy151; + goto yy1311; + } yy1344: - YYDEBUG(1344, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy140; - goto yy1314; - } + YYDEBUG(1344, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy1345; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy140; + goto yy1313; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy1345; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1345: - YYDEBUG(1345, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy141; - goto yy1315; - } + YYDEBUG(1345, *YYCURSOR); + yyaccept = 28; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1314; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1346; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy1314; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy1314; + goto yy144; + } else { + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy150; + goto yy1314; } + } yy1346: - YYDEBUG(1346, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1316; - } + YYDEBUG(1346, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych <= 'a') goto yy1347; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'Q') goto yy139; + goto yy1318; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'r') goto yy1349; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy1347: - YYDEBUG(1347, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy282; - if(yych == 'y') goto yy295; - goto yy152; -yy1348: - YYDEBUG(1348, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1318; - } + YYDEBUG(1347, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy139; + if (yych <= 'R') goto yy1317; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy148; } else { - if(yych == 't') goto yy1349; - if(yych <= 'z') goto yy148; + if (yych <= 's') goto yy253; + if (yych <= 'z') goto yy148; goto yy3; } } + } + YYDEBUG(1348, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1349: - YYDEBUG(1349, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(1349, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy140; + goto yy1319; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 's') goto yy1350; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1350: - YYDEBUG(1350, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= '@') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych == 'R') goto yy1362; - if(yych <= 'X') goto yy138; - goto yy1363; - } + YYDEBUG(1350, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'q') goto yy138; - goto yy1362; - } else { - if(yych == 'y') goto yy1363; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy1320; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1351; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1351: - YYDEBUG(1351, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - goto yy1356; - } + YYDEBUG(1351, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'd') goto yy1356; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1321; } -yy1352: - YYDEBUG(1352, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; - } else { - if(yych <= 'n') goto yy1353; - if(yych <= 'z') goto yy138; - goto yy3; - } + if (yych <= 'a') goto yy1352; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1352: + YYDEBUG(1352, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy282; + if (yych == 'y') goto yy295; + goto yy152; yy1353: - YYDEBUG(1353, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'D') { - if(yych <= ')') { - if(yych <= '(') goto yy276; - goto yy136; - } else { - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - } + YYDEBUG(1353, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'c') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy276; - goto yy139; - } else { - if(yych <= 'd') goto yy1354; - if(yych <= 'z') goto yy139; - goto yy276; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1323; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1354; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1354: - YYDEBUG(1354, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'A') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - goto yy3; - } else { - if(yych <= 'a') goto yy1355; - if(yych <= 'z') goto yy140; - goto yy3; - } + YYDEBUG(1354, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1355: - YYDEBUG(1355, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Y') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; - } + YYDEBUG(1355, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= '@') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'x') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'y') goto yy503; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych == 'R') goto yy1367; + if (yych <= 'X') goto yy138; + goto yy1368; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'q') goto yy138; + goto yy1367; + } else { + if (yych == 'y') goto yy1368; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1356: - YYDEBUG(1356, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - } + YYDEBUG(1356, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'n') goto yy1357; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + goto yy1361; } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'd') goto yy1361; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1357: - YYDEBUG(1357, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'I') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - } + YYDEBUG(1357, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; } else { - if(yych <= 'h') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'i') goto yy1358; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= 'n') goto yy1358; + if (yych <= 'z') goto yy138; + goto yy3; } + } yy1358: - YYDEBUG(1358, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'G') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy141; - } + YYDEBUG(1358, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'D') { + if (yych <= ')') { + if (yych <= '(') goto yy276; + goto yy136; } else { - if(yych <= 'f') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'g') goto yy1359; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + } + } else { + if (yych <= 'c') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy276; + goto yy139; + } else { + if (yych <= 'd') goto yy1359; + if (yych <= 'z') goto yy139; + goto yy276; } + } yy1359: - YYDEBUG(1359, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych == ')') goto yy136; + YYDEBUG(1359, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'A') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; goto yy3; } else { - if(yych <= 'H') goto yy1360; - if(yych != 'h') goto yy3; + if (yych <= 'a') goto yy1360; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1360: - YYDEBUG(1360, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1361; - if(yych != 't') goto yy53; + YYDEBUG(1360, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= 'x') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'y') goto yy501; + if (yych <= 'z') goto yy141; + goto yy3; + } + } yy1361: - YYDEBUG(1361, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1309; + YYDEBUG(1361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 'n') goto yy1362; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1362: - YYDEBUG(1362, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + YYDEBUG(1362, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'I') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych == 'C') goto yy1364; - goto yy139; - } - } else { - if(yych <= 'b') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'c') goto yy1364; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + } + } else { + if (yych <= 'h') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'i') goto yy1363; + if (yych <= 'z') goto yy140; + goto yy3; } + } yy1363: - YYDEBUG(1363, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '-') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; + YYDEBUG(1363, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'G') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + } + } else { + if (yych <= 'f') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'g') goto yy1364; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1364: + YYDEBUG(1364, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'H') goto yy1365; + if (yych != 'h') goto yy3; + } +yy1365: + YYDEBUG(1365, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1366; + if (yych != 't') goto yy53; +yy1366: + YYDEBUG(1366, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1314; +yy1367: + YYDEBUG(1367, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; goto yy305; } else { - if(yych == ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '@') { - if(yych == '/') goto yy303; - if(yych <= '9') goto yy305; + if (yych <= ',') { + if (yych <= ')') goto yy136; goto yy303; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy139; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; goto yy303; } } -yy1364: - YYDEBUG(1364, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy561; + if (yych == 'C') goto yy1369; + goto yy139; } } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= 'b') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'h') goto yy561; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= 'c') goto yy1369; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy1365: - YYDEBUG(1365, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '/') { - if(yych == ')') goto yy136; - if(yych <= '.') goto yy3; - goto yy144; - } else { - if(yych <= 'Q') { - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'R') goto yy1362; - if(yych <= 'X') goto yy138; - goto yy1363; - } - } + } +yy1368: + YYDEBUG(1368, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; } else { - if(yych <= 'q') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'x') { - if(yych <= 'r') goto yy1377; - goto yy143; - } else { - if(yych <= 'y') goto yy1378; - if(yych <= 'z') goto yy143; - goto yy3; - } - } + if (yych == ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } -yy1366: - YYDEBUG(1366, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'C') goto yy138; - goto yy1356; - } + } else { + if (yych <= '@') { + if (yych == '/') goto yy303; + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1371; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy139; + goto yy303; } -yy1367: - YYDEBUG(1367, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1353; - } + } +yy1369: + YYDEBUG(1369, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1368; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy559; } -yy1368: - YYDEBUG(1368, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy276; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy276; - if(yych <= 'C') goto yy139; - goto yy1354; - } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy276; - } else { - if(yych == 'd') goto yy1369; - if(yych <= 'z') goto yy148; - goto yy276; - } + if (yych <= 'h') goto yy559; + if (yych <= 'z') goto yy140; + goto yy3; } -yy1369: - YYDEBUG(1369, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'A') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - goto yy1355; - } + } +yy1370: + YYDEBUG(1370, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '/') { + if (yych == ')') goto yy136; + if (yych <= '.') goto yy3; + goto yy144; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy3; - goto yy144; + if (yych <= 'Q') { + if (yych <= '@') goto yy3; + goto yy138; } else { - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy1370; - if(yych <= 'z') goto yy149; - goto yy3; + if (yych <= 'R') goto yy1367; + if (yych <= 'X') goto yy138; + goto yy1368; } } -yy1370: - YYDEBUG(1370, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'Y') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'q') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'X') goto yy141; - goto yy503; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'x') { + if (yych <= 'r') goto yy1382; + goto yy143; } else { - if(yych == 'y') goto yy532; - if(yych <= 'z') goto yy150; + if (yych <= 'y') goto yy1383; + if (yych <= 'z') goto yy143; goto yy3; } } + } yy1371: - YYDEBUG(1371, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1357; - } + YYDEBUG(1371, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1372; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy138; + goto yy1361; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1376; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1372: - YYDEBUG(1372, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'I') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'H') goto yy140; - goto yy1358; - } + YYDEBUG(1372, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'i') goto yy1373; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1358; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1373; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1373: - YYDEBUG(1373, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'G') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'F') goto yy141; - goto yy1359; - } + YYDEBUG(1373, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy276; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'g') goto yy1374; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy276; + if (yych <= 'C') goto yy139; + goto yy1359; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy276; + } else { + if (yych == 'd') goto yy1374; + if (yych <= 'z') goto yy148; + goto yy276; } + } yy1374: - YYDEBUG(1374, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'G') goto yy3; - goto yy1360; - } + YYDEBUG(1374, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'A') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy1375; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + goto yy1360; } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy3; + goto yy144; + } else { + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1375; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1375: - YYDEBUG(1375, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'T') goto yy1361; - if(yych != 't') goto yy152; - YYDEBUG(1376, *YYCURSOR); - yyaccept = 28; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; - goto yy1309; + YYDEBUG(1375, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'Y') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1309; - if(yych <= 'z') goto yy151; - goto yy1309; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy141; + goto yy501; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'y') goto yy530; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy1376: + YYDEBUG(1376, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1362; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1377; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1377: - YYDEBUG(1377, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(1377, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'I') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'B') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'C') goto yy1364; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'b') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'c') goto yy1379; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy140; + goto yy1363; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'i') goto yy1378; + if (yych <= 'z') goto yy149; + goto yy3; } + } yy1378: - YYDEBUG(1378, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '.') { - if(yych <= ' ') { - if(yych == 0x09) goto yy305; - if(yych <= 0x1F) goto yy303; - goto yy305; - } else { - if(yych <= ')') { - if(yych <= '(') goto yy303; - goto yy136; - } else { - if(yych <= ',') goto yy303; - if(yych <= '-') goto yy306; - goto yy305; - } - } + YYDEBUG(1378, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'G') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'Z') { - if(yych <= '/') goto yy144; - if(yych <= '9') goto yy305; - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= '_') { - if(yych <= '^') goto yy303; - goto yy144; - } else { - if(yych <= '`') goto yy303; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + goto yy1364; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'g') goto yy1379; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1379: - YYDEBUG(1379, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy561; - } + YYDEBUG(1379, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'h') goto yy572; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'G') goto yy3; + goto yy1365; } -yy1380: - YYDEBUG(1380, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'W') { - if(yych <= 'N') { - if(yych == ')') goto yy136; - if(yych <= '@') goto yy3; - goto yy138; - } else { - if(yych <= 'O') goto yy1388; - if(yych <= 'U') goto yy138; - if(yych <= 'V') goto yy1389; - goto yy1386; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'o') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - if(yych <= 'n') goto yy138; - goto yy1388; - } else { - if(yych <= 'v') { - if(yych <= 'u') goto yy138; - goto yy1389; - } else { - if(yych <= 'w') goto yy1386; - if(yych <= 'z') goto yy138; - goto yy3; - } - } + if (yych == 'h') goto yy1380; + if (yych <= 'z') goto yy151; + goto yy3; } -yy1381: - YYDEBUG(1381, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'X') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } +yy1380: + YYDEBUG(1380, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1366; + if (yych != 't') goto yy152; + YYDEBUG(1381, *YYCURSOR); + yyaccept = 28; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1314; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1314; + if (yych <= 'z') goto yy151; + goto yy1314; + } +yy1382: + YYDEBUG(1382, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy1385; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'w') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= 'x') goto yy1385; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych == '/') goto yy144; + goto yy305; } } -yy1382: - YYDEBUG(1382, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= '^') { + if (yych <= 'B') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; + if (yych <= 'C') goto yy1369; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'b') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 'n') goto yy1383; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'c') goto yy1384; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy1383: - YYDEBUG(1383, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; + YYDEBUG(1383, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ' ') { + if (yych == '\t') goto yy305; + if (yych <= 0x1F) goto yy303; + goto yy305; + } else { + if (yych <= ')') { + if (yych <= '(') goto yy303; goto yy136; } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; + if (yych <= ',') goto yy303; + if (yych <= '-') goto yy306; + goto yy305; } - } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; + } + } else { + if (yych <= 'Z') { + if (yych <= '/') goto yy144; + if (yych <= '9') goto yy305; + if (yych <= '@') goto yy303; + goto yy139; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy303; + goto yy144; } else { - if(yych <= 't') goto yy1384; - if(yych <= 'z') goto yy139; - goto yy3; + if (yych <= '`') goto yy303; + if (yych <= 'z') goto yy148; + goto yy303; } } + } yy1384: - YYDEBUG(1384, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'H') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; - } + YYDEBUG(1384, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'g') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'h') goto yy263; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy559; } -yy1385: - YYDEBUG(1385, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; + if (yych == 'h') goto yy570; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy1385: + YYDEBUG(1385, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych <= 'N') { + if (yych == ')') goto yy136; + if (yych <= '@') goto yy3; + goto yy138; + } else { + if (yych <= 'O') goto yy1393; + if (yych <= 'U') goto yy138; + if (yych <= 'V') goto yy1394; + goto yy1391; + } + } else { + if (yych <= 'o') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + if (yych <= 'n') goto yy138; + goto yy1393; + } else { + if (yych <= 'v') { + if (yych <= 'u') goto yy138; + goto yy1394; } else { - if(yych <= 't') goto yy250; - if(yych <= 'z') goto yy139; + if (yych <= 'w') goto yy1391; + if (yych <= 'z') goto yy138; goto yy3; } } + } yy1386: - YYDEBUG(1386, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + YYDEBUG(1386, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'X') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy1387; - if(yych <= 'z') goto yy139; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy1390; } + } else { + if (yych <= 'w') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'x') goto yy1390; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1387: - YYDEBUG(1387, *YYCURSOR); + YYDEBUG(1387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 'n') goto yy1388; + if (yych <= 'z') goto yy138; + goto yy3; + } + } +yy1388: + YYDEBUG(1388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy1389; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1389: + YYDEBUG(1389, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'H') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; + } + } else { + if (yych <= 'g') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'h') goto yy263; + if (yych <= 'z') goto yy140; + goto yy3; + } + } +yy1390: + YYDEBUG(1390, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy250; + if (yych <= 'z') goto yy139; + goto yy3; + } + } +yy1391: + YYDEBUG(1391, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy1392; + if (yych <= 'z') goto yy139; + } +yy1392: + YYDEBUG(1392, *YYCURSOR); #line 906 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("now"); TIMELIB_INIT; TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21610 "ext/date/lib/parse_date.c" -yy1388: - YYDEBUG(1388, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'N') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1394; - } +#line 21622 "ext/date/lib/parse_date.c" +yy1393: + YYDEBUG(1393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'm') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 'n') goto yy1394; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1399; } -yy1389: - YYDEBUG(1389, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= ',') { - if(yych <= ')') goto yy136; - goto yy303; - } else { - if(yych <= '-') goto yy306; - if(yych <= '.') goto yy305; - goto yy303; - } - } + } else { + if (yych <= 'm') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; } else { - if(yych <= 'Z') { - if(yych <= '@') { - if(yych <= '9') goto yy305; - goto yy303; - } else { - if(yych != 'E') goto yy139; - } - } else { - if(yych <= 'd') { - if(yych <= '`') goto yy303; - goto yy139; - } else { - if(yych <= 'e') goto yy1390; - if(yych <= 'z') goto yy139; - goto yy303; - } - } + if (yych <= 'n') goto yy1399; + if (yych <= 'z') goto yy139; + goto yy3; } -yy1390: - YYDEBUG(1390, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'M') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } +yy1394: + YYDEBUG(1394, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= 'l') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; + if (yych <= ',') { + if (yych <= ')') goto yy136; + goto yy303; } else { - if(yych <= 'm') goto yy1391; - if(yych <= 'z') goto yy140; - goto yy3; + if (yych <= '-') goto yy306; + if (yych <= '.') goto yy305; + goto yy303; } } -yy1391: - YYDEBUG(1391, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'B') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= 'Z') { + if (yych <= '@') { + if (yych <= '9') goto yy305; + goto yy303; } else { - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; + if (yych != 'E') goto yy139; } } else { - if(yych <= 'a') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; + if (yych <= 'd') { + if (yych <= '`') goto yy303; + goto yy139; } else { - if(yych <= 'b') goto yy1392; - if(yych <= 'z') goto yy141; - goto yy3; + if (yych <= 'e') goto yy1395; + if (yych <= 'z') goto yy139; + goto yy303; } } -yy1392: - YYDEBUG(1392, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych == ')') goto yy136; + } +yy1395: + YYDEBUG(1395, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'M') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + } + } else { + if (yych <= 'l') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'm') goto yy1396; + if (yych <= 'z') goto yy140; goto yy3; + } + } +yy1396: + YYDEBUG(1396, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'B') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych <= 'E') goto yy1393; - if(yych != 'e') goto yy3; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; } -yy1393: - YYDEBUG(1393, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy315; - goto yy53; -yy1394: - YYDEBUG(1394, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'a') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy1395; - if(yych <= 'z') goto yy140; + if (yych <= 'b') goto yy1397; + if (yych <= 'z') goto yy141; + goto yy3; } -yy1395: - YYDEBUG(1395, *YYCURSOR); + } +yy1397: + YYDEBUG(1397, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'E') goto yy1398; + if (yych != 'e') goto yy3; + } +yy1398: + YYDEBUG(1398, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy315; + goto yy53; +yy1399: + YYDEBUG(1399, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '@') { + if (yych == ')') goto yy136; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy1400; + if (yych <= 'z') goto yy140; + } +yy1400: + YYDEBUG(1400, *YYCURSOR); #line 915 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("noon"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); @@ -21756,488 +21768,488 @@ yy1395: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21760 "ext/date/lib/parse_date.c" -yy1396: - YYDEBUG(1396, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'W') { - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy3; - } - } else { - if(yych <= 'O') { - if(yych <= 'N') goto yy138; - goto yy1388; - } else { - if(yych <= 'U') goto yy138; - if(yych <= 'V') goto yy1389; - goto yy1386; - } - } - } else { - if(yych <= 'n') { - if(yych <= '^') { - if(yych <= 'Z') goto yy138; - goto yy3; - } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy3; - goto yy143; - } - } else { - if(yych <= 'v') { - if(yych <= 'o') goto yy1403; - if(yych <= 'u') goto yy143; - goto yy1404; - } else { - if(yych <= 'w') goto yy1402; - if(yych <= 'z') goto yy143; - goto yy3; - } - } - } -yy1397: - YYDEBUG(1397, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'X') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'W') goto yy138; - goto yy1385; - } - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'x') goto yy1401; - if(yych <= 'z') goto yy143; - goto yy3; - } - } -yy1398: - YYDEBUG(1398, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy138; - goto yy1383; - } - } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; +#line 21772 "ext/date/lib/parse_date.c" +yy1401: + YYDEBUG(1401, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'W') { + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; } else { - if(yych == 'n') goto yy1399; - if(yych <= 'z') goto yy143; - goto yy3; - } - } -yy1399: - YYDEBUG(1399, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; + if (yych == '/') goto yy144; goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1384; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'O') { + if (yych <= 'N') goto yy138; + goto yy1393; } else { - if(yych == 't') goto yy1400; - if(yych <= 'z') goto yy148; - goto yy3; + if (yych <= 'U') goto yy138; + if (yych <= 'V') goto yy1394; + goto yy1391; } } -yy1400: - YYDEBUG(1400, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'H') { - if(yych <= '.') { - if(yych == ')') goto yy136; + } else { + if (yych <= 'n') { + if (yych <= '^') { + if (yych <= 'Z') goto yy138; goto yy3; } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'G') goto yy140; - goto yy263; + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy3; + goto yy143; } } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; + if (yych <= 'v') { + if (yych <= 'o') goto yy1408; + if (yych <= 'u') goto yy143; + goto yy1409; } else { - if(yych == 'h') goto yy273; - if(yych <= 'z') goto yy149; + if (yych <= 'w') goto yy1407; + if (yych <= 'z') goto yy143; goto yy3; } } -yy1401: - YYDEBUG(1401, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy250; - } + } +yy1402: + YYDEBUG(1402, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'X') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy253; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy138; + goto yy1390; } -yy1402: - YYDEBUG(1402, *YYCURSOR); - yyaccept = 29; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1387; - goto yy136; - } else { - if(yych == '/') goto yy144; - goto yy1387; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy139; - if(yych <= '^') goto yy1387; - goto yy144; - } else { - if(yych <= '`') goto yy1387; - if(yych <= 'z') goto yy148; - goto yy1387; - } + if (yych == 'x') goto yy1406; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1403: - YYDEBUG(1403, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'N') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'M') goto yy139; - goto yy1394; - } + YYDEBUG(1403, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'n') goto yy1409; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy138; + goto yy1388; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1404; + if (yych <= 'z') goto yy143; + goto yy3; } + } yy1404: - YYDEBUG(1404, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '9') { - if(yych <= '(') { - if(yych <= 0x09) { - if(yych <= 0x08) goto yy303; - goto yy305; - } else { - if(yych == ' ') goto yy305; - goto yy303; - } - } else { - if(yych <= '-') { - if(yych <= ')') goto yy136; - if(yych <= ',') goto yy303; - goto yy306; - } else { - if(yych == '/') goto yy144; - goto yy305; - } - } + YYDEBUG(1404, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '^') { - if(yych <= 'D') { - if(yych <= '@') goto yy303; - goto yy139; - } else { - if(yych <= 'E') goto yy1390; - if(yych <= 'Z') goto yy139; - goto yy303; - } - } else { - if(yych <= 'd') { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy303; - goto yy148; - } else { - if(yych <= 'e') goto yy1405; - if(yych <= 'z') goto yy148; - goto yy303; - } - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1389; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy1405; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1405: - YYDEBUG(1405, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'M') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'L') goto yy140; - goto yy1391; - } + YYDEBUG(1405, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'H') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'm') goto yy1406; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy140; + goto yy263; } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'h') goto yy273; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1406: - YYDEBUG(1406, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'B') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'A') goto yy141; - goto yy1392; - } + YYDEBUG(1406, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'b') goto yy1407; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy250; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 't') goto yy253; + if (yych <= 'z') goto yy148; + goto yy3; } + } yy1407: - YYDEBUG(1407, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'D') goto yy3; - goto yy1393; - } + YYDEBUG(1407, *YYCURSOR); + yyaccept = 29; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1392; + goto yy136; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1408; - if(yych <= 'z') goto yy151; - goto yy3; - } + if (yych == '/') goto yy144; + goto yy1392; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy139; + if (yych <= '^') goto yy1392; + goto yy144; + } else { + if (yych <= '`') goto yy1392; + if (yych <= 'z') goto yy148; + goto yy1392; } + } yy1408: - YYDEBUG(1408, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'R') goto yy315; - if(yych == 'r') goto yy485; - goto yy152; + YYDEBUG(1408, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'N') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy139; + goto yy1399; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'n') goto yy1414; + if (yych <= 'z') goto yy148; + goto yy3; + } + } yy1409: - YYDEBUG(1409, *YYCURSOR); - yyaccept = 30; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@') { - if(yych <= ')') { - if(yych <= '(') goto yy1395; - goto yy136; + YYDEBUG(1409, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '(') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy303; + goto yy305; } else { - if(yych == '/') goto yy144; - goto yy1395; + if (yych == ' ') goto yy305; + goto yy303; } } else { - if(yych <= '_') { - if(yych <= 'Z') goto yy140; - if(yych <= '^') goto yy1395; - goto yy144; + if (yych <= '-') { + if (yych <= ')') goto yy136; + if (yych <= ',') goto yy303; + goto yy306; } else { - if(yych <= '`') goto yy1395; - if(yych <= 'z') goto yy149; - goto yy1395; + if (yych == '/') goto yy144; + goto yy305; } } -yy1410: - YYDEBUG(1410, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'S') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; + } else { + if (yych <= '^') { + if (yych <= 'D') { + if (yych <= '@') goto yy303; + goto yy139; } else { - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; + if (yych <= 'E') goto yy1395; + if (yych <= 'Z') goto yy139; + goto yy303; } } else { - if(yych <= 'r') { - if(yych <= 'Z') goto yy138; - if(yych <= '`') goto yy3; - goto yy138; + if (yych <= 'd') { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy303; + goto yy148; } else { - if(yych <= 's') goto yy1411; - if(yych <= 'z') goto yy138; - goto yy3; + if (yych <= 'e') goto yy1410; + if (yych <= 'z') goto yy148; + goto yy303; } } + } +yy1410: + YYDEBUG(1410, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'M') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy140; + goto yy1396; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'm') goto yy1411; + if (yych <= 'z') goto yy149; + goto yy3; + } + } yy1411: - YYDEBUG(1411, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'T') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - } + YYDEBUG(1411, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'B') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 's') { - if(yych <= 'Z') goto yy139; - if(yych <= '`') goto yy3; - goto yy139; - } else { - if(yych <= 't') goto yy1412; - if(yych <= 'z') goto yy139; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; + goto yy1397; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'b') goto yy1412; + if (yych <= 'z') goto yy150; + goto yy3; } + } yy1412: - YYDEBUG(1412, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'E') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - } + YYDEBUG(1412, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= 'd') { - if(yych <= 'Z') goto yy140; - if(yych <= '`') goto yy3; - goto yy140; - } else { - if(yych <= 'e') goto yy1413; - if(yych <= 'z') goto yy140; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= 'D') goto yy3; + goto yy1398; } -yy1413: - YYDEBUG(1413, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'R') { - if(yych <= ')') { - if(yych <= '(') goto yy3; - goto yy136; - } else { - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= 'q') { - if(yych <= 'Z') goto yy141; - if(yych <= '`') goto yy3; - goto yy141; - } else { - if(yych <= 'r') goto yy1414; - if(yych <= 'z') goto yy141; - goto yy3; - } + if (yych == 'e') goto yy1413; + if (yych <= 'z') goto yy151; + goto yy3; } + } +yy1413: + YYDEBUG(1413, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy315; + if (yych == 'r') goto yy483; + goto yy152; yy1414: - YYDEBUG(1414, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'C') { - if(yych == ')') goto yy136; - goto yy3; + YYDEBUG(1414, *YYCURSOR); + yyaccept = 30; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '@') { + if (yych <= ')') { + if (yych <= '(') goto yy1400; + goto yy136; + } else { + if (yych == '/') goto yy144; + goto yy1400; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy140; + if (yych <= '^') goto yy1400; + goto yy144; } else { - if(yych <= 'D') goto yy1415; - if(yych != 'd') goto yy3; + if (yych <= '`') goto yy1400; + if (yych <= 'z') goto yy149; + goto yy1400; } + } yy1415: - YYDEBUG(1415, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1416; - if(yych != 'a') goto yy53; + YYDEBUG(1415, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + } + } else { + if (yych <= 'r') { + if (yych <= 'Z') goto yy138; + if (yych <= '`') goto yy3; + goto yy138; + } else { + if (yych <= 's') goto yy1416; + if (yych <= 'z') goto yy138; + goto yy3; + } + } yy1416: - YYDEBUG(1416, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1417; - if(yych != 'y') goto yy53; + YYDEBUG(1416, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + } + } else { + if (yych <= 's') { + if (yych <= 'Z') goto yy139; + if (yych <= '`') goto yy3; + goto yy139; + } else { + if (yych <= 't') goto yy1417; + if (yych <= 'z') goto yy139; + goto yy3; + } + } yy1417: - YYDEBUG(1417, *YYCURSOR); - ++YYCURSOR; + YYDEBUG(1417, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + } + } else { + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; + } else { + if (yych <= 'e') goto yy1418; + if (yych <= 'z') goto yy140; + goto yy3; + } + } yy1418: - YYDEBUG(1418, *YYCURSOR); + YYDEBUG(1418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy136; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + } + } else { + if (yych <= 'q') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'r') goto yy1419; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1419: + YYDEBUG(1419, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'C') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= 'D') goto yy1420; + if (yych != 'd') goto yy3; + } +yy1420: + YYDEBUG(1420, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1421; + if (yych != 'a') goto yy53; +yy1421: + YYDEBUG(1421, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1422; + if (yych != 'y') goto yy53; +yy1422: + YYDEBUG(1422, *YYCURSOR); + ++YYCURSOR; +yy1423: + YYDEBUG(1423, *YYCURSOR); #line 894 "ext/date/lib/parse_date.re" - { + { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; TIMELIB_HAVE_RELATIVE(); @@ -22247,154 +22259,153 @@ yy1418: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22251 "ext/date/lib/parse_date.c" -yy1419: - YYDEBUG(1419, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'S') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'R') goto yy138; - goto yy1411; - } +#line 22263 "ext/date/lib/parse_date.c" +yy1424: + YYDEBUG(1424, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy138; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 's') goto yy1420; - if(yych <= 'z') goto yy143; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy138; + goto yy1416; } -yy1420: - YYDEBUG(1420, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'T') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'S') goto yy139; - goto yy1412; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy138; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy139; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 't') goto yy1421; - if(yych <= 'z') goto yy148; - goto yy3; - } + if (yych == 's') goto yy1425; + if (yych <= 'z') goto yy143; + goto yy3; } -yy1421: - YYDEBUG(1421, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'E') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'D') goto yy140; - goto yy1413; - } + } +yy1425: + YYDEBUG(1425, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'T') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy140; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'e') goto yy1422; - if(yych <= 'z') goto yy149; - goto yy3; - } + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy139; + goto yy1417; } -yy1422: - YYDEBUG(1422, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'R') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= '@') goto yy3; - if(yych <= 'Q') goto yy141; - goto yy1414; - } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy139; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '`') { - if(yych <= 'Z') goto yy141; - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'r') goto yy1423; - if(yych <= 'z') goto yy150; - goto yy3; - } + if (yych == 't') goto yy1426; + if (yych <= 'z') goto yy148; + goto yy3; } -yy1423: - YYDEBUG(1423, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= 'D') { - if(yych <= '.') { - if(yych == ')') goto yy136; - goto yy3; - } else { - if(yych <= '/') goto yy144; - if(yych <= 'C') goto yy3; - goto yy1415; - } + } +yy1426: + YYDEBUG(1426, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'E') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; } else { - if(yych <= '`') { - if(yych == '_') goto yy144; - goto yy3; - } else { - if(yych == 'd') goto yy1424; - if(yych <= 'z') goto yy151; - goto yy3; - } - } -yy1424: - YYDEBUG(1424, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'A') goto yy1416; - if(yych != 'a') goto yy152; - YYDEBUG(1425, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy1417; - if(yych != 'y') goto yy152; - YYDEBUG(1426, *YYCURSOR); - yyaccept = 31; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '^') { - if(yych == '/') goto yy144; + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1418; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy140; + if (yych == '_') goto yy144; + goto yy3; } else { - if(yych <= '_') goto yy144; - if(yych <= '`') goto yy1418; - if(yych <= 'z') goto yy151; - goto yy1418; + if (yych == 'e') goto yy1427; + if (yych <= 'z') goto yy149; + goto yy3; + } + } +yy1427: + YYDEBUG(1427, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'R') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy1419; + } + } else { + if (yych <= '`') { + if (yych <= 'Z') goto yy141; + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'r') goto yy1428; + if (yych <= 'z') goto yy150; + goto yy3; + } + } +yy1428: + YYDEBUG(1428, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'D') { + if (yych <= '.') { + if (yych == ')') goto yy136; + goto yy3; + } else { + if (yych <= '/') goto yy144; + if (yych <= 'C') goto yy3; + goto yy1420; } + } else { + if (yych <= '`') { + if (yych == '_') goto yy144; + goto yy3; + } else { + if (yych == 'd') goto yy1429; + if (yych <= 'z') goto yy151; + goto yy3; + } + } +yy1429: + YYDEBUG(1429, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1421; + if (yych != 'a') goto yy152; + YYDEBUG(1430, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy1422; + if (yych != 'y') goto yy152; + YYDEBUG(1431, *YYCURSOR); + yyaccept = 31; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '^') { + if (yych == '/') goto yy144; + goto yy1423; + } else { + if (yych <= '_') goto yy144; + if (yych <= '`') goto yy1423; + if (yych <= 'z') goto yy151; + goto yy1423; } } -#line 1542 "ext/date/lib/parse_date.re" +#line 1545 "ext/date/lib/parse_date.re" } @@ -22472,7 +22483,7 @@ timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) { - if (!(options && TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { + if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { parsed->h = 0; parsed->i = 0; parsed->s = 0; @@ -22492,7 +22503,7 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) parsed->tz_abbr = now->tz_abbr ? strdup(now->tz_abbr) : NULL; } if (!parsed->tz_info) { - parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL; + 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; diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index 6a24ff1f0..9cf06ebe0 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_date.re,v 1.26.2.27.2.13 2008/02/25 18:28:18 derick Exp $ */ +/* $Id: parse_date.re,v 1.26.2.27.2.15 2008/12/18 14:57:04 derick Exp $ */ #include "timelib.h" @@ -732,7 +732,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, "/")) { + 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; @@ -792,7 +792,7 @@ tzcorrection = [+-] hour24 ":"? minute?; daysuf = "st" | "nd" | "rd" | "th"; month = "0"? [0-9] | "1"[0-2]; -day = ([0-2]?[0-9] | "3"[01]) daysuf?; +day = (([0-2]?[0-9]) | ("3"[01])) daysuf?; year = [0-9]{1,4}; year2 = [0-9]{2}; year4 = [0-9]{4}; @@ -842,11 +842,11 @@ iso8601date2 = year2 "-" monthlz "-" daylz; gnudateshorter = year4 "-" month; gnudateshort = year "-" month "-" day; pointeddate4 = day [.\t-] month [.-] year4; -pointeddate2 = day [.\t-] month [.-] year2; +pointeddate2 = day [.\t] month "." year2; datefull = day ([ \t.-])* monthtext ([ \t.-])* year; datenoday = monthtext ([ .\t-])* year4; datenodayrev = year4 ([ .\t-])* monthtext; -datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]* year; +datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]+ year; datenoyear = monthtext ([ .\t-])* day [,.stndrh\t ]*; datenoyearrev = day ([ .\t-])* monthtext; datenocolon = year4 monthlz daylz; @@ -1125,6 +1125,7 @@ relativetext = reltextnumber space reltextunit; 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; @@ -1406,7 +1407,9 @@ relativetext = reltextnumber space reltextunit; TIMELIB_UNHAVE_TIME(); relunit = timelib_lookup_relunit((char**) &ptr); s->time->relative.weekday = relunit->multiplier; - s->time->relative.weekday_behavior = 1; + if (s->time->relative.weekday_behavior != 2) { + s->time->relative.weekday_behavior = 1; + } TIMELIB_DEINIT; return TIMELIB_WEEKDAY; @@ -1517,7 +1520,7 @@ relativetext = reltextnumber space reltextunit; while(*ptr) { i = timelib_get_unsigned_nr((char **) &ptr, 24); timelib_eat_spaces((char **) &ptr); - timelib_set_relative((char **) &ptr, i, 0, s); + timelib_set_relative((char **) &ptr, i, 1, s); } TIMELIB_DEINIT; return TIMELIB_RELATIVE; @@ -1616,7 +1619,7 @@ timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) { - if (!(options && TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { + if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) { parsed->h = 0; parsed->i = 0; parsed->s = 0; @@ -1636,7 +1639,7 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options) parsed->tz_abbr = now->tz_abbr ? strdup(now->tz_abbr) : NULL; } if (!parsed->tz_info) { - parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL; + 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; diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c index 1ec5def7c..c332f7a29 100644 --- a/ext/date/lib/parse_tz.c +++ b/ext/date/lib/parse_tz.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_tz.c,v 1.20.2.6.2.14 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: parse_tz.c,v 1.20.2.6.2.18 2008/12/31 11:17:36 sebastian Exp $ */ #include "timelib.h" @@ -125,46 +125,52 @@ static void read_types(char **tzf, timelib_tzinfo *tz) memcpy(tz->timezone_abbr, *tzf, sizeof(char) * tz->charcnt); *tzf += sizeof(char) * tz->charcnt; - leap_buffer = (int32_t *) malloc(tz->leapcnt * 2 * sizeof(int32_t)); - if (!leap_buffer) { - return; - } - memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->leapcnt * 2); - *tzf += sizeof(int32_t) * tz->leapcnt * 2; + if (tz->leapcnt) { + leap_buffer = (int32_t *) malloc(tz->leapcnt * 2 * sizeof(int32_t)); + if (!leap_buffer) { + return; + } + memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->leapcnt * 2); + *tzf += sizeof(int32_t) * tz->leapcnt * 2; - tz->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo)); - if (!tz->leap_times) { - return; - } - for (i = 0; i < tz->leapcnt; i++) { - tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]); - tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]); - } - free(leap_buffer); - - buffer = (unsigned char*) malloc(tz->ttisstdcnt * sizeof(unsigned char)); - if (!buffer) { - return; + tz->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo)); + if (!tz->leap_times) { + return; + } + for (i = 0; i < tz->leapcnt; i++) { + tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]); + tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]); + } + free(leap_buffer); } - memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisstdcnt); - *tzf += sizeof(unsigned char) * tz->ttisstdcnt; - for (i = 0; i < tz->ttisstdcnt; i++) { - tz->type[i].isstdcnt = buffer[i]; - } - free(buffer); + if (tz->ttisstdcnt) { + buffer = (unsigned char*) malloc(tz->ttisstdcnt * sizeof(unsigned char)); + if (!buffer) { + return; + } + memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisstdcnt); + *tzf += sizeof(unsigned char) * tz->ttisstdcnt; - buffer = (unsigned char*) malloc(tz->ttisgmtcnt * sizeof(unsigned char)); - if (!buffer) { - return; + for (i = 0; i < tz->ttisstdcnt; i++) { + tz->type[i].isstdcnt = buffer[i]; + } + free(buffer); } - memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisgmtcnt); - *tzf += sizeof(unsigned char) * tz->ttisgmtcnt; - for (i = 0; i < tz->ttisgmtcnt; i++) { - tz->type[i].isgmtcnt = buffer[i]; + if (tz->ttisgmtcnt) { + buffer = (unsigned char*) malloc(tz->ttisgmtcnt * sizeof(unsigned char)); + if (!buffer) { + return; + } + memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisgmtcnt); + *tzf += sizeof(unsigned char) * tz->ttisgmtcnt; + + for (i = 0; i < tz->ttisgmtcnt; i++) { + tz->type[i].isgmtcnt = buffer[i]; + } + free(buffer); } - free(buffer); } void timelib_dump_tzinfo(timelib_tzinfo *tz) @@ -391,7 +397,7 @@ timelib_sll timelib_get_current_offset(timelib_time *t) switch (t->zone_type) { case TIMELIB_ZONETYPE_ABBR: case TIMELIB_ZONETYPE_OFFSET: - return t->z * 60; + return (t->z + t->dst) * -60; case TIMELIB_ZONETYPE_ID: gmt_offset = timelib_get_time_zone_info(t->sse, t->tz_info); diff --git a/ext/date/lib/timelib.c b/ext/date/lib/timelib.c index 1a5e3c632..5c0355486 100644 --- a/ext/date/lib/timelib.c +++ b/ext/date/lib/timelib.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: timelib.c,v 1.7.2.4.2.7 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: timelib.c,v 1.7.2.4.2.8 2008/12/31 11:17:36 sebastian Exp $ */ #include "timelib.h" #include diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h index 04db962bb..0ca5d9ee4 100644 --- a/ext/date/lib/timelib.h +++ b/ext/date/lib/timelib.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: timelib.h,v 1.10.2.11.2.5 2008/02/22 09:48:18 derick Exp $ */ +/* $Id: timelib.h,v 1.10.2.11.2.7 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef __TIMELIB_H__ #define __TIMELIB_H__ @@ -28,6 +28,7 @@ #define TIMELIB_NONE 0x00 #define TIMELIB_OVERRIDE_TIME 0x01 +#define TIMELIB_NO_CLONE 0x02 #define TIMELIB_SPECIAL_WEEKDAY 0x01 diff --git a/ext/date/lib/timelib_structs.h b/ext/date/lib/timelib_structs.h index 57eb4aafd..2b1bc4640 100644 --- a/ext/date/lib/timelib_structs.h +++ b/ext/date/lib/timelib_structs.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,12 +16,12 @@ +----------------------------------------------------------------------+ */ -/* $Id: timelib_structs.h,v 1.13.2.6.2.4 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: timelib_structs.h,v 1.13.2.6.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef __TIMELIB_STRUCTS_H__ #define __TIMELIB_STRUCTS_H__ -#include +#include "timelib_config.h" #ifdef HAVE_SYS_TYPES_H #include diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index bbd1c570a..223a75cfd 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -1,575 +1,579 @@ -const timelib_tzdb_index_entry timezonedb_idx_builtin[557] = { +const timelib_tzdb_index_entry timezonedb_idx_builtin[560] = { { "Africa/Abidjan" , 0x000000 }, - { "Africa/Accra" , 0x000049 }, - { "Africa/Addis_Ababa" , 0x0000E5 }, - { "Africa/Algiers" , 0x00012F }, - { "Africa/Asmara" , 0x00024E }, - { "Africa/Asmera" , 0x000298 }, - { "Africa/Bamako" , 0x0002E2 }, - { "Africa/Bangui" , 0x000341 }, - { "Africa/Banjul" , 0x00038A }, - { "Africa/Bissau" , 0x0003F5 }, - { "Africa/Blantyre" , 0x00044F }, - { "Africa/Brazzaville" , 0x000498 }, - { "Africa/Bujumbura" , 0x0004E1 }, - { "Africa/Cairo" , 0x000519 }, - { "Africa/Casablanca" , 0x0008D4 }, - { "Africa/Ceuta" , 0x000990 }, - { "Africa/Conakry" , 0x000C7C }, - { "Africa/Dakar" , 0x000CDB }, - { "Africa/Dar_es_Salaam" , 0x000D35 }, - { "Africa/Djibouti" , 0x000D96 }, - { "Africa/Douala" , 0x000DDF }, - { "Africa/El_Aaiun" , 0x000E28 }, - { "Africa/Freetown" , 0x000E82 }, - { "Africa/Gaborone" , 0x000F85 }, - { "Africa/Harare" , 0x000FD4 }, - { "Africa/Johannesburg" , 0x00101D }, - { "Africa/Kampala" , 0x00107F }, - { "Africa/Khartoum" , 0x0010F2 }, - { "Africa/Kigali" , 0x0011F9 }, - { "Africa/Kinshasa" , 0x001242 }, - { "Africa/Lagos" , 0x00127A }, - { "Africa/Libreville" , 0x0012C3 }, - { "Africa/Lome" , 0x00130C }, - { "Africa/Luanda" , 0x001344 }, - { "Africa/Lubumbashi" , 0x00138D }, - { "Africa/Lusaka" , 0x0013C5 }, - { "Africa/Malabo" , 0x00140E }, - { "Africa/Maputo" , 0x001468 }, - { "Africa/Maseru" , 0x0014B1 }, - { "Africa/Mbabane" , 0x00150D }, - { "Africa/Mogadishu" , 0x001557 }, - { "Africa/Monrovia" , 0x0015A6 }, - { "Africa/Nairobi" , 0x001600 }, - { "Africa/Ndjamena" , 0x001673 }, - { "Africa/Niamey" , 0x0016D3 }, - { "Africa/Nouakchott" , 0x00173A }, - { "Africa/Ouagadougou" , 0x001799 }, - { "Africa/Porto-Novo" , 0x0017E2 }, - { "Africa/Sao_Tome" , 0x00183C }, - { "Africa/Timbuktu" , 0x001885 }, - { "Africa/Tripoli" , 0x0018E4 }, - { "Africa/Tunis" , 0x0019D2 }, - { "Africa/Windhoek" , 0x001BFA }, - { "America/Adak" , 0x001E35 }, - { "America/Anchorage" , 0x00218F }, - { "America/Anguilla" , 0x0024EC }, - { "America/Antigua" , 0x002535 }, - { "America/Araguaina" , 0x00258F }, - { "America/Argentina/Buenos_Aires" , 0x0026D5 }, - { "America/Argentina/Catamarca" , 0x00297F }, - { "America/Argentina/ComodRivadavia" , 0x002C40 }, - { "America/Argentina/Cordoba" , 0x002F01 }, - { "America/Argentina/Jujuy" , 0x0031B8 }, - { "America/Argentina/La_Rioja" , 0x00347D }, - { "America/Argentina/Mendoza" , 0x003743 }, - { "America/Argentina/Rio_Gallegos" , 0x003A12 }, - { "America/Argentina/San_Juan" , 0x003CD3 }, - { "America/Argentina/San_Luis" , 0x003F99 }, - { "America/Argentina/Tucuman" , 0x004138 }, - { "America/Argentina/Ushuaia" , 0x0043F9 }, - { "America/Aruba" , 0x0046BA }, - { "America/Asuncion" , 0x004714 }, - { "America/Atikokan" , 0x0049ED }, - { "America/Atka" , 0x004A73 }, - { "America/Bahia" , 0x004DCD }, - { "America/Barbados" , 0x004F45 }, - { "America/Belem" , 0x004FD3 }, - { "America/Belize" , 0x0050B5 }, - { "America/Blanc-Sablon" , 0x005225 }, - { "America/Boa_Vista" , 0x00529A }, - { "America/Bogota" , 0x005390 }, - { "America/Boise" , 0x0053F0 }, - { "America/Buenos_Aires" , 0x005752 }, - { "America/Cambridge_Bay" , 0x0059FC }, - { "America/Campo_Grande" , 0x005CFC }, - { "America/Cancun" , 0x005FCD }, - { "America/Caracas" , 0x0061E8 }, - { "America/Catamarca" , 0x006243 }, - { "America/Cayenne" , 0x006504 }, - { "America/Cayman" , 0x00655A }, - { "America/Chicago" , 0x0065A3 }, - { "America/Chihuahua" , 0x006AA2 }, - { "America/Coral_Harbour" , 0x006CCC }, - { "America/Cordoba" , 0x006D52 }, - { "America/Costa_Rica" , 0x007009 }, - { "America/Cuiaba" , 0x007087 }, - { "America/Curacao" , 0x00734E }, - { "America/Danmarkshavn" , 0x0073A8 }, - { "America/Dawson" , 0x0074BF }, - { "America/Dawson_Creek" , 0x0077B6 }, - { "America/Denver" , 0x00793B }, - { "America/Detroit" , 0x007CA8 }, - { "America/Dominica" , 0x007FD3 }, - { "America/Edmonton" , 0x00801C }, - { "America/Eirunepe" , 0x008386 }, - { "America/El_Salvador" , 0x008472 }, - { "America/Ensenada" , 0x0084DB }, - { "America/Fort_Wayne" , 0x00894C }, - { "America/Fortaleza" , 0x008838 }, + { "Africa/Accra" , 0x000055 }, + { "Africa/Addis_Ababa" , 0x0000FD }, + { "Africa/Algiers" , 0x000153 }, + { "Africa/Asmara" , 0x00027E }, + { "Africa/Asmera" , 0x0002D4 }, + { "Africa/Bamako" , 0x00032A }, + { "Africa/Bangui" , 0x000395 }, + { "Africa/Banjul" , 0x0003EA }, + { "Africa/Bissau" , 0x000461 }, + { "Africa/Blantyre" , 0x0004C7 }, + { "Africa/Brazzaville" , 0x00051C }, + { "Africa/Bujumbura" , 0x000571 }, + { "Africa/Cairo" , 0x0005B5 }, + { "Africa/Casablanca" , 0x00097C }, + { "Africa/Ceuta" , 0x000A4E }, + { "Africa/Conakry" , 0x000D55 }, + { "Africa/Dakar" , 0x000DC0 }, + { "Africa/Dar_es_Salaam" , 0x000E26 }, + { "Africa/Djibouti" , 0x000E93 }, + { "Africa/Douala" , 0x000EE8 }, + { "Africa/El_Aaiun" , 0x000F3D }, + { "Africa/Freetown" , 0x000FA3 }, + { "Africa/Gaborone" , 0x0010B2 }, + { "Africa/Harare" , 0x00110D }, + { "Africa/Johannesburg" , 0x001162 }, + { "Africa/Kampala" , 0x0011D0 }, + { "Africa/Khartoum" , 0x00124F }, + { "Africa/Kigali" , 0x001362 }, + { "Africa/Kinshasa" , 0x0013B7 }, + { "Africa/Lagos" , 0x001412 }, + { "Africa/Libreville" , 0x001467 }, + { "Africa/Lome" , 0x0014BC }, + { "Africa/Luanda" , 0x001500 }, + { "Africa/Lubumbashi" , 0x001555 }, + { "Africa/Lusaka" , 0x0015B0 }, + { "Africa/Malabo" , 0x001605 }, + { "Africa/Maputo" , 0x00166B }, + { "Africa/Maseru" , 0x0016C0 }, + { "Africa/Mbabane" , 0x001728 }, + { "Africa/Mogadishu" , 0x00177E }, + { "Africa/Monrovia" , 0x0017D9 }, + { "Africa/Nairobi" , 0x00183F }, + { "Africa/Ndjamena" , 0x0018BE }, + { "Africa/Niamey" , 0x00192A }, + { "Africa/Nouakchott" , 0x00199D }, + { "Africa/Ouagadougou" , 0x001A08 }, + { "Africa/Porto-Novo" , 0x001A5D }, + { "Africa/Sao_Tome" , 0x001AC3 }, + { "Africa/Timbuktu" , 0x001B18 }, + { "Africa/Tripoli" , 0x001B83 }, + { "Africa/Tunis" , 0x001C7D }, + { "Africa/Windhoek" , 0x001EB1 }, + { "America/Adak" , 0x0020F8 }, + { "America/Anchorage" , 0x00246E }, + { "America/Anguilla" , 0x0027E2 }, + { "America/Antigua" , 0x002837 }, + { "America/Araguaina" , 0x00289D }, + { "America/Argentina/Buenos_Aires" , 0x0029F8 }, + { "America/Argentina/Catamarca" , 0x002CC3 }, + { "America/Argentina/ComodRivadavia" , 0x002E84 }, + { "America/Argentina/Cordoba" , 0x00302A }, + { "America/Argentina/Jujuy" , 0x00331C }, + { "America/Argentina/La_Rioja" , 0x0034D0 }, + { "America/Argentina/Mendoza" , 0x003688 }, + { "America/Argentina/Rio_Gallegos" , 0x003848 }, + { "America/Argentina/Salta" , 0x0039FD }, + { "America/Argentina/San_Juan" , 0x003BA9 }, + { "America/Argentina/San_Luis" , 0x003D61 }, + { "America/Argentina/Tucuman" , 0x003F13 }, + { "America/Argentina/Ushuaia" , 0x0041EC }, + { "America/Aruba" , 0x0043A7 }, + { "America/Asuncion" , 0x00440D }, + { "America/Atikokan" , 0x0046F2 }, + { "America/Atka" , 0x0047C8 }, + { "America/Bahia" , 0x004B2E }, + { "America/Barbados" , 0x004CB7 }, + { "America/Belem" , 0x004D51 }, + { "America/Belize" , 0x004E4C }, + { "America/Blanc-Sablon" , 0x004FC8 }, + { "America/Boa_Vista" , 0x00507C }, + { "America/Bogota" , 0x005185 }, + { "America/Boise" , 0x0051F1 }, + { "America/Buenos_Aires" , 0x005588 }, + { "America/Cambridge_Bay" , 0x00583E }, + { "America/Campo_Grande" , 0x005B66 }, + { "America/Cancun" , 0x005E55 }, + { "America/Caracas" , 0x006097 }, + { "America/Catamarca" , 0x0060FE }, + { "America/Cayenne" , 0x0062A4 }, + { "America/Cayman" , 0x006306 }, + { "America/Chicago" , 0x00635B }, + { "America/Chihuahua" , 0x006872 }, + { "America/Coral_Harbour" , 0x006AC1 }, + { "America/Cordoba" , 0x006B53 }, + { "America/Costa_Rica" , 0x006E16 }, + { "America/Cuiaba" , 0x006EA0 }, + { "America/Curacao" , 0x00717E }, + { "America/Danmarkshavn" , 0x0071E4 }, + { "America/Dawson" , 0x007328 }, + { "America/Dawson_Creek" , 0x007645 }, + { "America/Denver" , 0x00781F }, + { "America/Detroit" , 0x007BA5 }, + { "America/Dominica" , 0x007F04 }, + { "America/Edmonton" , 0x007F59 }, + { "America/Eirunepe" , 0x008311 }, + { "America/El_Salvador" , 0x008424 }, + { "America/Ensenada" , 0x008499 }, + { "America/Fort_Wayne" , 0x008940 }, + { "America/Fortaleza" , 0x008802 }, { "America/Glace_Bay" , 0x008BAA }, - { "America/Godthab" , 0x008ECE }, - { "America/Goose_Bay" , 0x009178 }, - { "America/Grand_Turk" , 0x009600 }, - { "America/Grenada" , 0x0098A3 }, - { "America/Guadeloupe" , 0x0098EC }, - { "America/Guatemala" , 0x009935 }, - { "America/Guayaquil" , 0x0099B2 }, - { "America/Guyana" , 0x0099FB }, - { "America/Halifax" , 0x009A70 }, - { "America/Havana" , 0x009F4C }, - { "America/Hermosillo" , 0x00A2B3 }, - { "America/Indiana/Indianapolis" , 0x00A366 }, - { "America/Indiana/Knox" , 0x00A5C4 }, - { "America/Indiana/Marengo" , 0x00A929 }, - { "America/Indiana/Petersburg" , 0x00AB9B }, - { "America/Indiana/Tell_City" , 0x00B0AC }, - { "America/Indiana/Vevay" , 0x00B314 }, - { "America/Indiana/Vincennes" , 0x00B518 }, - { "America/Indiana/Winamac" , 0x00B780 }, - { "America/Indianapolis" , 0x00AE4E }, - { "America/Inuvik" , 0x00BA06 }, - { "America/Iqaluit" , 0x00BCC7 }, - { "America/Jamaica" , 0x00BFB1 }, - { "America/Jujuy" , 0x00C06A }, - { "America/Juneau" , 0x00C32F }, - { "America/Kentucky/Louisville" , 0x00C683 }, - { "America/Kentucky/Monticello" , 0x00CA6C }, - { "America/Knox_IN" , 0x00CDBF }, - { "America/La_Paz" , 0x00D124 }, - { "America/Lima" , 0x00D17F }, - { "America/Los_Angeles" , 0x00D21B }, - { "America/Louisville" , 0x00D614 }, - { "America/Maceio" , 0x00D9FD }, - { "America/Managua" , 0x00DB1B }, - { "America/Manaus" , 0x00DBC2 }, - { "America/Marigot" , 0x00DCAE }, - { "America/Martinique" , 0x00DCF7 }, - { "America/Mazatlan" , 0x00DD57 }, - { "America/Mendoza" , 0x00DF90 }, - { "America/Menominee" , 0x00E25F }, - { "America/Merida" , 0x00E58D }, - { "America/Mexico_City" , 0x00E79C }, - { "America/Miquelon" , 0x00E9EE }, - { "America/Moncton" , 0x00EC54 }, - { "America/Monterrey" , 0x00F0C2 }, - { "America/Montevideo" , 0x00F2C5 }, - { "America/Montreal" , 0x00F5CB }, - { "America/Montserrat" , 0x00FAAF }, - { "America/Nassau" , 0x00FAF8 }, - { "America/New_York" , 0x00FE31 }, - { "America/Nipigon" , 0x010324 }, - { "America/Nome" , 0x01061E }, - { "America/Noronha" , 0x010977 }, - { "America/North_Dakota/Center" , 0x010A8B }, - { "America/North_Dakota/New_Salem" , 0x010DE8 }, - { "America/Panama" , 0x011145 }, - { "America/Pangnirtung" , 0x01118E }, - { "America/Paramaribo" , 0x011495 }, - { "America/Phoenix" , 0x01151B }, - { "America/Port-au-Prince" , 0x01159D }, - { "America/Port_of_Spain" , 0x01178F }, - { "America/Porto_Acre" , 0x0116AD }, - { "America/Porto_Velho" , 0x0117D8 }, - { "America/Puerto_Rico" , 0x0118BA }, - { "America/Rainy_River" , 0x011919 }, - { "America/Rankin_Inlet" , 0x011C13 }, - { "America/Recife" , 0x011ECF }, - { "America/Regina" , 0x011FE3 }, - { "America/Resolute" , 0x012160 }, - { "America/Rio_Branco" , 0x0122E6 }, - { "America/Rosario" , 0x0123C8 }, - { "America/Santiago" , 0x01267F }, - { "America/Santo_Domingo" , 0x012A0E }, - { "America/Sao_Paulo" , 0x012AC8 }, - { "America/Scoresbysund" , 0x012D99 }, - { "America/Shiprock" , 0x01305C }, - { "America/St_Barthelemy" , 0x0133C9 }, - { "America/St_Johns" , 0x013412 }, - { "America/St_Kitts" , 0x013931 }, - { "America/St_Lucia" , 0x01397A }, - { "America/St_Thomas" , 0x0139C3 }, - { "America/St_Vincent" , 0x013A0C }, - { "America/Swift_Current" , 0x013A55 }, - { "America/Tegucigalpa" , 0x013B3C }, - { "America/Thule" , 0x013BAF }, - { "America/Thunder_Bay" , 0x013DDA }, - { "America/Tijuana" , 0x0140F4 }, - { "America/Toronto" , 0x014451 }, - { "America/Tortola" , 0x014935 }, - { "America/Vancouver" , 0x01497E }, - { "America/Virgin" , 0x014D8B }, - { "America/Whitehorse" , 0x014DD4 }, - { "America/Winnipeg" , 0x0150CB }, - { "America/Yakutat" , 0x0154D9 }, - { "America/Yellowknife" , 0x015815 }, - { "Antarctica/Casey" , 0x015AEC }, - { "Antarctica/Davis" , 0x015B35 }, - { "Antarctica/DumontDUrville" , 0x015B89 }, - { "Antarctica/Mawson" , 0x015BE9 }, - { "Antarctica/McMurdo" , 0x015C33 }, - { "Antarctica/Palmer" , 0x015F0D }, - { "Antarctica/Rothera" , 0x016200 }, - { "Antarctica/South_Pole" , 0x01624A }, - { "Antarctica/Syowa" , 0x016524 }, - { "Antarctica/Vostok" , 0x01656E }, - { "Arctic/Longyearbyen" , 0x0165B8 }, - { "Asia/Aden" , 0x0168DE }, - { "Asia/Almaty" , 0x016927 }, - { "Asia/Amman" , 0x016A8C }, - { "Asia/Anadyr" , 0x016D40 }, - { "Asia/Aqtau" , 0x01700C }, - { "Asia/Aqtobe" , 0x0171CE }, - { "Asia/Ashgabat" , 0x01736B }, - { "Asia/Ashkhabad" , 0x01747C }, - { "Asia/Baghdad" , 0x01758D }, - { "Asia/Bahrain" , 0x0176F6 }, - { "Asia/Baku" , 0x017750 }, - { "Asia/Bangkok" , 0x017A2C }, - { "Asia/Beirut" , 0x017A75 }, - { "Asia/Bishkek" , 0x017D76 }, - { "Asia/Brunei" , 0x017F16 }, - { "Asia/Calcutta" , 0x017F6C }, - { "Asia/Choibalsan" , 0x017FD9 }, - { "Asia/Chongqing" , 0x018127 }, - { "Asia/Chungking" , 0x0181CA }, - { "Asia/Colombo" , 0x01826D }, - { "Asia/Dacca" , 0x0182FD }, - { "Asia/Damascus" , 0x018380 }, - { "Asia/Dhaka" , 0x0186C4 }, - { "Asia/Dili" , 0x018747 }, - { "Asia/Dubai" , 0x0187C4 }, - { "Asia/Dushanbe" , 0x01880D }, - { "Asia/Gaza" , 0x018904 }, - { "Asia/Harbin" , 0x018C41 }, - { "Asia/Ho_Chi_Minh" , 0x018CFB }, - { "Asia/Hong_Kong" , 0x018D67 }, - { "Asia/Hovd" , 0x018F11 }, - { "Asia/Irkutsk" , 0x019052 }, - { "Asia/Istanbul" , 0x019316 }, - { "Asia/Jakarta" , 0x0196F7 }, - { "Asia/Jayapura" , 0x019787 }, - { "Asia/Jerusalem" , 0x0197E6 }, - { "Asia/Kabul" , 0x019B09 }, - { "Asia/Kamchatka" , 0x019B4E }, - { "Asia/Karachi" , 0x019E12 }, - { "Asia/Kashgar" , 0x019EA7 }, - { "Asia/Katmandu" , 0x019F57 }, - { "Asia/Kolkata" , 0x019FB1 }, - { "Asia/Krasnoyarsk" , 0x01A01E }, - { "Asia/Kuala_Lumpur" , 0x01A2E2 }, - { "Asia/Kuching" , 0x01A380 }, - { "Asia/Kuwait" , 0x01A453 }, - { "Asia/Macao" , 0x01A49C }, - { "Asia/Macau" , 0x01A5CB }, - { "Asia/Magadan" , 0x01A6FA }, - { "Asia/Makassar" , 0x01A9BE }, - { "Asia/Manila" , 0x01AA2E }, - { "Asia/Muscat" , 0x01AAA7 }, - { "Asia/Nicosia" , 0x01AAF0 }, - { "Asia/Novosibirsk" , 0x01ADCC }, - { "Asia/Omsk" , 0x01B09D }, - { "Asia/Oral" , 0x01B361 }, - { "Asia/Phnom_Penh" , 0x01B516 }, - { "Asia/Pontianak" , 0x01B582 }, - { "Asia/Pyongyang" , 0x01B622 }, - { "Asia/Qatar" , 0x01B683 }, - { "Asia/Qyzylorda" , 0x01B6DD }, - { "Asia/Rangoon" , 0x01B887 }, - { "Asia/Riyadh" , 0x01B8F3 }, - { "Asia/Saigon" , 0x01B93C }, - { "Asia/Sakhalin" , 0x01B9A8 }, - { "Asia/Samarkand" , 0x01BC81 }, - { "Asia/Seoul" , 0x01BD9C }, - { "Asia/Shanghai" , 0x01BE34 }, - { "Asia/Singapore" , 0x01BED9 }, - { "Asia/Taipei" , 0x01BF84 }, - { "Asia/Tashkent" , 0x01C090 }, - { "Asia/Tbilisi" , 0x01C1A6 }, - { "Asia/Tehran" , 0x01C354 }, - { "Asia/Tel_Aviv" , 0x01C5B6 }, - { "Asia/Thimbu" , 0x01C8D9 }, - { "Asia/Thimphu" , 0x01C933 }, - { "Asia/Tokyo" , 0x01C98D }, - { "Asia/Ujung_Pandang" , 0x01CA0A }, - { "Asia/Ulaanbaatar" , 0x01CA7A }, - { "Asia/Ulan_Bator" , 0x01CBBB }, - { "Asia/Urumqi" , 0x01CCFC }, - { "Asia/Vientiane" , 0x01CD9F }, - { "Asia/Vladivostok" , 0x01CE0B }, - { "Asia/Yakutsk" , 0x01D0D6 }, - { "Asia/Yekaterinburg" , 0x01D39A }, - { "Asia/Yerevan" , 0x01D689 }, - { "Atlantic/Azores" , 0x01D981 }, - { "Atlantic/Bermuda" , 0x01DE72 }, - { "Atlantic/Canary" , 0x01E147 }, - { "Atlantic/Cape_Verde" , 0x01E403 }, - { "Atlantic/Faeroe" , 0x01E470 }, - { "Atlantic/Faroe" , 0x01E708 }, - { "Atlantic/Jan_Mayen" , 0x01E9A0 }, - { "Atlantic/Madeira" , 0x01ECC6 }, - { "Atlantic/Reykjavik" , 0x01F1B4 }, - { "Atlantic/South_Georgia" , 0x01F361 }, - { "Atlantic/St_Helena" , 0x01F661 }, - { "Atlantic/Stanley" , 0x01F399 }, - { "Australia/ACT" , 0x01F6AA }, - { "Australia/Adelaide" , 0x01F9BB }, - { "Australia/Brisbane" , 0x01FCCC }, - { "Australia/Broken_Hill" , 0x01FD6C }, - { "Australia/Canberra" , 0x020082 }, - { "Australia/Currie" , 0x020393 }, - { "Australia/Darwin" , 0x0206A4 }, - { "Australia/Eucla" , 0x02070C }, - { "Australia/Hobart" , 0x0207B7 }, - { "Australia/LHI" , 0x020AF0 }, - { "Australia/Lindeman" , 0x020D7F }, - { "Australia/Lord_Howe" , 0x020E38 }, - { "Australia/Melbourne" , 0x0210C7 }, - { "Australia/North" , 0x0213D8 }, - { "Australia/NSW" , 0x021440 }, - { "Australia/Perth" , 0x021751 }, - { "Australia/Queensland" , 0x0217FB }, - { "Australia/South" , 0x02189B }, - { "Australia/Sydney" , 0x021BAC }, - { "Australia/Tasmania" , 0x021EBD }, - { "Australia/Victoria" , 0x0221F6 }, - { "Australia/West" , 0x022507 }, - { "Australia/Yancowinna" , 0x0225B1 }, - { "Brazil/Acre" , 0x0228C7 }, - { "Brazil/DeNoronha" , 0x0229A9 }, - { "Brazil/East" , 0x022ABD }, - { "Brazil/West" , 0x022D8E }, - { "Canada/Atlantic" , 0x022E7A }, - { "Canada/Central" , 0x023356 }, - { "Canada/East-Saskatchewan" , 0x023C48 }, - { "Canada/Eastern" , 0x023764 }, - { "Canada/Mountain" , 0x023DC5 }, - { "Canada/Newfoundland" , 0x02412F }, - { "Canada/Pacific" , 0x02464E }, - { "Canada/Saskatchewan" , 0x024A5B }, - { "Canada/Yukon" , 0x024BD8 }, - { "CET" , 0x024ECF }, - { "Chile/Continental" , 0x0251C2 }, - { "Chile/EasterIsland" , 0x025551 }, - { "CST6CDT" , 0x025887 }, - { "Cuba" , 0x025BCC }, - { "EET" , 0x025F33 }, - { "Egypt" , 0x0261DA }, - { "Eire" , 0x026595 }, - { "EST" , 0x026A9A }, - { "EST5EDT" , 0x026AD2 }, - { "Etc/GMT" , 0x026E17 }, - { "Etc/GMT+0" , 0x026EBF }, - { "Etc/GMT+1" , 0x026F31 }, - { "Etc/GMT+10" , 0x026FA6 }, - { "Etc/GMT+11" , 0x02701C }, - { "Etc/GMT+12" , 0x027092 }, - { "Etc/GMT+2" , 0x02717D }, - { "Etc/GMT+3" , 0x0271F1 }, - { "Etc/GMT+4" , 0x027265 }, - { "Etc/GMT+5" , 0x0272D9 }, - { "Etc/GMT+6" , 0x02734D }, - { "Etc/GMT+7" , 0x0273C1 }, - { "Etc/GMT+8" , 0x027435 }, - { "Etc/GMT+9" , 0x0274A9 }, - { "Etc/GMT-0" , 0x026E87 }, - { "Etc/GMT-1" , 0x026EF7 }, - { "Etc/GMT-10" , 0x026F6B }, - { "Etc/GMT-11" , 0x026FE1 }, - { "Etc/GMT-12" , 0x027057 }, - { "Etc/GMT-13" , 0x0270CD }, - { "Etc/GMT-14" , 0x027108 }, - { "Etc/GMT-2" , 0x027143 }, - { "Etc/GMT-3" , 0x0271B7 }, - { "Etc/GMT-4" , 0x02722B }, - { "Etc/GMT-5" , 0x02729F }, - { "Etc/GMT-6" , 0x027313 }, - { "Etc/GMT-7" , 0x027387 }, - { "Etc/GMT-8" , 0x0273FB }, - { "Etc/GMT-9" , 0x02746F }, - { "Etc/GMT0" , 0x026E4F }, - { "Etc/Greenwich" , 0x0274E3 }, - { "Etc/UCT" , 0x02751B }, - { "Etc/Universal" , 0x027553 }, - { "Etc/UTC" , 0x02758B }, - { "Etc/Zulu" , 0x0275C3 }, - { "Europe/Amsterdam" , 0x0275FB }, - { "Europe/Andorra" , 0x027A2D }, - { "Europe/Athens" , 0x027C9D }, - { "Europe/Belfast" , 0x027FD4 }, - { "Europe/Belgrade" , 0x0284FF }, - { "Europe/Berlin" , 0x0287B7 }, - { "Europe/Bratislava" , 0x028AFC }, - { "Europe/Brussels" , 0x028E22 }, - { "Europe/Bucharest" , 0x02924D }, - { "Europe/Budapest" , 0x02956B }, - { "Europe/Chisinau" , 0x0298CD }, - { "Europe/Copenhagen" , 0x029C4F }, - { "Europe/Dublin" , 0x029F4D }, - { "Europe/Gibraltar" , 0x02A452 }, - { "Europe/Guernsey" , 0x02A89D }, - { "Europe/Helsinki" , 0x02ADC8 }, - { "Europe/Isle_of_Man" , 0x02B072 }, - { "Europe/Istanbul" , 0x02B59D }, - { "Europe/Jersey" , 0x02B97E }, - { "Europe/Kaliningrad" , 0x02BEA9 }, - { "Europe/Kiev" , 0x02C1E9 }, - { "Europe/Lisbon" , 0x02C4E6 }, - { "Europe/Ljubljana" , 0x02C9D6 }, - { "Europe/London" , 0x02CC8E }, - { "Europe/Luxembourg" , 0x02D1B9 }, - { "Europe/Madrid" , 0x02D603 }, - { "Europe/Malta" , 0x02D9B5 }, - { "Europe/Mariehamn" , 0x02DD62 }, - { "Europe/Minsk" , 0x02E00C }, - { "Europe/Monaco" , 0x02E30B }, - { "Europe/Moscow" , 0x02E73A }, - { "Europe/Nicosia" , 0x02EA69 }, - { "Europe/Oslo" , 0x02ED45 }, - { "Europe/Paris" , 0x02F06B }, - { "Europe/Podgorica" , 0x02F4A5 }, - { "Europe/Prague" , 0x02F75D }, - { "Europe/Riga" , 0x02FA83 }, - { "Europe/Rome" , 0x02FDBC }, - { "Europe/Samara" , 0x030173 }, - { "Europe/San_Marino" , 0x030477 }, - { "Europe/Sarajevo" , 0x03082E }, - { "Europe/Simferopol" , 0x030AE6 }, - { "Europe/Skopje" , 0x030DF7 }, - { "Europe/Sofia" , 0x0310AF }, - { "Europe/Stockholm" , 0x03139E }, - { "Europe/Tallinn" , 0x031641 }, - { "Europe/Tirane" , 0x03196F }, - { "Europe/Tiraspol" , 0x031C69 }, - { "Europe/Uzhgorod" , 0x031FEB }, - { "Europe/Vaduz" , 0x0322EE }, - { "Europe/Vatican" , 0x032575 }, - { "Europe/Vienna" , 0x03292C }, - { "Europe/Vilnius" , 0x032C4D }, - { "Europe/Volgograd" , 0x032F80 }, - { "Europe/Warsaw" , 0x033266 }, - { "Europe/Zagreb" , 0x03363B }, - { "Europe/Zaporozhye" , 0x0338F3 }, - { "Europe/Zurich" , 0x033BFA }, - { "Factory" , 0x033EA7 }, - { "GB" , 0x033F0C }, - { "GB-Eire" , 0x034437 }, - { "GMT" , 0x034962 }, - { "GMT+0" , 0x034A0A }, - { "GMT-0" , 0x0349D2 }, - { "GMT0" , 0x03499A }, - { "Greenwich" , 0x034A42 }, - { "Hongkong" , 0x034A7A }, - { "HST" , 0x034C24 }, - { "Iceland" , 0x034C5C }, - { "Indian/Antananarivo" , 0x034E09 }, - { "Indian/Chagos" , 0x034E71 }, - { "Indian/Christmas" , 0x034EC7 }, - { "Indian/Cocos" , 0x034EFF }, - { "Indian/Comoro" , 0x034F37 }, - { "Indian/Kerguelen" , 0x034F80 }, - { "Indian/Mahe" , 0x034FC9 }, - { "Indian/Maldives" , 0x035012 }, - { "Indian/Mauritius" , 0x03505B }, - { "Indian/Mayotte" , 0x0350A4 }, - { "Indian/Reunion" , 0x0350ED }, - { "Iran" , 0x035136 }, - { "Israel" , 0x035398 }, - { "Jamaica" , 0x0356BB }, - { "Japan" , 0x035774 }, - { "Kwajalein" , 0x0357F1 }, - { "Libya" , 0x035848 }, - { "MET" , 0x035936 }, - { "Mexico/BajaNorte" , 0x035C29 }, - { "Mexico/BajaSur" , 0x035F86 }, - { "Mexico/General" , 0x0361BF }, - { "MST" , 0x036411 }, - { "MST7MDT" , 0x036449 }, - { "Navajo" , 0x03678E }, - { "NZ" , 0x036AFB }, - { "NZ-CHAT" , 0x036E6D }, - { "Pacific/Apia" , 0x037149 }, - { "Pacific/Auckland" , 0x0371A4 }, - { "Pacific/Chatham" , 0x037516 }, - { "Pacific/Easter" , 0x0377F2 }, - { "Pacific/Efate" , 0x037B28 }, - { "Pacific/Enderbury" , 0x037BE2 }, - { "Pacific/Fakaofo" , 0x037C35 }, - { "Pacific/Fiji" , 0x037C6D }, - { "Pacific/Funafuti" , 0x037CD7 }, - { "Pacific/Galapagos" , 0x037D0F }, - { "Pacific/Gambier" , 0x037D6A }, - { "Pacific/Guadalcanal" , 0x037DB4 }, - { "Pacific/Guam" , 0x037DFD }, - { "Pacific/Honolulu" , 0x037E47 }, - { "Pacific/Johnston" , 0x037EC9 }, - { "Pacific/Kiritimati" , 0x037F01 }, - { "Pacific/Kosrae" , 0x037F54 }, - { "Pacific/Kwajalein" , 0x037F9F }, - { "Pacific/Majuro" , 0x037FF6 }, - { "Pacific/Marquesas" , 0x03803B }, - { "Pacific/Midway" , 0x038085 }, - { "Pacific/Nauru" , 0x0380F5 }, - { "Pacific/Niue" , 0x038161 }, - { "Pacific/Norfolk" , 0x0381B3 }, - { "Pacific/Noumea" , 0x0381FC }, - { "Pacific/Pago_Pago" , 0x038280 }, - { "Pacific/Palau" , 0x0382FD }, - { "Pacific/Pitcairn" , 0x038335 }, - { "Pacific/Ponape" , 0x03837E }, - { "Pacific/Port_Moresby" , 0x0383B7 }, - { "Pacific/Rarotonga" , 0x0383EF }, - { "Pacific/Saipan" , 0x0384BF }, - { "Pacific/Samoa" , 0x038516 }, - { "Pacific/Tahiti" , 0x038593 }, - { "Pacific/Tarawa" , 0x0385DD }, - { "Pacific/Tongatapu" , 0x038616 }, - { "Pacific/Truk" , 0x038696 }, - { "Pacific/Wake" , 0x0386CF }, - { "Pacific/Wallis" , 0x038708 }, - { "Pacific/Yap" , 0x038740 }, - { "Poland" , 0x038779 }, - { "Portugal" , 0x038B4E }, - { "PRC" , 0x03903E }, - { "PST8PDT" , 0x0390E3 }, - { "ROC" , 0x039428 }, - { "ROK" , 0x039534 }, - { "Singapore" , 0x0395CC }, - { "Turkey" , 0x039677 }, - { "UCT" , 0x039A58 }, - { "Universal" , 0x039A90 }, - { "US/Alaska" , 0x039AC8 }, - { "US/Aleutian" , 0x039E25 }, - { "US/Arizona" , 0x03A17F }, - { "US/Central" , 0x03A201 }, - { "US/East-Indiana" , 0x03ABF3 }, - { "US/Eastern" , 0x03A700 }, - { "US/Hawaii" , 0x03AE51 }, - { "US/Indiana-Starke" , 0x03AED3 }, - { "US/Michigan" , 0x03B238 }, - { "US/Mountain" , 0x03B563 }, - { "US/Pacific" , 0x03B8D0 }, - { "US/Pacific-New" , 0x03BCC9 }, - { "US/Samoa" , 0x03C0C2 }, - { "UTC" , 0x03C13F }, - { "W-SU" , 0x03C41E }, - { "WET" , 0x03C177 }, - { "Zulu" , 0x03C74D }, + { "America/Godthab" , 0x008F21 }, + { "America/Goose_Bay" , 0x0091E5 }, + { "America/Grand_Turk" , 0x0096A2 }, + { "America/Grenada" , 0x009951 }, + { "America/Guadeloupe" , 0x0099A6 }, + { "America/Guatemala" , 0x0099FB }, + { "America/Guayaquil" , 0x009A84 }, + { "America/Guyana" , 0x009AE1 }, + { "America/Halifax" , 0x009B62 }, + { "America/Havana" , 0x00A078 }, + { "America/Hermosillo" , 0x00A3EB }, + { "America/Indiana/Indianapolis" , 0x00A4C9 }, + { "America/Indiana/Knox" , 0x00A75A }, + { "America/Indiana/Marengo" , 0x00AAF1 }, + { "America/Indiana/Petersburg" , 0x00AD97 }, + { "America/Indiana/Tell_City" , 0x00B2E4 }, + { "America/Indiana/Vevay" , 0x00B57D }, + { "America/Indiana/Vincennes" , 0x00B7B8 }, + { "America/Indiana/Winamac" , 0x00BA6C }, + { "America/Indianapolis" , 0x00B07A }, + { "America/Inuvik" , 0x00BD25 }, + { "America/Iqaluit" , 0x00C01C }, + { "America/Jamaica" , 0x00C33E }, + { "America/Jujuy" , 0x00C403 }, + { "America/Juneau" , 0x00C5AD }, + { "America/Kentucky/Louisville" , 0x00C92B }, + { "America/Kentucky/Monticello" , 0x00CD49 }, + { "America/Knox_IN" , 0x00D0CE }, + { "America/La_Paz" , 0x00D43F }, + { "America/Lima" , 0x00D4A6 }, + { "America/Los_Angeles" , 0x00D54E }, + { "America/Louisville" , 0x00D95F }, + { "America/Maceio" , 0x00DD54 }, + { "America/Managua" , 0x00DE8E }, + { "America/Manaus" , 0x00DF41 }, + { "America/Marigot" , 0x00E043 }, + { "America/Martinique" , 0x00E098 }, + { "America/Mazatlan" , 0x00E104 }, + { "America/Mendoza" , 0x00E371 }, + { "America/Menominee" , 0x00E525 }, + { "America/Merida" , 0x00E8A6 }, + { "America/Mexico_City" , 0x00EAE1 }, + { "America/Miquelon" , 0x00ED5C }, + { "America/Moncton" , 0x00EFCE }, + { "America/Monterrey" , 0x00F465 }, + { "America/Montevideo" , 0x00F6AC }, + { "America/Montreal" , 0x00F9BE }, + { "America/Montserrat" , 0x00FED4 }, + { "America/Nassau" , 0x00FF29 }, + { "America/New_York" , 0x01026E }, + { "America/Nipigon" , 0x010779 }, + { "America/Nome" , 0x010ACA }, + { "America/Noronha" , 0x010E48 }, + { "America/North_Dakota/Center" , 0x010F78 }, + { "America/North_Dakota/New_Salem" , 0x01130C }, + { "America/Panama" , 0x0116B5 }, + { "America/Pangnirtung" , 0x01170A }, + { "America/Paramaribo" , 0x011A40 }, + { "America/Phoenix" , 0x011AD2 }, + { "America/Port-au-Prince" , 0x011B80 }, + { "America/Port_of_Spain" , 0x011D9B }, + { "America/Porto_Acre" , 0x011C9C }, + { "America/Porto_Velho" , 0x011DF0 }, + { "America/Puerto_Rico" , 0x011EE6 }, + { "America/Rainy_River" , 0x011F51 }, + { "America/Rankin_Inlet" , 0x012289 }, + { "America/Recife" , 0x01256F }, + { "America/Regina" , 0x012699 }, + { "America/Resolute" , 0x012857 }, + { "America/Rio_Branco" , 0x012B50 }, + { "America/Rosario" , 0x012C53 }, + { "America/Santarem" , 0x012F16 }, + { "America/Santiago" , 0x01301B }, + { "America/Santo_Domingo" , 0x0133C4 }, + { "America/Sao_Paulo" , 0x01348A }, + { "America/Scoresbysund" , 0x013799 }, + { "America/Shiprock" , 0x013A87 }, + { "America/St_Barthelemy" , 0x013E16 }, + { "America/St_Johns" , 0x013E6B }, + { "America/St_Kitts" , 0x0143BE }, + { "America/St_Lucia" , 0x014413 }, + { "America/St_Thomas" , 0x014468 }, + { "America/St_Vincent" , 0x0144BD }, + { "America/Swift_Current" , 0x014512 }, + { "America/Tegucigalpa" , 0x014633 }, + { "America/Thule" , 0x0146B2 }, + { "America/Thunder_Bay" , 0x0148F9 }, + { "America/Tijuana" , 0x014C42 }, + { "America/Toronto" , 0x014FB7 }, + { "America/Tortola" , 0x0154CE }, + { "America/Vancouver" , 0x015523 }, + { "America/Virgin" , 0x015960 }, + { "America/Whitehorse" , 0x0159B5 }, + { "America/Winnipeg" , 0x015CD2 }, + { "America/Yakutat" , 0x016112 }, + { "America/Yellowknife" , 0x01647D }, + { "Antarctica/Casey" , 0x01678D }, + { "Antarctica/Davis" , 0x016801 }, + { "Antarctica/DumontDUrville" , 0x01687E }, + { "Antarctica/Mawson" , 0x016910 }, + { "Antarctica/McMurdo" , 0x01697F }, + { "Antarctica/Palmer" , 0x016C81 }, + { "Antarctica/Rothera" , 0x016F9D }, + { "Antarctica/South_Pole" , 0x017013 }, + { "Antarctica/Syowa" , 0x01731B }, + { "Antarctica/Vostok" , 0x017389 }, + { "Arctic/Longyearbyen" , 0x0173FE }, + { "Asia/Aden" , 0x017730 }, + { "Asia/Almaty" , 0x017785 }, + { "Asia/Amman" , 0x017904 }, + { "Asia/Anadyr" , 0x017BC4 }, + { "Asia/Aqtau" , 0x017EB2 }, + { "Asia/Aqtobe" , 0x0180B1 }, + { "Asia/Ashgabat" , 0x018269 }, + { "Asia/Ashkhabad" , 0x018386 }, + { "Asia/Baghdad" , 0x0184A3 }, + { "Asia/Bahrain" , 0x018618 }, + { "Asia/Baku" , 0x01867E }, + { "Asia/Bangkok" , 0x018966 }, + { "Asia/Beirut" , 0x0189BB }, + { "Asia/Bishkek" , 0x018CC8 }, + { "Asia/Brunei" , 0x018E74 }, + { "Asia/Calcutta" , 0x018ED6 }, + { "Asia/Choibalsan" , 0x018F4F }, + { "Asia/Chongqing" , 0x0190C8 }, + { "Asia/Chungking" , 0x0191B7 }, + { "Asia/Colombo" , 0x019266 }, + { "Asia/Dacca" , 0x019302 }, + { "Asia/Damascus" , 0x019391 }, + { "Asia/Dhaka" , 0x0196E1 }, + { "Asia/Dili" , 0x019770 }, + { "Asia/Dubai" , 0x0197F9 }, + { "Asia/Dushanbe" , 0x01984E }, + { "Asia/Gaza" , 0x019951 }, + { "Asia/Harbin" , 0x019C9A }, + { "Asia/Ho_Chi_Minh" , 0x019D81 }, + { "Asia/Hong_Kong" , 0x019DF9 }, + { "Asia/Hovd" , 0x019FAF }, + { "Asia/Irkutsk" , 0x01A127 }, + { "Asia/Istanbul" , 0x01A40E }, + { "Asia/Jakarta" , 0x01A7FB }, + { "Asia/Jayapura" , 0x01A8A5 }, + { "Asia/Jerusalem" , 0x01A929 }, + { "Asia/Kabul" , 0x01AC58 }, + { "Asia/Kamchatka" , 0x01ACA9 }, + { "Asia/Karachi" , 0x01AF8E }, + { "Asia/Kashgar" , 0x01B039 }, + { "Asia/Kathmandu" , 0x01B10A }, + { "Asia/Katmandu" , 0x01B170 }, + { "Asia/Kolkata" , 0x01B1D6 }, + { "Asia/Krasnoyarsk" , 0x01B24F }, + { "Asia/Kuala_Lumpur" , 0x01B538 }, + { "Asia/Kuching" , 0x01B5F5 }, + { "Asia/Kuwait" , 0x01B6E3 }, + { "Asia/Macao" , 0x01B738 }, + { "Asia/Macau" , 0x01B873 }, + { "Asia/Magadan" , 0x01B9AE }, + { "Asia/Makassar" , 0x01BC91 }, + { "Asia/Manila" , 0x01BD4A }, + { "Asia/Muscat" , 0x01BDCF }, + { "Asia/Nicosia" , 0x01BE24 }, + { "Asia/Novosibirsk" , 0x01C10C }, + { "Asia/Omsk" , 0x01C400 }, + { "Asia/Oral" , 0x01C6E8 }, + { "Asia/Phnom_Penh" , 0x01C8B8 }, + { "Asia/Pontianak" , 0x01C930 }, + { "Asia/Pyongyang" , 0x01C9F1 }, + { "Asia/Qatar" , 0x01CA5E }, + { "Asia/Qyzylorda" , 0x01CAC4 }, + { "Asia/Rangoon" , 0x01CC9A }, + { "Asia/Riyadh" , 0x01CD12 }, + { "Asia/Saigon" , 0x01CD67 }, + { "Asia/Sakhalin" , 0x01CDDF }, + { "Asia/Samarkand" , 0x01D0DF }, + { "Asia/Seoul" , 0x01D215 }, + { "Asia/Shanghai" , 0x01D2B9 }, + { "Asia/Singapore" , 0x01D399 }, + { "Asia/Taipei" , 0x01D450 }, + { "Asia/Tashkent" , 0x01D568 }, + { "Asia/Tbilisi" , 0x01D699 }, + { "Asia/Tehran" , 0x01D853 }, + { "Asia/Tel_Aviv" , 0x01DAC1 }, + { "Asia/Thimbu" , 0x01DDF0 }, + { "Asia/Thimphu" , 0x01DE56 }, + { "Asia/Tokyo" , 0x01DEBC }, + { "Asia/Ujung_Pandang" , 0x01DF45 }, + { "Asia/Ulaanbaatar" , 0x01DFC1 }, + { "Asia/Ulan_Bator" , 0x01E11C }, + { "Asia/Urumqi" , 0x01E269 }, + { "Asia/Vientiane" , 0x01E330 }, + { "Asia/Vladivostok" , 0x01E3A8 }, + { "Asia/Yakutsk" , 0x01E695 }, + { "Asia/Yekaterinburg" , 0x01E97B }, + { "Asia/Yerevan" , 0x01EC87 }, + { "Atlantic/Azores" , 0x01EF8B }, + { "Atlantic/Bermuda" , 0x01F48E }, + { "Atlantic/Canary" , 0x01F76F }, + { "Atlantic/Cape_Verde" , 0x01FA45 }, + { "Atlantic/Faeroe" , 0x01FABE }, + { "Atlantic/Faroe" , 0x01FD62 }, + { "Atlantic/Jan_Mayen" , 0x020006 }, + { "Atlantic/Madeira" , 0x020338 }, + { "Atlantic/Reykjavik" , 0x020841 }, + { "Atlantic/South_Georgia" , 0x0209FA }, + { "Atlantic/St_Helena" , 0x020D12 }, + { "Atlantic/Stanley" , 0x020A3E }, + { "Australia/ACT" , 0x020D67 }, + { "Australia/Adelaide" , 0x021084 }, + { "Australia/Brisbane" , 0x0213B0 }, + { "Australia/Broken_Hill" , 0x021477 }, + { "Australia/Canberra" , 0x0217B5 }, + { "Australia/Currie" , 0x021AD2 }, + { "Australia/Darwin" , 0x021E05 }, + { "Australia/Eucla" , 0x021E8B }, + { "Australia/Hobart" , 0x021F60 }, + { "Australia/LHI" , 0x0222BE }, + { "Australia/Lindeman" , 0x022559 }, + { "Australia/Lord_Howe" , 0x02263A }, + { "Australia/Melbourne" , 0x0228E5 }, + { "Australia/North" , 0x022C0A }, + { "Australia/NSW" , 0x022C7E }, + { "Australia/Perth" , 0x022F9B }, + { "Australia/Queensland" , 0x023073 }, + { "Australia/South" , 0x02311F }, + { "Australia/Sydney" , 0x02343C }, + { "Australia/Tasmania" , 0x023779 }, + { "Australia/Victoria" , 0x023ABE }, + { "Australia/West" , 0x023DDB }, + { "Australia/Yancowinna" , 0x023E91 }, + { "Brazil/Acre" , 0x0241B3 }, + { "Brazil/DeNoronha" , 0x0242B2 }, + { "Brazil/East" , 0x0243D2 }, + { "Brazil/West" , 0x0246AF }, + { "Canada/Atlantic" , 0x0247A7 }, + { "Canada/Central" , 0x024C8F }, + { "Canada/East-Saskatchewan" , 0x025599 }, + { "Canada/Eastern" , 0x0250A9 }, + { "Canada/Mountain" , 0x025722 }, + { "Canada/Newfoundland" , 0x025A98 }, + { "Canada/Pacific" , 0x025FC3 }, + { "Canada/Saskatchewan" , 0x0263DC }, + { "Canada/Yukon" , 0x026565 }, + { "CET" , 0x026868 }, + { "Chile/Continental" , 0x026B71 }, + { "Chile/EasterIsland" , 0x026F0C }, + { "CST6CDT" , 0x02724E }, + { "Cuba" , 0x02759F }, + { "EET" , 0x027912 }, + { "Egypt" , 0x027BC5 }, + { "Eire" , 0x027F8C }, + { "EST" , 0x02849D }, + { "EST5EDT" , 0x0284E1 }, + { "Etc/GMT" , 0x028832 }, + { "Etc/GMT+0" , 0x0288FE }, + { "Etc/GMT+1" , 0x028988 }, + { "Etc/GMT+10" , 0x028A15 }, + { "Etc/GMT+11" , 0x028AA3 }, + { "Etc/GMT+12" , 0x028B31 }, + { "Etc/GMT+2" , 0x028C4C }, + { "Etc/GMT+3" , 0x028CD8 }, + { "Etc/GMT+4" , 0x028D64 }, + { "Etc/GMT+5" , 0x028DF0 }, + { "Etc/GMT+6" , 0x028E7C }, + { "Etc/GMT+7" , 0x028F08 }, + { "Etc/GMT+8" , 0x028F94 }, + { "Etc/GMT+9" , 0x029020 }, + { "Etc/GMT-0" , 0x0288BA }, + { "Etc/GMT-1" , 0x028942 }, + { "Etc/GMT-10" , 0x0289CE }, + { "Etc/GMT-11" , 0x028A5C }, + { "Etc/GMT-12" , 0x028AEA }, + { "Etc/GMT-13" , 0x028B78 }, + { "Etc/GMT-14" , 0x028BBF }, + { "Etc/GMT-2" , 0x028C06 }, + { "Etc/GMT-3" , 0x028C92 }, + { "Etc/GMT-4" , 0x028D1E }, + { "Etc/GMT-5" , 0x028DAA }, + { "Etc/GMT-6" , 0x028E36 }, + { "Etc/GMT-7" , 0x028EC2 }, + { "Etc/GMT-8" , 0x028F4E }, + { "Etc/GMT-9" , 0x028FDA }, + { "Etc/GMT0" , 0x028876 }, + { "Etc/Greenwich" , 0x029066 }, + { "Etc/UCT" , 0x0290AA }, + { "Etc/Universal" , 0x0290EE }, + { "Etc/UTC" , 0x029132 }, + { "Etc/Zulu" , 0x029176 }, + { "Europe/Amsterdam" , 0x0291BA }, + { "Europe/Andorra" , 0x0295F8 }, + { "Europe/Athens" , 0x029874 }, + { "Europe/Belfast" , 0x029BB7 }, + { "Europe/Belgrade" , 0x02A0EE }, + { "Europe/Berlin" , 0x02A3B7 }, + { "Europe/Bratislava" , 0x02A70D }, + { "Europe/Brussels" , 0x02AA3F }, + { "Europe/Bucharest" , 0x02AE76 }, + { "Europe/Budapest" , 0x02B1A0 }, + { "Europe/Chisinau" , 0x02B513 }, + { "Europe/Copenhagen" , 0x02B8A1 }, + { "Europe/Dublin" , 0x02BBAB }, + { "Europe/Gibraltar" , 0x02C0BC }, + { "Europe/Guernsey" , 0x02C513 }, + { "Europe/Helsinki" , 0x02CA4A }, + { "Europe/Isle_of_Man" , 0x02CD00 }, + { "Europe/Istanbul" , 0x02D237 }, + { "Europe/Jersey" , 0x02D624 }, + { "Europe/Kaliningrad" , 0x02DB5B }, + { "Europe/Kiev" , 0x02DEBE }, + { "Europe/Lisbon" , 0x02E1D5 }, + { "Europe/Ljubljana" , 0x02E6D9 }, + { "Europe/London" , 0x02E9A2 }, + { "Europe/Luxembourg" , 0x02EED9 }, + { "Europe/Madrid" , 0x02F32F }, + { "Europe/Malta" , 0x02F6F5 }, + { "Europe/Mariehamn" , 0x02FAAE }, + { "Europe/Minsk" , 0x02FD64 }, + { "Europe/Monaco" , 0x03006F }, + { "Europe/Moscow" , 0x0304AA }, + { "Europe/Nicosia" , 0x0307FC }, + { "Europe/Oslo" , 0x030AE4 }, + { "Europe/Paris" , 0x030E16 }, + { "Europe/Podgorica" , 0x03125C }, + { "Europe/Prague" , 0x031525 }, + { "Europe/Riga" , 0x031857 }, + { "Europe/Rome" , 0x031B9C }, + { "Europe/Samara" , 0x031F5F }, + { "Europe/San_Marino" , 0x03228B }, + { "Europe/Sarajevo" , 0x03264E }, + { "Europe/Simferopol" , 0x032917 }, + { "Europe/Skopje" , 0x032C42 }, + { "Europe/Sofia" , 0x032F0B }, + { "Europe/Stockholm" , 0x033213 }, + { "Europe/Tallinn" , 0x0334C2 }, + { "Europe/Tirane" , 0x0337FC }, + { "Europe/Tiraspol" , 0x033B02 }, + { "Europe/Uzhgorod" , 0x033E90 }, + { "Europe/Vaduz" , 0x0341A7 }, + { "Europe/Vatican" , 0x03443A }, + { "Europe/Vienna" , 0x0347FD }, + { "Europe/Vilnius" , 0x034B2A }, + { "Europe/Volgograd" , 0x034E69 }, + { "Europe/Warsaw" , 0x035172 }, + { "Europe/Zagreb" , 0x035553 }, + { "Europe/Zaporozhye" , 0x03581C }, + { "Europe/Zurich" , 0x035B5D }, + { "Factory" , 0x035E0C }, + { "GB" , 0x035E7D }, + { "GB-Eire" , 0x0363B4 }, + { "GMT" , 0x0368EB }, + { "GMT+0" , 0x0369B7 }, + { "GMT-0" , 0x036973 }, + { "GMT0" , 0x03692F }, + { "Greenwich" , 0x0369FB }, + { "Hongkong" , 0x036A3F }, + { "HST" , 0x036BF5 }, + { "Iceland" , 0x036C39 }, + { "Indian/Antananarivo" , 0x036DF2 }, + { "Indian/Chagos" , 0x036E66 }, + { "Indian/Christmas" , 0x036EC8 }, + { "Indian/Cocos" , 0x036F0C }, + { "Indian/Comoro" , 0x036F50 }, + { "Indian/Kerguelen" , 0x036FA5 }, + { "Indian/Mahe" , 0x036FFA }, + { "Indian/Maldives" , 0x03704F }, + { "Indian/Mauritius" , 0x0370A4 }, + { "Indian/Mayotte" , 0x037247 }, + { "Indian/Reunion" , 0x03729C }, + { "Iran" , 0x0372F1 }, + { "Israel" , 0x03755F }, + { "Jamaica" , 0x03788E }, + { "Japan" , 0x037953 }, + { "Kwajalein" , 0x0379DC }, + { "Libya" , 0x037A3F }, + { "MET" , 0x037B39 }, + { "Mexico/BajaNorte" , 0x037E42 }, + { "Mexico/BajaSur" , 0x0381AB }, + { "Mexico/General" , 0x0383F0 }, + { "MST" , 0x03864E }, + { "MST7MDT" , 0x038692 }, + { "Navajo" , 0x0389E3 }, + { "NZ" , 0x038D5C }, + { "NZ-CHAT" , 0x0390DA }, + { "Pacific/Apia" , 0x0393C2 }, + { "Pacific/Auckland" , 0x039429 }, + { "Pacific/Chatham" , 0x0397B5 }, + { "Pacific/Easter" , 0x039AAC }, + { "Pacific/Efate" , 0x039E0A }, + { "Pacific/Enderbury" , 0x039ED0 }, + { "Pacific/Fakaofo" , 0x039F3E }, + { "Pacific/Fiji" , 0x039F82 }, + { "Pacific/Funafuti" , 0x039FF8 }, + { "Pacific/Galapagos" , 0x03A03C }, + { "Pacific/Gambier" , 0x03A0B4 }, + { "Pacific/Guadalcanal" , 0x03A119 }, + { "Pacific/Guam" , 0x03A16E }, + { "Pacific/Honolulu" , 0x03A1C4 }, + { "Pacific/Johnston" , 0x03A258 }, + { "Pacific/Kiritimati" , 0x03A2AA }, + { "Pacific/Kosrae" , 0x03A315 }, + { "Pacific/Kwajalein" , 0x03A372 }, + { "Pacific/Majuro" , 0x03A3DE }, + { "Pacific/Marquesas" , 0x03A43D }, + { "Pacific/Midway" , 0x03A4A4 }, + { "Pacific/Nauru" , 0x03A52E }, + { "Pacific/Niue" , 0x03A5A6 }, + { "Pacific/Norfolk" , 0x03A604 }, + { "Pacific/Noumea" , 0x03A659 }, + { "Pacific/Pago_Pago" , 0x03A6E9 }, + { "Pacific/Palau" , 0x03A772 }, + { "Pacific/Pitcairn" , 0x03A7B6 }, + { "Pacific/Ponape" , 0x03A80B }, + { "Pacific/Port_Moresby" , 0x03A860 }, + { "Pacific/Rarotonga" , 0x03A8A4 }, + { "Pacific/Saipan" , 0x03A980 }, + { "Pacific/Samoa" , 0x03A9E3 }, + { "Pacific/Tahiti" , 0x03AA6C }, + { "Pacific/Tarawa" , 0x03AAD1 }, + { "Pacific/Tongatapu" , 0x03AB25 }, + { "Pacific/Truk" , 0x03ABB1 }, + { "Pacific/Wake" , 0x03AC0A }, + { "Pacific/Wallis" , 0x03AC5A }, + { "Pacific/Yap" , 0x03AC9E }, + { "Poland" , 0x03ACE3 }, + { "Portugal" , 0x03B0C4 }, + { "PRC" , 0x03B5C0 }, + { "PST8PDT" , 0x03B671 }, + { "ROC" , 0x03B9C2 }, + { "ROK" , 0x03BADA }, + { "Singapore" , 0x03BB7E }, + { "Turkey" , 0x03BC35 }, + { "UCT" , 0x03C022 }, + { "Universal" , 0x03C066 }, + { "US/Alaska" , 0x03C0AA }, + { "US/Aleutian" , 0x03C413 }, + { "US/Arizona" , 0x03C779 }, + { "US/Central" , 0x03C807 }, + { "US/East-Indiana" , 0x03D211 }, + { "US/Eastern" , 0x03CD12 }, + { "US/Hawaii" , 0x03D47B }, + { "US/Indiana-Starke" , 0x03D509 }, + { "US/Michigan" , 0x03D87A }, + { "US/Mountain" , 0x03DBB1 }, + { "US/Pacific" , 0x03DF2A }, + { "US/Pacific-New" , 0x03E32F }, + { "US/Samoa" , 0x03E734 }, + { "UTC" , 0x03E7BD }, + { "W-SU" , 0x03EAB4 }, + { "WET" , 0x03E801 }, + { "Zulu" , 0x03EDEF }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[247685] = { +const unsigned char timelib_timezone_db_data_builtin[257587] = { /* Africa/Abidjan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Accra */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x48, 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, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x9E, 0x30, 0x66, 0xB4, 0xC1, 0x4C, 0xF9, 0x80, 0xC1, 0xEC, 0x7A, 0x50, 0xC3, 0x2E, 0x2D, 0x00, 0xC3, 0xCD, 0xAD, 0xD0, @@ -578,17 +582,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xCC, 0x95, 0x80, 0x00, 0xCD, 0x35, 0x00, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x48, 0x53, -0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Addis_Ababa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x00, 0x00, 0x24, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x05, 0x41, 0x44, 0x4D, -0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Algiers */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x91, 0x60, 0x50, 0x4F, 0x9B, 0x47, 0x78, 0xF0, 0x9B, 0xD7, 0x2C, 0x70, 0x9C, 0xBC, 0x91, 0x70, 0x9D, 0xC0, 0x48, 0xF0, @@ -605,76 +611,86 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0D, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x50, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Asmara */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x00, 0x00, 0x24, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x05, 0x41, 0x44, 0x4D, -0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Asmera */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x00, 0x00, 0x24, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x05, 0x41, 0x44, 0x4D, -0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bamako */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4C, 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, 0x0C, 0x92, 0xE6, 0x96, 0x00, 0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bangui */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x7D, 0x14, 0x01, 0x00, 0x00, 0x11, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Banjul */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x92, 0xE6, 0x9E, 0x1C, 0xBE, 0x2A, 0x27, 0x9C, 0xF4, 0xB6, 0x36, 0x10, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bissau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x91, 0xC4, 0x93, 0x1C, 0x09, 0x67, 0x61, 0x10, 0x01, 0x02, 0xFF, 0xFF, 0xF1, 0x64, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, -0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Blantyre */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC3, 0xB0, 0x01, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Brazzaville */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x80, 0x2C, 0x01, 0x00, 0x00, 0x0E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bujumbura */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Africa/Cairo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0, 0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60, @@ -733,24 +749,27 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Casablanca */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x41, 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, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0x51, 0xF9, 0x9C, +0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0x51, 0xF9, 0x9C, 0xC6, 0xFF, 0x14, 0x80, 0xC7, 0x58, 0xAC, 0x70, 0xC7, 0xD9, 0xED, 0x80, 0xD2, 0xA1, 0x32, 0xF0, 0xDB, 0x35, 0xA4, 0x00, 0xDB, 0xEE, 0x27, 0xF0, 0xFB, 0x25, 0x72, 0x40, 0xFB, 0xC2, 0xEF, 0x70, 0x08, 0x6B, 0x84, 0x80, 0x08, 0xC6, 0x6D, 0xF0, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x0D, 0xC9, 0x3F, 0x80, 0x0E, 0x8E, 0xF2, 0x70, 0x0F, 0xD3, 0x51, 0x80, 0x10, 0x27, 0xA3, 0x70, -0x1A, 0xB7, 0xA6, 0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, -0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, -0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x1A, 0xB7, 0xA6, 0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x48, 0x41, 0xE6, 0x80, 0x48, 0xBB, 0x22, 0x70, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x03, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Africa/Ceuta */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x9E, 0xD6, 0x75, 0x70, 0x9F, 0xA1, 0x6E, 0x60, 0xAA, 0x05, 0xEF, 0x70, 0xAA, 0xE7, 0x5F, 0xF0, 0xAD, 0xC9, 0xA7, 0xF0, @@ -796,57 +815,64 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0D, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x26, 0x20, +0x4D, 0x65, 0x6C, 0x69, 0x6C, 0x6C, 0x61, /* Africa/Conakry */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4E, 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, 0x0C, 0x92, 0xE6, 0x9B, 0x5C, 0xBC, 0x92, 0xB8, 0x80, 0xED, 0x30, 0x16, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF3, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Dakar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9E, 0xD8, 0xCA, 0x3B, 0x10, 0x90, 0x01, 0x02, 0xFF, 0xFF, 0xEF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, -0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Dar_es_Salaam */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x00, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Djibouti */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD2, 0x0C, 0x01, 0x00, 0x00, 0x28, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Douala */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0x68, 0x01, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/El_Aaiun */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xBC, 0x48, 0xF0, 0xE0, 0x0B, 0xD1, 0xB0, 0x90, 0x01, 0x02, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, -0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Freetown */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4C, 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, 0x1E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x95, 0x90, 0x32, 0x6C, 0xBE, 0xF1, 0x38, 0x90, 0xBF, 0x92, 0x06, 0x30, 0xC0, 0xD3, 0xBD, 0x90, 0xC1, 0x74, 0x8B, 0x30, @@ -862,43 +888,45 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x46, 0x4D, 0x54, 0x00, 0x53, 0x4C, 0x53, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Gaborone */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xCE, 0x8E, 0x6E, 0x80, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x04, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x04, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Harare */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x5A, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC7, 0x64, 0x01, 0x00, 0x00, 0x1D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Johannesburg */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x5A, 0x41, 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, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x82, 0x46, 0xCF, 0x68, 0xCC, 0xAE, 0x8C, 0x80, 0xCD, 0x9E, 0x6F, 0x70, 0xCE, 0x8E, 0x6E, 0x80, 0xCF, 0x7E, 0x51, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x15, 0x18, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Kampala */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 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, 0x42, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Khartoum */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x44, 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, 0x00, 0x00, 0x9E, 0x17, 0xE0, 0x01, 0x7A, 0x34, 0x50, 0x02, 0x7D, 0xF9, 0xE0, 0x03, 0x5B, 0x67, 0xD0, @@ -914,174 +942,197 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x1E, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Africa/Kigali */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xBE, 0xF1, 0x0E, 0x50, 0x01, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Kinshasa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x17, 0x77, 0x65, 0x73, 0x74, 0x20, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, +0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, 0x6F, /* Africa/Lagos */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0x51, 0xF3, 0x50, 0x01, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Libreville */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0xA4, 0x01, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Lome */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Africa/Luanda */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xC4, 0x78, 0x4C, 0x01, 0x00, 0x00, 0x0C, 0x34, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x41, 0x4F, 0x54, -0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Lubumbashi */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x17, 0x65, 0x61, 0x73, 0x74, 0x20, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, +0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, 0x6F, /* Africa/Lusaka */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x5A, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC9, 0xFC, 0x01, 0x00, 0x00, 0x1A, 0x84, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Malabo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x86, 0x44, 0xF4, 0x9F, 0xBE, 0x80, 0x01, 0x02, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Maputo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Maseru */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x53, 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, 0x09, 0x82, 0x46, 0xCA, 0xB8, 0xCE, 0x8E, 0x6E, 0x80, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x01, 0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Mbabane */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x82, 0x46, 0xC7, 0x58, 0x01, 0x00, 0x00, 0x1D, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Mogadishu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xB6, 0xA3, 0xCE, 0x50, 0xE7, 0x8C, 0x4A, 0xD8, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, -0x00, 0x04, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Monrovia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 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, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA0, 0x5F, 0x6C, 0x9C, 0x04, 0x61, 0xF6, 0xEE, 0x01, 0x02, 0xFF, 0xFF, 0xF5, 0xE4, 0x00, 0x00, 0xFF, 0xFF, 0xF5, 0x92, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4D, 0x4D, 0x54, 0x00, 0x4C, 0x52, 0x54, 0x00, -0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Nairobi */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 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, 0x42, 0x45, 0x41, 0x54, 0x00, 0x42, 0x45, 0x41, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Ndjamena */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x44, 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, 0x0D, 0x92, 0xE6, 0x80, 0x64, 0x12, 0x66, 0x71, 0x70, 0x13, 0x26, 0xDE, 0x60, 0x01, 0x02, 0x01, 0x00, 0x00, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Niamey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x8C, 0x84, 0xBC, 0x92, 0xC6, 0x90, 0xED, 0x30, 0x08, 0x80, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Africa/Nouakchott */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 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, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9D, 0x74, 0xBC, 0x92, 0xB8, 0x80, 0xEE, 0xE5, 0xC8, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF1, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Ouagadougou */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x8F, 0xEC, 0x01, 0xFF, 0xFF, 0xFE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Porto-Novo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x8C, 0x0C, 0xBC, 0x92, 0xB8, 0x80, 0x01, 0x02, 0x00, 0x00, 0x02, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Sao_Tome */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x97, 0x10, 0x01, 0xFF, 0xFF, 0xF7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Timbuktu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x0C, 0x92, 0xE6, 0x96, 0x00, 0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Tripoli */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x59, 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, 0x1D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, 0xDD, 0xBB, 0xB1, 0x10, 0xDE, 0x23, 0xAD, 0x60, 0xE1, 0x78, 0xD2, 0x10, 0xE1, 0xE7, 0x65, 0xE0, @@ -1095,10 +1146,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, -0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Tunis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x91, 0x60, 0x50, 0x4F, 0xC6, 0x3A, 0x88, 0xE0, 0xC7, 0x58, 0x9E, 0x60, 0xC7, 0xDB, 0x22, 0xE0, 0xCA, 0xE2, 0x54, 0xE0, @@ -1132,10 +1184,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x00, 0x00, 0x02, 0x31, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x50, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Africa/Windhoek */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 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, 0x5C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x82, 0x46, 0xCF, 0x68, 0xCC, 0xAE, 0x8C, 0x80, 0xCD, 0x9E, 0x6F, 0x70, 0x26, 0x06, 0xA7, 0xE0, 0x2D, 0x9D, 0xEA, 0xE0, @@ -1170,10 +1223,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x01, 0x53, 0x57, 0x41, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x57, 0x41, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Adak */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0xCB, 0x89, 0x44, 0xD0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x50, 0x40, 0xFA, 0xD2, 0x55, 0xB0, 0xFE, 0xB8, 0x71, 0x50, @@ -1226,10 +1280,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x19, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x1E, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x48, 0x41, 0x44, 0x54, 0x00, 0x48, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, 0x41, 0x6C, 0x65, 0x75, 0x74, 0x69, 0x61, 0x6E, 0x20, 0x49, +0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* America/Anchorage */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0xCB, 0x89, 0x36, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x42, 0x30, 0xFA, 0xD2, 0x47, 0xA0, 0xFE, 0xB8, 0x63, 0x40, @@ -1282,25 +1338,29 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x21, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x57, 0x54, 0x00, 0x43, 0x41, 0x50, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x41, 0x48, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0B, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, +0x54, 0x69, 0x6D, 0x65, /* America/Anguilla */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x35, 0x20, 0x01, 0xFF, 0xFF, 0xC4, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Antigua */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x37, 0x33, 0xF0, 0xDC, 0x42, 0xDC, 0x50, 0x01, 0x02, 0xFF, 0xFF, 0xC6, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, -0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Araguaina */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x74, 0x30, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -1320,10 +1380,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xD2, 0xD0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x09, 0x54, 0x6F, 0x63, 0x61, 0x6E, 0x74, 0x69, 0x6E, 0x73, /* America/Argentina/Buenos_Aires */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -1340,21 +1401,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, +0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, +0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, +0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, +0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, +0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, +0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, +0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, +0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, +0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, +0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, +0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, +0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, +0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, +0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, +0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -1365,12 +1426,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x15, 0x42, 0x75, 0x65, 0x6E, 0x6F, 0x73, 0x20, 0x41, 0x69, 0x72, +0x65, 0x73, 0x20, 0x28, 0x42, 0x41, 0x2C, 0x20, 0x43, 0x46, 0x29, /* America/Argentina/Catamarca */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1385,39 +1448,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, -0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x1B, 0x43, 0x61, 0x74, 0x61, 0x6D, 0x61, 0x72, 0x63, 0x61, 0x20, +0x28, 0x43, 0x54, 0x29, 0x2C, 0x20, 0x43, 0x68, 0x75, 0x62, 0x75, 0x74, 0x20, 0x28, 0x43, 0x48, +0x29, /* America/Argentina/ComodRivadavia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1432,37 +1479,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, -0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Argentina/Cordoba */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -1479,21 +1508,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, +0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, +0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, +0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, +0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, +0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, +0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, +0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, +0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, +0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, +0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, +0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, +0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, +0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, +0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, +0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -1505,12 +1534,16 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x2F, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, +0x73, 0x20, 0x28, 0x43, 0x42, 0x2C, 0x20, 0x43, 0x43, 0x2C, 0x20, 0x43, 0x4E, 0x2C, 0x20, 0x45, +0x52, 0x2C, 0x20, 0x46, 0x4D, 0x2C, 0x20, 0x4D, 0x4E, 0x2C, 0x20, 0x53, 0x45, 0x2C, 0x20, 0x53, +0x46, 0x29, /* America/Argentina/Jujuy */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1525,39 +1558,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x2A, 0x57, 0xC0, 0x27, 0xE2, 0xDB, 0xB0, 0x28, 0xEE, 0x8A, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, -0x06, 0x05, 0x03, 0x04, 0x03, 0x04, 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, 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, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, -0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, -0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, -0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, -0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0xFF, 0xFF, +0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, +0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, +0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, +0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0A, 0x4A, 0x75, 0x6A, 0x75, 0x79, 0x20, +0x28, 0x4A, 0x59, 0x29, /* America/Argentina/La_Rioja */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1573,38 +1589,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x27, 0xCD, 0xB5, 0xA0, 0x28, 0x26, 0x26, 0x40, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, 0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, -0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, -0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, -0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, -0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, -0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, -0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, -0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, -0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, -0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, -0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, -0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, -0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, -0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, -0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, -0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x04, 0x03, -0x04, 0x03, 0x04, 0x02, 0x04, 0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, -0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, -0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, -0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x05, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, +0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, +0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, +0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x61, 0x20, 0x52, 0x69, +0x6F, 0x6A, 0x61, 0x20, 0x28, 0x4C, 0x52, 0x29, /* America/Argentina/Mendoza */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1619,39 +1618,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x19, 0x34, 0x40, 0x27, 0xCD, 0xC3, 0xB0, 0x28, 0xFA, 0x67, 0xC0, 0x29, 0xB0, 0x48, 0xB0, 0x2A, 0xE0, 0xE1, 0x40, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xB0, 0x13, 0xB0, -0x41, 0x56, 0x3E, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x41, 0x56, 0x3E, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, -0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, +0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, +0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x0C, 0x4D, 0x65, 0x6E, 0x64, 0x6F, 0x7A, 0x61, 0x20, 0x28, 0x4D, 0x5A, 0x29, + /* America/Argentina/Rio_Gallegos */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1666,39 +1649,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, -0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, - -/* America/Argentina/San_Juan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x53, 0x61, 0x6E, 0x74, 0x61, 0x20, 0x43, 0x72, 0x75, 0x7A, +0x20, 0x28, 0x53, 0x43, 0x29, + +/* America/Argentina/Salta */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1711,39 +1677,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFB, 0xC3, 0x35, 0xC0, 0xFC, 0xBC, 0x53, 0x30, 0xFD, 0xAC, 0x52, 0x40, 0xFE, 0x9C, 0x35, 0x30, 0xFF, 0x8C, 0x34, 0x40, 0x07, 0xA3, 0x4A, 0xB0, 0x08, 0x24, 0x6F, 0xA0, 0x23, 0x94, 0xB5, 0xB0, 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, -0x27, 0xCD, 0xB5, 0xA0, 0x28, 0x26, 0x26, 0x40, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, -0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, -0x40, 0xBA, 0x9F, 0xB0, 0x41, 0x03, 0x30, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, -0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, -0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, -0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, -0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, -0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, -0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, -0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, -0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, -0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, -0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, -0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, -0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, -0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, -0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, -0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, +0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, +0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x04, 0x03, -0x04, 0x03, 0x04, 0x02, 0x04, 0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, -0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, -0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, -0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0xFF, 0xFF, +0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, +0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, +0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, +0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, 0x28, 0x53, 0x41, 0x2C, +0x20, 0x4C, 0x50, 0x2C, 0x20, 0x4E, 0x51, 0x2C, 0x20, 0x52, 0x4E, 0x29, -/* America/Argentina/San_Luis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* America/Argentina/San_Juan */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x3D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -1760,7 +1708,7 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xCD, 0xB5, 0xA0, 0x28, 0x26, 0x26, 0x40, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, -0x40, 0xBA, 0x9F, 0xB0, 0x41, 0x03, 0x30, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0x93, 0xFC, 0xA0, +0x40, 0xBA, 0x9F, 0xB0, 0x41, 0x03, 0x30, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -1768,10 +1716,42 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, -0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0D, 0x53, 0x61, 0x6E, 0x20, 0x4A, +0x75, 0x61, 0x6E, 0x20, 0x28, 0x53, 0x4A, 0x29, + +/* America/Argentina/San_Luis */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, +0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, +0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, +0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, +0xC1, 0x9D, 0x9D, 0x40, 0xC2, 0x3B, 0xC3, 0x30, 0xC3, 0x7E, 0xD0, 0xC0, 0xC4, 0x1C, 0xF6, 0xB0, +0xC5, 0x60, 0x04, 0x40, 0xC5, 0xFE, 0x2A, 0x30, 0xC7, 0x41, 0x37, 0xC0, 0xC7, 0xE0, 0xAF, 0x30, +0xC8, 0x81, 0x94, 0x40, 0xCA, 0x4D, 0xA1, 0xB0, 0xCA, 0xEE, 0x86, 0xC0, 0xCE, 0x4D, 0xFF, 0x30, +0xCE, 0xB0, 0xED, 0xC0, 0xD3, 0x29, 0x35, 0xB0, 0xD4, 0x43, 0x64, 0xC0, 0xF4, 0x3D, 0x08, 0x30, +0xF4, 0x9F, 0xF6, 0xC0, 0xF5, 0x05, 0x6C, 0x30, 0xF6, 0x32, 0x10, 0x40, 0xF6, 0xE6, 0x9F, 0xB0, +0xF8, 0x13, 0x43, 0xC0, 0xF8, 0xC7, 0xD3, 0x30, 0xF9, 0xF4, 0x77, 0x40, 0xFA, 0xD3, 0x36, 0xB0, +0xFB, 0xC3, 0x35, 0xC0, 0xFC, 0xBC, 0x53, 0x30, 0xFD, 0xAC, 0x52, 0x40, 0xFE, 0x9C, 0x35, 0x30, +0xFF, 0x8C, 0x34, 0x40, 0x07, 0xA3, 0x4A, 0xB0, 0x08, 0x24, 0x6F, 0xA0, 0x23, 0x94, 0xB5, 0xB0, +0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xFD, 0xA5, 0xA0, 0x27, 0x19, 0x34, 0x40, +0x27, 0xCD, 0xC3, 0xB0, 0x28, 0x47, 0x1B, 0xC0, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, +0x40, 0xBA, 0x9F, 0xB0, 0x41, 0x03, 0x30, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0x93, 0xFC, 0xA0, +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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, +0x06, 0x05, 0x04, 0x06, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, +0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, +0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, +0xD0, 0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, +0x57, 0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x0D, 0x53, 0x61, 0x6E, 0x20, 0x4C, 0x75, 0x69, 0x73, 0x20, 0x28, 0x53, +0x4C, 0x29, /* America/Argentina/Tucuman */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -1788,22 +1768,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, -0x40, 0xCB, 0xD1, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xCB, 0xD1, 0x40, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, +0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, +0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, +0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, +0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, +0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, +0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, +0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, +0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, +0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, +0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, +0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, +0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, +0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, +0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, +0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, @@ -1815,12 +1795,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x54, 0x75, 0x63, +0x75, 0x6D, 0x61, 0x6E, 0x20, 0x28, 0x54, 0x4D, 0x29, /* America/Argentina/Ushuaia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x52, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -1835,45 +1816,29 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xB9, 0x4E, 0x30, -0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x15, 0x54, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x64, 0x65, 0x6C, +0x20, 0x46, 0x75, 0x65, 0x67, 0x6F, 0x20, 0x28, 0x54, 0x46, 0x29, /* America/Aruba */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x1E, 0x2F, 0x38, 0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBE, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4E, 0x54, 0x00, -0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Asuncion */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x59, 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, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0xB8, 0x17, 0xF5, 0x90, 0x05, 0x2B, 0xDA, 0x40, 0x07, 0xFC, 0xF0, 0xB0, 0x0A, 0xCF, 0x74, 0xC0, 0x0B, 0x97, 0xCA, 0xB0, @@ -1918,10 +1883,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0xFF, 0xFF, 0xC9, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0x41, 0x4D, 0x54, 0x00, 0x50, 0x59, 0x54, 0x00, 0x50, 0x59, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Atikokan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xC0, 0x3F, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, @@ -1929,10 +1895,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x44, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, +0x61, 0x6E, 0x2C, 0x20, 0x4F, 0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, 0x20, 0x61, 0x6E, 0x64, 0x20, +0x53, 0x6F, 0x75, 0x74, 0x68, 0x61, 0x6D, 0x70, 0x74, 0x6F, 0x6E, 0x20, 0x49, 0x2C, 0x20, 0x4E, +0x75, 0x6E, 0x61, 0x76, 0x75, 0x74, /* America/Atka */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0xCB, 0x89, 0x44, 0xD0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x50, 0x40, 0xFA, 0xD2, 0x55, 0xB0, 0xFE, 0xB8, 0x71, 0x50, @@ -1985,10 +1956,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x19, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x1E, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x48, 0x41, 0x44, 0x54, 0x00, 0x48, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Bahia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -2011,10 +1983,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x05, 0x42, 0x61, 0x68, 0x69, 0x61, /* America/Barbados */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x42, 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, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xA9, 0x79, 0x24, 0xE4, 0xB8, 0x85, 0x63, 0xE4, 0x0E, 0x00, 0xF2, 0xE0, 0x0E, 0x94, 0x8C, 0xD0, 0x0F, 0x97, 0x00, 0xE0, @@ -2022,10 +1995,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x14, 0x30, 0x3E, 0x50, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xC8, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xC8, 0x1C, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x41, 0x44, -0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Belem */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x1D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x74, 0x74, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -2039,10 +2013,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xD2, 0x8C, 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, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0D, 0x41, 0x6D, +0x61, 0x70, 0x61, 0x2C, 0x20, 0x45, 0x20, 0x50, 0x61, 0x72, 0x61, /* America/Belize */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x5A, 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, 0x37, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x93, 0x5E, 0xD9, 0xB0, 0x9F, 0x9F, 0x3B, 0xE0, 0xA0, 0x45, 0x51, 0xD8, 0xA1, 0x7F, 0x1D, 0xE0, 0xA2, 0x2E, 0x6E, 0x58, @@ -2065,20 +2040,24 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xAD, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xB2, 0xA8, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x09, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Blanc-Sablon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, 0xCB, 0x88, 0xE2, 0x60, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x00, 0x01, 0x02, 0x03, 0x01, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x33, 0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x51, 0x75, 0x65, 0x62, 0x65, 0x63, +0x20, 0x2D, 0x20, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x53, +0x68, 0x6F, 0x72, 0x65, /* America/Boa_Vista */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x7F, 0xE0, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -2093,19 +2072,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xC7, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x07, 0x52, 0x6F, 0x72, 0x61, 0x69, 0x6D, 0x61, /* America/Bogota */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4F, 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, 0x0D, 0x98, 0x58, 0x55, 0x74, 0x2A, 0x03, 0x73, 0x50, 0x2B, 0xBE, 0x5D, 0x40, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x42, 0x4D, 0x54, 0x00, 0x43, 0x4F, 0x53, 0x54, 0x00, 0x43, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Boise */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xA8, 0x46, 0x4C, 0x20, @@ -2159,10 +2139,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x14, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x29, 0x4D, 0x6F, +0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x6F, +0x75, 0x74, 0x68, 0x20, 0x49, 0x64, 0x61, 0x68, 0x6F, 0x20, 0x26, 0x20, 0x65, 0x61, 0x73, 0x74, +0x20, 0x4F, 0x72, 0x65, 0x67, 0x6F, 0x6E, /* America/Buenos_Aires */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -2179,21 +2162,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xF1, 0x30, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, +0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, +0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, +0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, +0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, +0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, +0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, +0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, +0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, +0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, +0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, +0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, +0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, +0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, +0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, +0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -2204,10 +2187,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Cambridge_Bay */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0xA1, 0xF2, 0xCD, 0x80, 0xCB, 0x89, 0x0C, 0x90, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x18, 0x00, 0xF7, 0x2F, 0x5A, 0x70, @@ -2255,10 +2239,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x4D, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x44, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x4D, 0x6F, 0x75, 0x6E, +0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, +0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75, 0x74, /* America/Campo_Grande */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x7A, 0x34, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -2278,21 +2264,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3D, 0xC4, 0x9F, 0x40, 0x3E, 0x4E, 0xFE, 0xB0, 0x3F, 0x92, 0x0C, 0x40, 0x40, 0x2E, 0xE0, 0xB0, 0x41, 0x87, 0x06, 0x40, 0x42, 0x17, 0xFD, 0x30, 0x43, 0x51, 0xD0, 0x40, 0x43, 0xF7, 0xDF, 0x30, 0x45, 0x4D, 0x61, 0xC0, 0x45, 0xE0, 0xFB, 0xB0, 0x47, 0x11, 0x94, 0x40, 0x47, 0xB7, 0xA3, 0x30, -0x48, 0xF1, 0x76, 0x40, 0x49, 0x97, 0x85, 0x30, 0x4A, 0xD1, 0x58, 0x40, 0x4B, 0x80, 0xA1, 0xB0, -0x4C, 0xB1, 0x3A, 0x40, 0x4D, 0x60, 0x83, 0xB0, 0x4E, 0x91, 0x1C, 0x40, 0x4F, 0x40, 0x65, 0xB0, -0x50, 0x7A, 0x38, 0xC0, 0x51, 0x20, 0x47, 0xB0, 0x52, 0x5A, 0x1A, 0xC0, 0x53, 0x00, 0x29, 0xB0, -0x54, 0x39, 0xFC, 0xC0, 0x54, 0xE0, 0x0B, 0xB0, 0x56, 0x19, 0xDE, 0xC0, 0x56, 0xC9, 0x28, 0x30, -0x57, 0xF9, 0xC0, 0xC0, 0x58, 0xA9, 0x0A, 0x30, 0x59, 0xD9, 0xA2, 0xC0, 0x5A, 0x88, 0xEC, 0x30, -0x5B, 0xC2, 0xBF, 0x40, 0x5C, 0x68, 0xCE, 0x30, 0x5D, 0xA2, 0xA1, 0x40, 0x5E, 0x48, 0xB0, 0x30, -0x5F, 0x82, 0x83, 0x40, 0x60, 0x31, 0xCC, 0xB0, 0x61, 0x62, 0x65, 0x40, 0x62, 0x11, 0xAE, 0xB0, -0x63, 0x42, 0x47, 0x40, 0x63, 0xF1, 0x90, 0xB0, 0x65, 0x22, 0x29, 0x40, 0x65, 0xD1, 0x72, 0xB0, -0x67, 0x0B, 0x45, 0xC0, 0x67, 0xB1, 0x54, 0xB0, 0x68, 0xEB, 0x27, 0xC0, 0x69, 0x91, 0x36, 0xB0, -0x6A, 0xCB, 0x09, 0xC0, 0x6B, 0x7A, 0x53, 0x30, 0x6C, 0xAA, 0xEB, 0xC0, 0x6D, 0x5A, 0x35, 0x30, -0x6E, 0x8A, 0xCD, 0xC0, 0x6F, 0x3A, 0x17, 0x30, 0x70, 0x73, 0xEA, 0x40, 0x71, 0x19, 0xF9, 0x30, -0x72, 0x53, 0xCC, 0x40, 0x72, 0xF9, 0xDB, 0x30, 0x74, 0x33, 0xAE, 0x40, 0x74, 0xD9, 0xBD, 0x30, -0x76, 0x13, 0x90, 0x40, 0x76, 0xC2, 0xD9, 0xB0, 0x77, 0xF3, 0x72, 0x40, 0x78, 0xA2, 0xBB, 0xB0, -0x79, 0xD3, 0x54, 0x40, 0x7A, 0x82, 0x9D, 0xB0, 0x7B, 0xBC, 0x70, 0xC0, 0x7C, 0x62, 0x7F, 0xB0, -0x7D, 0x9C, 0x52, 0xC0, 0x7E, 0x42, 0x61, 0xB0, 0x7F, 0x7C, 0x34, 0xC0, 0x02, 0x01, 0x02, 0x01, +0x48, 0xFA, 0xB0, 0xC0, 0x49, 0x97, 0x85, 0x30, 0x4A, 0xDA, 0x92, 0xC0, 0x4B, 0x80, 0xA1, 0xB0, +0x4C, 0xBA, 0x74, 0xC0, 0x4D, 0x60, 0x83, 0xB0, 0x4E, 0x9A, 0x56, 0xC0, 0x4F, 0x49, 0xA0, 0x30, +0x50, 0x83, 0x73, 0x40, 0x51, 0x20, 0x47, 0xB0, 0x52, 0x63, 0x55, 0x40, 0x53, 0x00, 0x29, 0xB0, +0x54, 0x43, 0x37, 0x40, 0x54, 0xE9, 0x46, 0x30, 0x56, 0x23, 0x19, 0x40, 0x56, 0xC9, 0x28, 0x30, +0x58, 0x02, 0xFB, 0x40, 0x58, 0xA9, 0x0A, 0x30, 0x59, 0xE2, 0xDD, 0x40, 0x5A, 0x88, 0xEC, 0x30, +0x5B, 0xCB, 0xF9, 0xC0, 0x5C, 0x68, 0xCE, 0x30, 0x5D, 0xAB, 0xDB, 0xC0, 0x5E, 0x48, 0xB0, 0x30, +0x5F, 0x8B, 0xBD, 0xC0, 0x60, 0x31, 0xCC, 0xB0, 0x61, 0x6B, 0x9F, 0xC0, 0x62, 0x11, 0xAE, 0xB0, +0x63, 0x4B, 0x81, 0xC0, 0x63, 0xFA, 0xCB, 0x30, 0x65, 0x2B, 0x63, 0xC0, 0x65, 0xD1, 0x72, 0xB0, +0x67, 0x14, 0x80, 0x40, 0x67, 0xB1, 0x54, 0xB0, 0x68, 0xF4, 0x62, 0x40, 0x69, 0x9A, 0x71, 0x30, +0x6A, 0xD4, 0x44, 0x40, 0x6B, 0x7A, 0x53, 0x30, 0x6C, 0xB4, 0x26, 0x40, 0x6D, 0x5A, 0x35, 0x30, +0x6E, 0x94, 0x08, 0x40, 0x6F, 0x3A, 0x17, 0x30, 0x70, 0x7D, 0x24, 0xC0, 0x71, 0x19, 0xF9, 0x30, +0x72, 0x5D, 0x06, 0xC0, 0x72, 0xF9, 0xDB, 0x30, 0x74, 0x3C, 0xE8, 0xC0, 0x74, 0xD9, 0xBD, 0x30, +0x76, 0x1C, 0xCA, 0xC0, 0x76, 0xC2, 0xD9, 0xB0, 0x77, 0xFC, 0xAC, 0xC0, 0x78, 0xAB, 0xF6, 0x30, +0x79, 0xDC, 0x8E, 0xC0, 0x7A, 0x82, 0x9D, 0xB0, 0x7B, 0xC5, 0xAB, 0x40, 0x7C, 0x62, 0x7F, 0xB0, +0x7D, 0xA5, 0x8D, 0x40, 0x7E, 0x4B, 0x9C, 0x30, 0x7F, 0x85, 0x6F, 0x40, 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, @@ -2303,10 +2289,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xCC, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x61, 0x74, +0x6F, 0x20, 0x47, 0x72, 0x6F, 0x73, 0x73, 0x6F, 0x20, 0x64, 0x6F, 0x20, 0x53, 0x75, 0x6C, /* America/Cancun */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xDA, 0x60, 0x16, 0x86, 0xD5, 0x60, 0x31, 0x67, 0x67, 0xF0, 0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0, @@ -2339,20 +2326,24 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xAE, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1B, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, +0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x51, 0x75, 0x69, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x20, 0x52, +0x6F, 0x6F, /* America/Caracas */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x45, 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, 0x08, 0x93, 0x1E, 0x2C, 0x3C, 0xF6, 0x98, 0xEC, 0x48, 0x47, 0x5B, 0x92, 0x70, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xC1, 0x44, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x43, 0x4D, 0x54, -0x00, 0x56, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x56, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Catamarca */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x12, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -2367,52 +2358,36 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xBB, 0xF1, 0x30, -0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x40, 0xD5, 0x0B, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, -0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x03, 0x04, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Cayenne */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x2B, 0x90, 0xFB, 0xC3, 0x35, 0xC0, 0x01, 0x02, 0xFF, 0xFF, 0xCE, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x46, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* America/Cayman */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x0F, 0xB5, 0x00, 0x01, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0x4B, 0x4D, 0x54, -0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Chicago */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xA2, 0xCB, 0x74, 0x00, @@ -2491,10 +2466,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, -0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x43, 0x65, 0x6E, 0x74, 0x72, +0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, /* America/Chihuahua */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -2528,10 +2505,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x9C, 0x8C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x19, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, +0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, /* America/Coral_Harbour */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xC0, 0x3F, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, @@ -2539,10 +2518,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* America/Cordoba */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -2559,21 +2539,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, +0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, +0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, +0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, +0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, +0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, +0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, +0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, +0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, +0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, +0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, +0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, +0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, +0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, +0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, +0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -2585,20 +2565,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* America/Costa_Rica */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 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, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xA3, 0xE8, 0x16, 0x54, 0x11, 0x36, 0x49, 0x60, 0x11, 0xB7, 0x6E, 0x50, 0x13, 0x16, 0x2B, 0x60, 0x13, 0x97, 0x50, 0x50, 0x27, 0x97, 0xE0, 0x60, 0x28, 0x6E, 0xB6, 0xD0, 0x29, 0x77, 0xC2, 0x60, 0x29, 0xC2, 0xD9, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xB1, 0x2C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x05, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x09, 0x53, 0x4A, 0x4D, 0x54, 0x00, -0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Cuiaba */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x7E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x7B, 0x94, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -2617,22 +2599,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x39, 0xDF, 0xF1, 0x40, 0x3A, 0x8F, 0x3A, 0xB0, 0x3B, 0xC9, 0x0D, 0xC0, 0x3C, 0x6F, 0x1C, 0xB0, 0x3D, 0xC4, 0x9F, 0x40, 0x3E, 0x4E, 0xFE, 0xB0, 0x41, 0x87, 0x06, 0x40, 0x42, 0x17, 0xFD, 0x30, 0x43, 0x51, 0xD0, 0x40, 0x43, 0xF7, 0xDF, 0x30, 0x45, 0x4D, 0x61, 0xC0, 0x45, 0xE0, 0xFB, 0xB0, -0x47, 0x11, 0x94, 0x40, 0x47, 0xB7, 0xA3, 0x30, 0x48, 0xF1, 0x76, 0x40, 0x49, 0x97, 0x85, 0x30, -0x4A, 0xD1, 0x58, 0x40, 0x4B, 0x80, 0xA1, 0xB0, 0x4C, 0xB1, 0x3A, 0x40, 0x4D, 0x60, 0x83, 0xB0, -0x4E, 0x91, 0x1C, 0x40, 0x4F, 0x40, 0x65, 0xB0, 0x50, 0x7A, 0x38, 0xC0, 0x51, 0x20, 0x47, 0xB0, -0x52, 0x5A, 0x1A, 0xC0, 0x53, 0x00, 0x29, 0xB0, 0x54, 0x39, 0xFC, 0xC0, 0x54, 0xE0, 0x0B, 0xB0, -0x56, 0x19, 0xDE, 0xC0, 0x56, 0xC9, 0x28, 0x30, 0x57, 0xF9, 0xC0, 0xC0, 0x58, 0xA9, 0x0A, 0x30, -0x59, 0xD9, 0xA2, 0xC0, 0x5A, 0x88, 0xEC, 0x30, 0x5B, 0xC2, 0xBF, 0x40, 0x5C, 0x68, 0xCE, 0x30, -0x5D, 0xA2, 0xA1, 0x40, 0x5E, 0x48, 0xB0, 0x30, 0x5F, 0x82, 0x83, 0x40, 0x60, 0x31, 0xCC, 0xB0, -0x61, 0x62, 0x65, 0x40, 0x62, 0x11, 0xAE, 0xB0, 0x63, 0x42, 0x47, 0x40, 0x63, 0xF1, 0x90, 0xB0, -0x65, 0x22, 0x29, 0x40, 0x65, 0xD1, 0x72, 0xB0, 0x67, 0x0B, 0x45, 0xC0, 0x67, 0xB1, 0x54, 0xB0, -0x68, 0xEB, 0x27, 0xC0, 0x69, 0x91, 0x36, 0xB0, 0x6A, 0xCB, 0x09, 0xC0, 0x6B, 0x7A, 0x53, 0x30, -0x6C, 0xAA, 0xEB, 0xC0, 0x6D, 0x5A, 0x35, 0x30, 0x6E, 0x8A, 0xCD, 0xC0, 0x6F, 0x3A, 0x17, 0x30, -0x70, 0x73, 0xEA, 0x40, 0x71, 0x19, 0xF9, 0x30, 0x72, 0x53, 0xCC, 0x40, 0x72, 0xF9, 0xDB, 0x30, -0x74, 0x33, 0xAE, 0x40, 0x74, 0xD9, 0xBD, 0x30, 0x76, 0x13, 0x90, 0x40, 0x76, 0xC2, 0xD9, 0xB0, -0x77, 0xF3, 0x72, 0x40, 0x78, 0xA2, 0xBB, 0xB0, 0x79, 0xD3, 0x54, 0x40, 0x7A, 0x82, 0x9D, 0xB0, -0x7B, 0xBC, 0x70, 0xC0, 0x7C, 0x62, 0x7F, 0xB0, 0x7D, 0x9C, 0x52, 0xC0, 0x7E, 0x42, 0x61, 0xB0, -0x7F, 0x7C, 0x34, 0xC0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x47, 0x11, 0x94, 0x40, 0x47, 0xB7, 0xA3, 0x30, 0x48, 0xFA, 0xB0, 0xC0, 0x49, 0x97, 0x85, 0x30, +0x4A, 0xDA, 0x92, 0xC0, 0x4B, 0x80, 0xA1, 0xB0, 0x4C, 0xBA, 0x74, 0xC0, 0x4D, 0x60, 0x83, 0xB0, +0x4E, 0x9A, 0x56, 0xC0, 0x4F, 0x49, 0xA0, 0x30, 0x50, 0x83, 0x73, 0x40, 0x51, 0x20, 0x47, 0xB0, +0x52, 0x63, 0x55, 0x40, 0x53, 0x00, 0x29, 0xB0, 0x54, 0x43, 0x37, 0x40, 0x54, 0xE9, 0x46, 0x30, +0x56, 0x23, 0x19, 0x40, 0x56, 0xC9, 0x28, 0x30, 0x58, 0x02, 0xFB, 0x40, 0x58, 0xA9, 0x0A, 0x30, +0x59, 0xE2, 0xDD, 0x40, 0x5A, 0x88, 0xEC, 0x30, 0x5B, 0xCB, 0xF9, 0xC0, 0x5C, 0x68, 0xCE, 0x30, +0x5D, 0xAB, 0xDB, 0xC0, 0x5E, 0x48, 0xB0, 0x30, 0x5F, 0x8B, 0xBD, 0xC0, 0x60, 0x31, 0xCC, 0xB0, +0x61, 0x6B, 0x9F, 0xC0, 0x62, 0x11, 0xAE, 0xB0, 0x63, 0x4B, 0x81, 0xC0, 0x63, 0xFA, 0xCB, 0x30, +0x65, 0x2B, 0x63, 0xC0, 0x65, 0xD1, 0x72, 0xB0, 0x67, 0x14, 0x80, 0x40, 0x67, 0xB1, 0x54, 0xB0, +0x68, 0xF4, 0x62, 0x40, 0x69, 0x9A, 0x71, 0x30, 0x6A, 0xD4, 0x44, 0x40, 0x6B, 0x7A, 0x53, 0x30, +0x6C, 0xB4, 0x26, 0x40, 0x6D, 0x5A, 0x35, 0x30, 0x6E, 0x94, 0x08, 0x40, 0x6F, 0x3A, 0x17, 0x30, +0x70, 0x7D, 0x24, 0xC0, 0x71, 0x19, 0xF9, 0x30, 0x72, 0x5D, 0x06, 0xC0, 0x72, 0xF9, 0xDB, 0x30, +0x74, 0x3C, 0xE8, 0xC0, 0x74, 0xD9, 0xBD, 0x30, 0x76, 0x1C, 0xCA, 0xC0, 0x76, 0xC2, 0xD9, 0xB0, +0x77, 0xFC, 0xAC, 0xC0, 0x78, 0xAB, 0xF6, 0x30, 0x79, 0xDC, 0x8E, 0xC0, 0x7A, 0x82, 0x9D, 0xB0, +0x7B, 0xC5, 0xAB, 0x40, 0x7C, 0x62, 0x7F, 0xB0, 0x7D, 0xA5, 0x8D, 0x40, 0x7E, 0x4B, 0x9C, 0x30, +0x7F, 0x85, 0x6F, 0x40, 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, @@ -2642,18 +2624,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xCB, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x0B, 0x4D, 0x61, 0x74, 0x6F, 0x20, 0x47, 0x72, 0x6F, 0x73, 0x73, 0x6F, /* America/Curacao */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x1E, 0x2E, 0x20, 0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4E, 0x54, 0x00, -0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Danmarkshavn */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4C, 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, 0x22, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x9B, 0x80, 0x49, 0x00, 0x13, 0x4D, 0x7C, 0x50, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, @@ -2670,10 +2654,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x47, 0x54, 0x00, 0x57, 0x47, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x21, 0x65, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6F, 0x61, 0x73, 0x74, 0x2C, 0x20, 0x6E, +0x6F, 0x72, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x53, 0x63, 0x6F, 0x72, 0x65, 0x73, 0x62, 0x79, +0x73, 0x75, 0x6E, 0x64, /* America/Dawson */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x9E, 0xB8, 0xCB, 0xB0, 0x9F, 0xBB, 0x23, 0xA0, 0xA0, 0xD0, 0x0C, 0xB0, 0xA1, 0xA2, 0xD2, 0x80, 0xCB, 0x89, 0x28, 0xB0, @@ -2720,10 +2707,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x15, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x19, 0x59, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x59, 0x57, 0x54, 0x00, 0x59, 0x50, 0x54, 0x00, 0x59, 0x44, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x1A, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, +0x2D, 0x20, 0x6E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x59, 0x75, 0x6B, 0x6F, 0x6E, /* America/Dawson_Creek */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xB8, 0xBD, 0xA0, 0x9F, 0xC0, 0x5B, 0x90, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, @@ -2747,10 +2736,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x10, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x49, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, +0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x44, 0x61, 0x77, 0x73, 0x6F, 0x6E, +0x20, 0x43, 0x72, 0x65, 0x65, 0x6B, 0x20, 0x26, 0x20, 0x46, 0x6F, 0x72, 0x74, 0x20, 0x53, 0x61, +0x69, 0x6E, 0x74, 0x20, 0x4A, 0x6F, 0x68, 0x6E, 0x2C, 0x20, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, +0x68, 0x20, 0x43, 0x6F, 0x6C, 0x75, 0x6D, 0x62, 0x69, 0x61, /* America/Denver */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 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, 0x9D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xA2, 0x65, 0xFE, 0x90, @@ -2804,10 +2798,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, -0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0D, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, +0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, /* America/Detroit */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x8B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x85, 0xBD, 0x22, 0x5B, 0x99, 0x3C, 0x94, 0x00, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, @@ -2857,17 +2853,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x28, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, +0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4D, 0x69, 0x63, 0x68, 0x69, 0x67, 0x61, 0x6E, 0x20, 0x2D, +0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Dominica */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x34, 0x4C, 0x01, 0xFF, 0xFF, 0xC6, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Edmonton */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x88, 0xDE, 0xCE, 0xE0, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xA0, 0x98, 0x91, 0x90, 0xA0, 0xD2, 0x85, 0x80, @@ -2921,12 +2921,17 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x42, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, +0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6C, 0x62, 0x65, 0x72, 0x74, 0x61, 0x2C, 0x20, 0x65, +0x61, 0x73, 0x74, 0x20, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x43, 0x6F, 0x6C, 0x75, +0x6D, 0x62, 0x69, 0x61, 0x20, 0x26, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x53, 0x61, 0x73, 0x6B, +0x61, 0x74, 0x63, 0x68, 0x65, 0x77, 0x61, 0x6E, /* America/Eirunepe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 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, 0x1F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x88, 0x80, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 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, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x88, 0x80, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -2934,23 +2939,27 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, -0x2C, 0xC0, 0xD1, 0x50, 0x2D, 0x66, 0xE0, 0x40, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x2C, 0xC0, 0xD1, 0x50, 0x2D, 0x66, 0xE0, 0x40, 0x48, 0x60, 0x7F, 0x50, 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, 0xBE, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xC7, -0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, -0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xBE, 0x80, +0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, +0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x20, 0x41, 0x6D, 0x61, 0x7A, 0x6F, +0x6E, 0x61, 0x73, /* America/El_Salvador */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x56, 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, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA3, 0xD5, 0xA6, 0x20, 0x20, 0x9A, 0xDC, 0xE0, 0x21, 0x5C, 0x9B, 0x50, 0x22, 0x7A, 0xBE, 0xE0, 0x23, 0x3C, 0x7D, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xAC, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Ensenada */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xA5, 0xB6, 0xF6, 0x80, 0xA9, 0x79, 0x4F, 0x70, 0xAF, 0xF2, 0x7C, 0xF0, 0xB6, 0x66, 0x64, 0x70, 0xB7, 0x1B, 0x10, 0x00, @@ -3003,10 +3012,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Fortaleza */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x6B, 0x18, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -3023,10 +3033,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xDB, 0xE8, 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, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1E, +0x4E, 0x45, 0x20, 0x42, 0x72, 0x61, 0x7A, 0x69, 0x6C, 0x20, 0x28, 0x4D, 0x41, 0x2C, 0x20, 0x50, +0x49, 0x2C, 0x20, 0x43, 0x45, 0x2C, 0x20, 0x52, 0x4E, 0x2C, 0x20, 0x50, 0x42, 0x29, /* America/Fort_Wayne */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCA, 0x57, 0x22, 0x80, @@ -3063,10 +3075,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Glace_Bay */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0xF1, 0xA8, 0x34, 0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, 0xCB, 0x88, 0xE2, 0x60, 0xD2, 0x23, 0xF4, 0x70, @@ -3116,10 +3129,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x47, +0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, +0x4E, 0x6F, 0x76, 0x61, 0x20, 0x53, 0x63, 0x6F, 0x74, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x70, 0x6C, +0x61, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x69, 0x64, 0x20, 0x6E, 0x6F, +0x74, 0x20, 0x6F, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x44, 0x53, 0x54, 0x20, 0x31, 0x39, +0x36, 0x36, 0x2D, 0x31, 0x39, 0x37, 0x31, /* America/Godthab */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x80, 0x68, 0x00, 0x13, 0x4D, 0x7C, 0x50, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, @@ -3161,10 +3179,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x47, 0x54, 0x00, 0x57, 0x47, 0x53, 0x54, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, +0x69, 0x6F, 0x6E, 0x73, /* America/Goose_Bay */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1D, 0x9E, 0xB8, 0x7E, 0x8C, 0x9F, 0xC0, 0x1C, 0x7C, 0xBE, 0x9E, 0x4D, 0x6C, 0xC0, 0xB8, 0x31, 0x38, 0xC1, 0x79, 0xEF, 0xA8, @@ -3236,10 +3256,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xC0, 0x00, 0x14, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x18, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x44, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x44, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x29, 0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, +0x65, 0x20, 0x2D, 0x20, 0x4C, 0x61, 0x62, 0x72, 0x61, 0x64, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x6D, +0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Grand_Turk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x0F, 0xB5, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0, @@ -3281,51 +3304,56 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Grenada */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x34, 0x64, 0x01, 0xFF, 0xFF, 0xC6, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Guadeloupe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xD5, 0xE1, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Guatemala */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x54, 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, 0x0C, 0x9F, 0x9D, 0xEA, 0xDC, 0x07, 0x55, 0xAC, 0x60, 0x07, 0xCD, 0x96, 0xD0, 0x19, 0x2C, 0x78, 0x60, 0x19, 0xCF, 0xE4, 0x50, 0x27, 0xEA, 0xEE, 0xE0, 0x28, 0xC8, 0x5C, 0xD0, 0x44, 0x54, 0x52, 0x60, 0x45, 0x1F, 0x4B, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xAB, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, -0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Guayaquil */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xB6, 0xA4, 0x42, 0x18, 0x01, 0xFF, 0xFF, 0xB6, 0x68, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0x51, 0x4D, 0x54, -0x00, 0x45, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x08, 0x6D, 0x61, 0x69, 0x6E, 0x6C, 0x61, 0x6E, 0x64, /* America/Guyana */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x98, 0xD9, 0x79, 0x88, 0xF9, 0x39, 0x3E, 0xBC, 0x0A, 0x7D, 0xB4, 0x3C, 0x27, 0x7F, 0xFB, 0x30, 0x01, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0xC9, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0x44, 0x00, 0x04, 0xFF, 0xFF, 0xCB, 0x44, 0x00, 0x09, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x42, 0x47, 0x54, 0x00, 0x47, 0x59, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* America/Halifax */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0xF1, 0xAB, 0xA0, 0x9A, 0xE4, 0xDE, 0xC0, 0x9B, 0xD6, 0x13, 0x30, 0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, @@ -3402,10 +3430,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xC4, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x2E, 0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, +0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x76, 0x61, 0x20, 0x53, 0x63, 0x6F, +0x74, 0x69, 0x61, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x73, +0x29, 0x2C, 0x20, 0x50, 0x45, 0x49, /* America/Havana */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xAC, 0x62, 0xC2, 0x80, 0xB1, 0xD3, 0x94, 0x50, 0xB2, 0x74, 0x5D, 0x40, 0xC8, 0x5B, 0x66, 0xD0, 0xC8, 0xD3, 0x51, 0x40, @@ -3459,10 +3491,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xB2, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0x48, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* America/Hermosillo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -3473,10 +3506,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x4D, +0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, +0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x53, 0x6F, 0x6E, 0x6F, 0x72, 0x61, /* America/Indiana/Indianapolis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCA, 0x57, 0x22, 0x80, @@ -3513,10 +3548,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x27, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, +0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x49, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, +0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, +0x73, /* America/Indiana/Knox */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3570,10 +3609,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x26, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, +0x49, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x53, 0x74, 0x61, 0x72, 0x6B, 0x65, +0x20, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Indiana/Marengo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3612,10 +3654,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x28, 0x45, 0x61, +0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x49, 0x6E, 0x64, +0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x43, 0x72, 0x61, 0x77, 0x66, 0x6F, 0x72, 0x64, 0x20, +0x43, 0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Indiana/Petersburg */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x73, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3658,10 +3703,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x24, 0x45, +0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x49, 0x6E, +0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x50, 0x69, 0x6B, 0x65, 0x20, 0x43, 0x6F, 0x75, +0x6E, 0x74, 0x79, /* America/Indianapolis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCA, 0x57, 0x22, 0x80, @@ -3698,10 +3746,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Indiana/Tell_City */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3739,10 +3788,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x25, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, +0x20, 0x2D, 0x20, 0x49, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x50, 0x65, 0x72, +0x72, 0x79, 0x20, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Indiana/Vevay */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x50, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3774,10 +3826,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x2B, +0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x49, +0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x53, 0x77, 0x69, 0x74, 0x7A, 0x65, 0x72, +0x6C, 0x61, 0x6E, 0x64, 0x20, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Indiana/Vincennes */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3815,10 +3870,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x40, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, +0x20, 0x2D, 0x20, 0x49, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x44, 0x61, 0x76, +0x69, 0x65, 0x73, 0x73, 0x2C, 0x20, 0x44, 0x75, 0x62, 0x6F, 0x69, 0x73, 0x2C, 0x20, 0x4B, 0x6E, +0x6F, 0x78, 0x20, 0x26, 0x20, 0x4D, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x20, 0x43, 0x6F, 0x75, 0x6E, +0x74, 0x69, 0x65, 0x73, /* America/Indiana/Winamac */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x6A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -3858,10 +3918,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x27, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, +0x20, 0x49, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x50, 0x75, 0x6C, 0x61, 0x73, +0x6B, 0x69, 0x20, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Inuvik */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xE0, 0x06, 0x4E, 0x80, 0xF7, 0x2F, 0x68, 0x80, 0xF8, 0x28, 0x94, 0x00, 0x11, 0x89, 0x90, 0x20, 0x13, 0x69, 0x64, 0x10, @@ -3905,10 +3968,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x09, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0D, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x11, 0x7A, 0x7A, 0x7A, 0x00, 0x50, 0x44, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x2A, 0x4D, 0x6F, 0x75, +0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, +0x74, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x77, 0x65, 0x73, 0x74, 0x20, 0x54, 0x65, 0x72, 0x72, +0x69, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, /* America/Iqaluit */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x21, 0xCC, 0x6C, 0xA1, 0x80, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, 0xF7, 0x2F, 0x3E, 0x50, 0xF8, 0x28, 0x69, 0xD0, @@ -3954,10 +4020,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xA0, 0x00, 0x19, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x1D, 0x7A, 0x7A, 0x7A, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x44, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x2C, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75, +0x74, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, +0x6E, 0x73, /* America/Jamaica */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x4D, 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, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x0F, 0xB5, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x09, 0xAD, 0x94, 0xF0, 0x0A, 0xF0, 0x86, 0x60, @@ -3968,12 +4038,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, -0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Jujuy */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -3988,37 +4059,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x2A, 0x57, 0xC0, 0x27, 0xE2, 0xDB, 0xB0, 0x28, 0xEE, 0x8A, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, -0x06, 0x05, 0x03, 0x04, 0x03, 0x04, 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, 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, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, -0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, -0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, -0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, -0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0xFF, 0xFF, +0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, +0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, +0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, +0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Juneau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xA8, 0x2A, 0x10, @@ -4071,10 +4124,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x1D, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x59, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1E, +0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6C, +0x61, 0x73, 0x6B, 0x61, 0x20, 0x70, 0x61, 0x6E, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, /* America/Kentucky/Louisville */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0xB1, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xA4, 0x73, 0xF7, 0x00, @@ -4136,10 +4191,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x29, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, +0x65, 0x20, 0x2D, 0x20, 0x4B, 0x65, 0x6E, 0x74, 0x75, 0x63, 0x6B, 0x79, 0x20, 0x2D, 0x20, 0x4C, +0x6F, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6C, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x61, /* America/Kentucky/Monticello */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -4192,10 +4250,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x26, 0x45, +0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4B, 0x65, +0x6E, 0x74, 0x75, 0x63, 0x6B, 0x79, 0x20, 0x2D, 0x20, 0x57, 0x61, 0x79, 0x6E, 0x65, 0x20, 0x43, +0x6F, 0x75, 0x6E, 0x74, 0x79, /* America/Knox_IN */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -4249,18 +4310,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* America/La_Paz */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xB8, 0x1E, 0x96, 0xE4, 0xB8, 0xEE, 0xD5, 0xD4, 0x01, 0x02, 0xFF, 0xFF, 0xC0, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xCE, 0x2C, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x43, 0x4D, 0x54, 0x00, 0x42, 0x4F, 0x53, 0x54, -0x00, 0x42, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x42, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Lima */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x45, 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, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x8C, 0x74, 0x40, 0xD4, 0xC3, 0xCF, 0x4A, 0x50, 0xC4, 0x45, 0xE3, 0x40, 0xC5, 0x2F, 0x4A, 0xD0, 0xC6, 0x1F, 0x2D, 0xC0, @@ -4269,10 +4332,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x2D, 0x25, 0x03, 0x50, 0x2D, 0x9B, 0x9C, 0x40, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xB7, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x45, 0x53, -0x54, 0x00, 0x50, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x50, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Los_Angeles */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 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, 0xB9, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xCB, 0x89, 0x1A, 0xA0, @@ -4335,10 +4399,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x0C, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, +0x65, /* America/Louisville */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0xB1, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xA4, 0x73, 0xF7, 0x00, @@ -4400,10 +4466,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Maceio */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x68, 0x7C, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -4420,10 +4487,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0xDE, 0x84, 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, +0x52, 0x53, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, 0x41, 0x6C, 0x61, 0x67, 0x6F, 0x61, +0x73, 0x2C, 0x20, 0x53, 0x65, 0x72, 0x67, 0x69, 0x70, 0x65, /* America/Managua */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x49, 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, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xBD, 0x2D, 0x48, 0xE8, 0x06, 0x43, 0x74, 0x60, 0x09, 0xA4, 0x3E, 0x50, 0x11, 0x51, 0xF8, 0xE0, 0x11, 0xD4, 0x6F, 0x50, @@ -4433,10 +4502,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0xFF, 0xFF, 0xAF, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0x4D, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* America/Manaus */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x1F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x7F, 0x44, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -4450,26 +4520,29 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0xC7, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, -0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x20, 0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, +0x61, 0x73, /* America/Marigot */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xD5, 0xE1, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Martinique */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xA3, 0xC8, 0x44, 0x13, 0x4D, 0x6E, 0x40, 0x14, 0x34, 0x16, 0xB0, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xC6, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x05, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x09, 0x46, 0x46, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Mazatlan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -4504,12 +4577,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x28, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x53, 0x20, 0x42, 0x61, 0x6A, 0x61, 0x2C, 0x20, 0x4E, 0x61, 0x79, +0x61, 0x72, 0x69, 0x74, 0x2C, 0x20, 0x53, 0x69, 0x6E, 0x61, 0x6C, 0x6F, 0x61, /* America/Mendoza */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, +0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x18, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, 0xBA, 0x17, 0x7D, 0xC0, 0xBA, 0xB5, 0xA3, 0xB0, 0xBB, 0xF8, 0xB1, 0x40, 0xBC, 0x96, 0xD7, 0x30, 0xBD, 0xD9, 0xE4, 0xC0, 0xBE, 0x78, 0x0A, 0xB0, 0xBF, 0xBB, 0x18, 0x40, 0xC0, 0x5A, 0x8F, 0xB0, @@ -4524,37 +4600,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x19, 0x34, 0x40, 0x27, 0xCD, 0xC3, 0xB0, 0x28, 0xFA, 0x67, 0xC0, 0x29, 0xB0, 0x48, 0xB0, 0x2A, 0xE0, 0xE1, 0x40, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x40, 0xB0, 0x13, 0xB0, -0x41, 0x56, 0x3E, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, -0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, 0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, -0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, 0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, -0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, 0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, -0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, 0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, -0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, 0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, -0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, 0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, -0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, 0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, -0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, 0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, -0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, 0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, -0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, 0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, -0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, 0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, -0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, 0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, -0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, 0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, -0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, 0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, -0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x41, 0x56, 0x3E, 0xC0, 0x47, 0x77, 0x09, 0xB0, 0x47, 0xDC, 0x7F, 0x20, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x03, 0x04, 0x02, 0x04, -0x05, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, -0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, -0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, -0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, -0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, +0x03, 0x04, 0x02, 0x04, 0x05, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0xC3, 0xD0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, +0x01, 0x12, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, +0x41, 0x52, 0x54, 0x00, 0x57, 0x41, 0x52, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* America/Menominee */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -4604,10 +4663,16 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, -0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x47, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, +0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4D, 0x69, 0x63, 0x68, 0x69, 0x67, 0x61, +0x6E, 0x20, 0x2D, 0x20, 0x44, 0x69, 0x63, 0x6B, 0x69, 0x6E, 0x73, 0x6F, 0x6E, 0x2C, 0x20, 0x47, +0x6F, 0x67, 0x65, 0x62, 0x69, 0x63, 0x2C, 0x20, 0x49, 0x72, 0x6F, 0x6E, 0x20, 0x26, 0x20, 0x4D, +0x65, 0x6E, 0x6F, 0x6D, 0x69, 0x6E, 0x65, 0x65, 0x20, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x69, 0x65, +0x73, /* America/Merida */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 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, 0x57, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xA5, 0xB6, 0xDA, 0x60, 0x16, 0x86, 0xD5, 0x60, 0x18, 0x4C, 0x4B, 0x50, 0x31, 0x67, 0x76, 0x00, 0x32, 0x73, 0x08, 0x70, @@ -4639,10 +4704,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0xFF, 0xFF, 0xAB, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, -0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x20, 0x43, 0x65, 0x6E, 0x74, 0x72, +0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x43, 0x61, 0x6D, 0x70, 0x65, 0x63, +0x68, 0x65, 0x2C, 0x20, 0x59, 0x75, 0x63, 0x61, 0x74, 0x61, 0x6E, /* America/Mexico_City */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -4679,10 +4747,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1D, 0x43, 0x65, +0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, +0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Miquelon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4D, 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, 0x68, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x91, 0xB6, 0x38, 0xA8, 0x13, 0x6E, 0x63, 0xC0, 0x20, 0x75, 0xE4, 0xD0, 0x21, 0x81, 0x77, 0x40, 0x22, 0x55, 0xC6, 0xD0, @@ -4720,10 +4790,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0xCB, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x50, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* America/Moncton */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0xF1, 0xB6, 0x50, 0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, 0xBB, 0x3C, 0x38, 0xD0, 0xBB, 0xB4, 0x23, 0x40, @@ -4793,10 +4864,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x45, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1D, 0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, +0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4E, 0x65, 0x77, 0x20, 0x42, 0x72, +0x75, 0x6E, 0x73, 0x77, 0x69, 0x63, 0x6B, /* America/Monterrey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 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, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA5, 0xB6, 0xDA, 0x60, 0x22, 0x55, 0xF1, 0x00, 0x23, 0x6A, 0xBD, 0xF0, 0x31, 0x67, 0x76, 0x00, 0x32, 0x73, 0x08, 0x70, @@ -4828,10 +4902,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xA1, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x38, 0x43, +0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x43, 0x6F, +0x61, 0x68, 0x75, 0x69, 0x6C, 0x61, 0x2C, 0x20, 0x44, 0x75, 0x72, 0x61, 0x6E, 0x67, 0x6F, 0x2C, +0x20, 0x4E, 0x75, 0x65, 0x76, 0x6F, 0x20, 0x4C, 0x65, 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x61, 0x6D, +0x61, 0x75, 0x6C, 0x69, 0x70, 0x61, 0x73, /* America/Montevideo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0xA2, 0x92, 0x87, 0xAC, 0xA9, 0x01, 0x25, 0xB8, 0xA9, 0xF1, 0x0F, 0xB0, 0xAA, 0xE2, 0x59, 0x38, 0xAB, 0xD2, 0x43, 0x30, @@ -4879,10 +4957,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xC8, 0x00, 0x0A, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x0A, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x0E, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x04, 0x4D, 0x4D, 0x54, 0x00, 0x55, 0x59, 0x48, 0x53, 0x54, 0x00, 0x55, 0x59, 0x54, 0x00, 0x55, 0x59, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* America/Montreal */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9C, 0xBD, 0x01, 0xF0, 0x9C, 0xE4, 0x64, 0xC0, 0x9E, 0xB8, 0x93, 0x70, 0x9F, 0xC0, 0x31, 0x60, 0xA0, 0x87, 0x58, 0xF8, @@ -4960,17 +5039,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x26, +0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x51, +0x75, 0x65, 0x62, 0x65, 0x63, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, +0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Montserrat */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x35, 0x10, 0x01, 0xFF, 0xFF, 0xC5, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Nassau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x53, 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, 0x95, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x37, 0x42, 0x84, 0xF5, 0x4F, 0x78, 0x70, 0xF6, 0x3F, 0x5B, 0x60, 0xF7, 0x2F, 0x5A, 0x70, 0xF8, 0x28, 0x77, 0xE0, @@ -5021,10 +5104,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xB7, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/New_York */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 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, 0xEB, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xA2, 0x65, 0xE2, 0x70, @@ -5103,10 +5187,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, +0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x45, +0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, /* America/Nipigon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0x93, 0x70, 0x9F, 0xC0, 0x31, 0x60, 0xC8, 0xF8, 0x49, 0x50, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, @@ -5153,10 +5238,16 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x4B, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4F, 0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, 0x20, 0x26, 0x20, 0x51, +0x75, 0x65, 0x62, 0x65, 0x63, 0x20, 0x2D, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x73, 0x20, 0x74, +0x68, 0x61, 0x74, 0x20, 0x64, 0x69, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6F, 0x62, 0x73, 0x65, +0x72, 0x76, 0x65, 0x20, 0x44, 0x53, 0x54, 0x20, 0x31, 0x39, 0x36, 0x37, 0x2D, 0x31, 0x39, 0x37, +0x33, /* America/Nome */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xCB, 0x89, 0x44, 0xD0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x50, 0x40, 0xFA, 0xD2, 0x55, 0xB0, 0xFE, 0xB8, 0x71, 0x50, @@ -5209,10 +5300,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x18, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x1D, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x19, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, +0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, /* America/Noronha */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x65, 0x64, 0xB8, 0x0F, 0x3B, 0xD0, 0xB8, 0xFD, 0x32, 0x90, 0xB9, 0xF1, 0x26, 0x20, 0xBA, 0xDE, 0x66, 0x10, @@ -5229,10 +5322,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xE1, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x4E, 0x53, 0x54, 0x00, 0x46, 0x4E, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, +0x41, 0x74, 0x6C, 0x61, 0x6E, 0x74, 0x69, 0x63, 0x20, 0x69, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, + /* America/North_Dakota/Center */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, @@ -5285,10 +5380,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x2B, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, +0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x44, 0x61, +0x6B, 0x6F, 0x74, 0x61, 0x20, 0x2D, 0x20, 0x4F, 0x6C, 0x69, 0x76, 0x65, 0x72, 0x20, 0x43, 0x6F, +0x75, 0x6E, 0x74, 0x79, /* America/North_Dakota/New_Salem */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, @@ -5341,17 +5440,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x40, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, +0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x44, 0x61, +0x6B, 0x6F, 0x74, 0x61, 0x20, 0x2D, 0x20, 0x4D, 0x6F, 0x72, 0x74, 0x6F, 0x6E, 0x20, 0x43, 0x6F, +0x75, 0x6E, 0x74, 0x79, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x4D, 0x61, 0x6E, +0x64, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x65, 0x61, 0x29, /* America/Panama */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x8B, 0xF4, 0x61, 0xE8, 0x01, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0x43, 0x4D, 0x54, -0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Pangnirtung */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x29, 0xA3, 0xD5, 0x52, 0x80, 0xCB, 0x88, 0xE2, 0x60, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0xF7, 0x2F, 0x30, 0x40, @@ -5399,10 +5504,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x44, 0x44, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x23, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, +0x2D, 0x20, 0x50, 0x61, 0x6E, 0x67, 0x6E, 0x69, 0x72, 0x74, 0x75, 0x6E, 0x67, 0x2C, 0x20, 0x4E, +0x75, 0x6E, 0x61, 0x76, 0x75, 0x74, /* America/Paramaribo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x52, 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, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x91, 0x05, 0x8E, 0xB8, 0xBE, 0x2A, 0x4B, 0xC4, 0xD2, 0x62, 0x2C, 0xB4, 0x0B, 0x11, 0x58, 0xB8, 0x1B, 0xBE, 0x31, 0xB8, @@ -5410,10 +5518,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xCC, 0x4C, 0x00, 0x04, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x08, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x0D, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4D, 0x54, 0x00, 0x4E, 0x45, 0x47, 0x54, 0x00, 0x53, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* America/Phoenix */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 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, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, @@ -5421,10 +5530,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFB, 0xE8, 0x58, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x6F, +0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, +0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x72, 0x69, 0x7A, 0x6F, 0x6E, 0x61, /* America/Port-au-Prince */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x9C, 0x6E, 0x71, 0xFC, 0x19, 0x1B, 0x46, 0xD0, 0x1A, 0x01, 0xEF, 0x40, 0x1A, 0xF1, 0xEE, 0x50, 0x1B, 0xE1, 0xD1, 0x40, @@ -5441,12 +5552,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x05, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x05, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x50, 0x50, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Porto_Acre */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 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, 0x1D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x86, 0x90, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -5454,21 +5565,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, +0x48, 0x60, 0x7F, 0x50, 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, 0xC0, -0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x4C, -0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x02, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, +0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Port_of_Spain */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Porto_Velho */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x1D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x82, 0xE8, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -5482,18 +5595,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xC4, 0x18, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x52, 0x6F, +0x6E, 0x64, 0x6F, 0x6E, 0x69, 0x61, /* America/Puerto_Rico */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 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, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x02, 0x01, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0x41, 0x53, 0x54, -0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, +0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Rainy_River */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xC0, 0x3F, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCB, 0x88, 0xFE, 0x80, 0xD2, 0x23, 0xF4, 0x70, @@ -5540,10 +5655,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x32, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x52, 0x61, 0x69, 0x6E, 0x79, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, +0x20, 0x26, 0x20, 0x46, 0x6F, 0x72, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x2C, +0x20, 0x4F, 0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, /* America/Rankin_Inlet */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xE7, 0x8C, 0x6E, 0x00, 0xF7, 0x2F, 0x4C, 0x60, 0xF8, 0x28, 0x77, 0xE0, 0x13, 0x69, 0x56, 0x00, 0x14, 0x59, 0x38, 0xF0, @@ -5586,10 +5705,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 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, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, +0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x4E, +0x75, 0x6E, 0x61, 0x76, 0x75, 0x74, /* America/Recife */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x67, 0xB8, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -5606,10 +5728,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xDF, 0x48, 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, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0A, +0x50, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x62, 0x75, 0x63, 0x6F, /* America/Regina */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x86, 0xFD, 0x93, 0x1C, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xB5, 0x65, 0x4F, 0xF0, 0xB6, 0x30, 0x48, 0xE0, @@ -5632,12 +5755,16 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x35, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, +0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, +0x20, 0x53, 0x61, 0x73, 0x6B, 0x61, 0x74, 0x63, 0x68, 0x65, 0x77, 0x61, 0x6E, 0x20, 0x2D, 0x20, +0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Resolute */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xD5, 0xFB, 0x81, 0x80, +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, 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, @@ -5652,19 +5779,42 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, -0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +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, +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, 0x04, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 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, 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, +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, +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, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 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, /* America/Rio_Branco */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 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, 0x1D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x86, 0x90, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 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, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -5672,14 +5822,16 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, +0x48, 0x60, 0x7F, 0x50, 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, 0xC0, -0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x4C, -0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x02, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, +0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x04, 0x41, +0x63, 0x72, 0x65, /* America/Rosario */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x92, 0x8F, 0x30, 0xB6, 0x7B, 0x52, 0x40, 0xB7, 0x1A, 0xC9, 0xB0, 0xB8, 0x1E, 0x8F, 0x40, 0xB8, 0xD4, 0x70, 0x30, @@ -5696,21 +5848,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x24, 0x10, 0x94, 0xA0, 0x25, 0x37, 0xF2, 0xB0, 0x25, 0xF0, 0x76, 0xA0, 0x27, 0x21, 0x0F, 0x30, 0x27, 0xD0, 0x58, 0xA0, 0x29, 0x00, 0xFF, 0x40, 0x29, 0xB0, 0x3A, 0xA0, 0x2A, 0xE0, 0xD3, 0x30, 0x2B, 0x99, 0x57, 0x20, 0x37, 0xF6, 0xC6, 0xB0, 0x38, 0xBF, 0x2A, 0xB0, 0x47, 0x77, 0x09, 0xB0, -0x47, 0xDC, 0x7F, 0x20, 0x48, 0xE8, 0x2D, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xC8, 0x0F, 0xB0, -0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xA7, 0xF1, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x87, 0xD3, 0xB0, -0x4F, 0x65, 0x41, 0xA0, 0x50, 0x70, 0xF0, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x50, 0xD2, 0x30, -0x53, 0x25, 0x05, 0xA0, 0x54, 0x30, 0xB4, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x10, 0x96, 0x30, -0x56, 0xEE, 0x04, 0x20, 0x57, 0xF0, 0x78, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xD0, 0x5A, 0x30, -0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xB9, 0x76, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0x99, 0x58, 0xB0, -0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x79, 0x3A, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x59, 0x1C, 0xB0, -0x62, 0x36, 0x8A, 0xA0, 0x63, 0x38, 0xFE, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x18, 0xE0, 0xB0, -0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x01, 0xFD, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xE1, 0xDF, 0x30, -0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xC1, 0xC1, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xA1, 0xA3, 0x30, -0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x81, 0x85, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x6A, 0xA1, 0xB0, -0x71, 0x3E, 0xD5, 0x20, 0x72, 0x4A, 0x83, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x2A, 0x65, 0xB0, -0x75, 0x07, 0xD3, 0xA0, 0x76, 0x0A, 0x47, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xEA, 0x29, 0xB0, -0x78, 0xC7, 0x97, 0xA0, 0x79, 0xCA, 0x0B, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xB3, 0x28, 0x30, -0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0x93, 0x0A, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x72, 0xEC, 0x30, +0x47, 0xDC, 0x7F, 0x20, 0x48, 0xFA, 0xA2, 0xB0, 0x49, 0xBC, 0x61, 0x20, 0x4A, 0xDA, 0x84, 0xB0, +0x4B, 0xA5, 0x7D, 0xA0, 0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x85, 0x5F, 0xA0, 0x4E, 0x9A, 0x48, 0xB0, +0x4F, 0x65, 0x41, 0xA0, 0x50, 0x83, 0x65, 0x30, 0x51, 0x45, 0x23, 0xA0, 0x52, 0x63, 0x47, 0x30, +0x53, 0x25, 0x05, 0xA0, 0x54, 0x43, 0x29, 0x30, 0x55, 0x04, 0xE7, 0xA0, 0x56, 0x23, 0x0B, 0x30, +0x56, 0xEE, 0x04, 0x20, 0x58, 0x02, 0xED, 0x30, 0x58, 0xCD, 0xE6, 0x20, 0x59, 0xE2, 0xCF, 0x30, +0x5A, 0xAD, 0xC8, 0x20, 0x5B, 0xCB, 0xEB, 0xB0, 0x5C, 0x8D, 0xAA, 0x20, 0x5D, 0xAB, 0xCD, 0xB0, +0x5E, 0x6D, 0x8C, 0x20, 0x5F, 0x8B, 0xAF, 0xB0, 0x60, 0x56, 0xA8, 0xA0, 0x61, 0x6B, 0x91, 0xB0, +0x62, 0x36, 0x8A, 0xA0, 0x63, 0x4B, 0x73, 0xB0, 0x64, 0x16, 0x6C, 0xA0, 0x65, 0x2B, 0x55, 0xB0, +0x65, 0xF6, 0x4E, 0xA0, 0x67, 0x14, 0x72, 0x30, 0x67, 0xD6, 0x30, 0xA0, 0x68, 0xF4, 0x54, 0x30, +0x69, 0xB6, 0x12, 0xA0, 0x6A, 0xD4, 0x36, 0x30, 0x6B, 0x9F, 0x2F, 0x20, 0x6C, 0xB4, 0x18, 0x30, +0x6D, 0x7F, 0x11, 0x20, 0x6E, 0x93, 0xFA, 0x30, 0x6F, 0x5E, 0xF3, 0x20, 0x70, 0x7D, 0x16, 0xB0, +0x71, 0x3E, 0xD5, 0x20, 0x72, 0x5C, 0xF8, 0xB0, 0x73, 0x1E, 0xB7, 0x20, 0x74, 0x3C, 0xDA, 0xB0, +0x75, 0x07, 0xD3, 0xA0, 0x76, 0x1C, 0xBC, 0xB0, 0x76, 0xE7, 0xB5, 0xA0, 0x77, 0xFC, 0x9E, 0xB0, +0x78, 0xC7, 0x97, 0xA0, 0x79, 0xDC, 0x80, 0xB0, 0x7A, 0xA7, 0x79, 0xA0, 0x7B, 0xC5, 0x9D, 0x30, +0x7C, 0x87, 0x5B, 0xA0, 0x7D, 0xA5, 0x7F, 0x30, 0x7E, 0x67, 0x3D, 0xA0, 0x7F, 0x85, 0x61, 0x30, 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, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, @@ -5722,10 +5874,30 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x57, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, + +/* America/Santarem */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 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, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x7A, 0x48, +0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, +0xDA, 0x38, 0xBC, 0x40, 0xDA, 0xEC, 0x08, 0x40, 0xDC, 0x19, 0xEF, 0xC0, 0xDC, 0xB9, 0x67, 0x30, +0xDD, 0xFB, 0x23, 0x40, 0xDE, 0x9B, 0xEC, 0x30, 0xDF, 0xDD, 0xA8, 0x40, 0xE0, 0x54, 0x41, 0x30, +0xF4, 0x98, 0x0D, 0xC0, 0xF5, 0x05, 0x6C, 0x30, 0xF6, 0xC0, 0x72, 0x40, 0xF7, 0x0E, 0x2C, 0xB0, +0xF8, 0x51, 0x3A, 0x40, 0xF8, 0xC7, 0xD3, 0x30, 0xFA, 0x0A, 0xE0, 0xC0, 0xFA, 0xA9, 0x06, 0xB0, +0xFB, 0xEC, 0x14, 0x40, 0xFC, 0x8B, 0x8B, 0xB0, 0x1D, 0xC9, 0x9C, 0x40, 0x1E, 0x78, 0xE5, 0xB0, +0x1F, 0xA0, 0x43, 0xC0, 0x20, 0x33, 0xDD, 0xB0, 0x21, 0x81, 0x77, 0x40, 0x22, 0x0B, 0xD6, 0xB0, +0x48, 0x60, 0x71, 0x40, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x03, 0xFF, 0xFF, 0xCC, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x09, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, +0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x42, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x06, 0x57, +0x20, 0x50, 0x61, 0x72, 0x61, /* America/Santiago */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x8F, 0x24, 0x69, 0xC6, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x71, 0x05, 0x46, 0xA1, 0x00, 0x71, 0xC0, 0xB0, 0x5E, 0x77, 0xC6, @@ -5781,10 +5953,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x53, 0x4D, 0x54, 0x00, 0x43, 0x4C, 0x54, 0x00, 0x43, 0x4C, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, +0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Santo_Domingo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xBA, 0xDF, 0x42, 0x60, 0xFA, 0x08, 0x4B, 0xD0, 0xFA, 0xA7, 0xC3, 0x40, 0xFF, 0xA7, 0xF1, 0xD0, 0x00, 0x43, 0x7B, 0xC8, @@ -5795,10 +5969,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x05, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC0, 0xB8, 0x01, 0x0D, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x12, 0x53, 0x44, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x48, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Sao_Paulo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x72, 0xB4, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -5818,21 +5993,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0, 0x3F, 0x91, 0xFE, 0x30, 0x40, 0x2E, 0xD2, 0xA0, 0x41, 0x86, 0xF8, 0x30, 0x42, 0x17, 0xEF, 0x20, 0x43, 0x51, 0xC2, 0x30, 0x43, 0xF7, 0xD1, 0x20, 0x45, 0x4D, 0x53, 0xB0, 0x45, 0xE0, 0xED, 0xA0, 0x47, 0x11, 0x86, 0x30, 0x47, 0xB7, 0x95, 0x20, -0x48, 0xF1, 0x68, 0x30, 0x49, 0x97, 0x77, 0x20, 0x4A, 0xD1, 0x4A, 0x30, 0x4B, 0x80, 0x93, 0xA0, -0x4C, 0xB1, 0x2C, 0x30, 0x4D, 0x60, 0x75, 0xA0, 0x4E, 0x91, 0x0E, 0x30, 0x4F, 0x40, 0x57, 0xA0, -0x50, 0x7A, 0x2A, 0xB0, 0x51, 0x20, 0x39, 0xA0, 0x52, 0x5A, 0x0C, 0xB0, 0x53, 0x00, 0x1B, 0xA0, -0x54, 0x39, 0xEE, 0xB0, 0x54, 0xDF, 0xFD, 0xA0, 0x56, 0x19, 0xD0, 0xB0, 0x56, 0xC9, 0x1A, 0x20, -0x57, 0xF9, 0xB2, 0xB0, 0x58, 0xA8, 0xFC, 0x20, 0x59, 0xD9, 0x94, 0xB0, 0x5A, 0x88, 0xDE, 0x20, -0x5B, 0xC2, 0xB1, 0x30, 0x5C, 0x68, 0xC0, 0x20, 0x5D, 0xA2, 0x93, 0x30, 0x5E, 0x48, 0xA2, 0x20, -0x5F, 0x82, 0x75, 0x30, 0x60, 0x31, 0xBE, 0xA0, 0x61, 0x62, 0x57, 0x30, 0x62, 0x11, 0xA0, 0xA0, -0x63, 0x42, 0x39, 0x30, 0x63, 0xF1, 0x82, 0xA0, 0x65, 0x22, 0x1B, 0x30, 0x65, 0xD1, 0x64, 0xA0, -0x67, 0x0B, 0x37, 0xB0, 0x67, 0xB1, 0x46, 0xA0, 0x68, 0xEB, 0x19, 0xB0, 0x69, 0x91, 0x28, 0xA0, -0x6A, 0xCA, 0xFB, 0xB0, 0x6B, 0x7A, 0x45, 0x20, 0x6C, 0xAA, 0xDD, 0xB0, 0x6D, 0x5A, 0x27, 0x20, -0x6E, 0x8A, 0xBF, 0xB0, 0x6F, 0x3A, 0x09, 0x20, 0x70, 0x73, 0xDC, 0x30, 0x71, 0x19, 0xEB, 0x20, -0x72, 0x53, 0xBE, 0x30, 0x72, 0xF9, 0xCD, 0x20, 0x74, 0x33, 0xA0, 0x30, 0x74, 0xD9, 0xAF, 0x20, -0x76, 0x13, 0x82, 0x30, 0x76, 0xC2, 0xCB, 0xA0, 0x77, 0xF3, 0x64, 0x30, 0x78, 0xA2, 0xAD, 0xA0, -0x79, 0xD3, 0x46, 0x30, 0x7A, 0x82, 0x8F, 0xA0, 0x7B, 0xBC, 0x62, 0xB0, 0x7C, 0x62, 0x71, 0xA0, -0x7D, 0x9C, 0x44, 0xB0, 0x7E, 0x42, 0x53, 0xA0, 0x7F, 0x7C, 0x26, 0xB0, 0x02, 0x01, 0x02, 0x01, +0x48, 0xFA, 0xA2, 0xB0, 0x49, 0x97, 0x77, 0x20, 0x4A, 0xDA, 0x84, 0xB0, 0x4B, 0x80, 0x93, 0xA0, +0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x60, 0x75, 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, @@ -5843,10 +6018,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xD4, 0x4C, 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, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x32, 0x53, 0x20, 0x26, +0x20, 0x53, 0x45, 0x20, 0x42, 0x72, 0x61, 0x7A, 0x69, 0x6C, 0x20, 0x28, 0x47, 0x4F, 0x2C, 0x20, +0x44, 0x46, 0x2C, 0x20, 0x4D, 0x47, 0x2C, 0x20, 0x45, 0x53, 0x2C, 0x20, 0x52, 0x4A, 0x2C, 0x20, +0x53, 0x50, 0x2C, 0x20, 0x50, 0x52, 0x2C, 0x20, 0x53, 0x43, 0x2C, 0x20, 0x52, 0x53, 0x29, /* America/Scoresbysund */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x9B, 0x80, 0x4C, 0x18, 0x13, 0x4D, 0x6E, 0x40, 0x14, 0x34, 0x24, 0xC0, 0x15, 0x23, 0xF9, 0xA0, 0x16, 0x13, 0xDC, 0x90, @@ -5890,10 +6068,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF0, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x47, 0x54, 0x00, 0x43, 0x47, 0x53, 0x54, 0x00, 0x45, 0x47, 0x54, 0x00, 0x45, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, +0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x53, +0x63, 0x6F, 0x72, 0x65, 0x73, 0x62, 0x79, 0x73, 0x75, 0x6E, 0x64, 0x20, 0x2F, 0x20, 0x49, 0x74, +0x74, 0x6F, 0x71, 0x71, 0x6F, 0x72, 0x74, 0x6F, 0x6F, 0x72, 0x6D, 0x69, 0x69, 0x74, /* America/Shiprock */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 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, 0x9D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xA2, 0x65, 0xFE, 0x90, @@ -5947,17 +6127,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, -0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, +0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4E, 0x61, 0x76, 0x61, 0x6A, 0x6F, /* America/St_Barthelemy */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xD5, 0xE1, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/St_Johns */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x9C, 0xCF, 0x62, 0x0C, 0x9D, 0xA4, 0xE6, 0xFC, 0x9E, 0xB8, 0x7E, 0x8C, 0x9F, 0xC0, 0x1C, 0x7C, 0xA0, 0xB6, 0x88, 0xDC, @@ -6038,38 +6221,46 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xDC, 0xD8, 0x01, 0x00, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x04, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x08, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x0C, 0xFF, 0xFF, 0xEA, 0xE8, 0x01, 0x10, 0x4E, 0x44, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x44, 0x44, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x28, 0x4E, 0x65, 0x77, 0x66, 0x6F, +0x75, 0x6E, 0x64, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2C, 0x20, 0x69, 0x6E, +0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x45, 0x20, 0x4C, 0x61, 0x62, 0x72, 0x61, +0x64, 0x6F, 0x72, /* America/St_Kitts */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x34, 0xCC, 0x01, 0xFF, 0xFF, 0xC5, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/St_Lucia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0xC7, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x43, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/St_Thomas */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/St_Vincent */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0xC7, 0xE8, 0x01, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4B, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Swift_Current */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x17, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x86, 0xFD, 0x96, 0x18, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xCB, 0x89, 0x0C, 0x90, 0xD2, 0x23, 0xF4, 0x70, @@ -6083,20 +6274,24 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x2E, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, +0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x53, 0x61, 0x73, 0x6B, 0x61, +0x74, 0x63, 0x68, 0x65, 0x77, 0x61, 0x6E, 0x20, 0x2D, 0x20, 0x6D, 0x69, 0x64, 0x77, 0x65, 0x73, +0x74, /* America/Tegucigalpa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x4E, 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, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA4, 0x4C, 0x4B, 0x44, 0x20, 0x9A, 0xDC, 0xE0, 0x21, 0x5C, 0x9B, 0x50, 0x22, 0x7A, 0xBE, 0xE0, 0x23, 0x3C, 0x7D, 0x50, 0x44, 0x5D, 0x8C, 0xE0, 0x44, 0xD6, 0xC8, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xAE, 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* America/Thule */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4C, 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, 0x5F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x9B, 0x80, 0x77, 0xFC, 0x27, 0xF5, 0x7A, 0xE0, 0x28, 0xE5, 0x5D, 0xD0, 0x29, 0xD5, 0x5C, 0xE0, 0x2A, 0xC5, 0x3F, 0xD0, @@ -6130,10 +6325,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0xBF, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, 0x54, 0x68, 0x75, 0x6C, 0x65, 0x20, 0x2F, 0x20, 0x50, +0x69, 0x74, 0x75, 0x66, 0x66, 0x69, 0x6B, /* America/Thunder_Bay */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8F, 0x24, 0x7B, 0xE0, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, 0x00, 0x97, 0xFE, 0xF0, @@ -6182,10 +6379,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xAB, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x23, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x54, 0x68, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x42, 0x61, 0x79, +0x2C, 0x20, 0x4F, 0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, /* America/Tijuana */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 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, 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xA5, 0xB6, 0xF6, 0x80, 0xA9, 0x79, 0x4F, 0x70, 0xAF, 0xF2, 0x7C, 0xF0, 0xB6, 0x66, 0x64, 0x70, 0xB7, 0x1B, 0x10, 0x00, @@ -6238,10 +6438,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x20, 0x54, 0x69, 0x6D, 0x65, /* America/Toronto */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0x93, 0x70, 0x9F, 0xC0, 0x31, 0x60, 0xA0, 0x87, 0x2E, 0xC8, 0xA1, 0x9A, 0xB1, 0x40, 0xA2, 0x94, 0x06, 0xF0, @@ -6319,17 +6521,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x27, +0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4F, +0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, +0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* America/Tortola */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x14, 0x01, 0xFF, 0xFF, 0xC3, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Vancouver */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 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, 0xBD, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0xBD, 0xA0, 0x9F, 0xC0, 0x5B, 0x90, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, @@ -6393,17 +6599,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, -0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x24, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x42, 0x72, 0x69, +0x74, 0x69, 0x73, 0x68, 0x20, 0x43, 0x6F, 0x6C, 0x75, 0x6D, 0x62, 0x69, 0x61, /* America/Virgin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* America/Whitehorse */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x9E, 0xB8, 0xCB, 0xB0, 0x9F, 0xBB, 0x23, 0xA0, 0xA0, 0xD0, 0x0C, 0xB0, 0xA1, 0xA2, 0xD2, 0x80, 0xCB, 0x89, 0x28, 0xB0, @@ -6450,10 +6660,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x15, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x19, 0x59, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x59, 0x57, 0x54, 0x00, 0x59, 0x50, 0x54, 0x00, 0x59, 0x44, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x1A, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, +0x2D, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x59, 0x75, 0x6B, 0x6F, 0x6E, /* America/Winnipeg */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x01, 0xFB, 0xE0, 0x9B, 0xC3, 0xBA, 0x50, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xC0, 0x3F, 0x70, 0xC2, 0xA0, 0x3B, 0x80, @@ -6517,10 +6729,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x26, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, +0x6C, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x6E, 0x69, 0x74, 0x6F, 0x62, +0x61, 0x20, 0x26, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x4F, 0x6E, 0x74, 0x61, 0x72, 0x69, 0x6F, + /* America/Yakutat */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x8E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1A, 0xCB, 0x89, 0x28, 0xB0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x34, 0x20, 0xFE, 0xB8, 0x55, 0x30, 0xFF, 0xA8, 0x38, 0x20, @@ -6571,10 +6787,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x8F, 0x80, 0x01, 0x08, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x0C, 0xFF, 0xFF, 0x8F, 0x80, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x15, 0x59, 0x53, 0x54, 0x00, 0x59, 0x57, 0x54, 0x00, 0x59, 0x50, 0x54, 0x00, 0x59, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x23, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x54, +0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, 0x20, 0x70, 0x61, 0x6E, +0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x65, 0x63, 0x6B, /* America/Yellowknife */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0xBE, 0x2A, 0x18, 0x00, 0xCB, 0x89, 0x0C, 0x90, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x18, 0x00, 0xF7, 0x2F, 0x5A, 0x70, @@ -6619,41 +6838,55 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x15, 0x7A, 0x7A, 0x7A, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x44, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x2D, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, +0x20, 0x2D, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, +0x77, 0x65, 0x73, 0x74, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, + /* Antarctica/Casey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x1E, 0xCC, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x1F, 0x43, 0x61, 0x73, 0x65, 0x79, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, +0x6F, 0x6E, 0x2C, 0x20, 0x42, 0x61, 0x69, 0x6C, 0x65, 0x79, 0x20, 0x50, 0x65, 0x6E, 0x69, 0x6E, +0x73, 0x75, 0x6C, 0x61, /* Antarctica/Davis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xE7, 0x9C, 0x40, 0x00, 0xF6, 0x47, 0xDF, 0x10, 0xFE, 0x47, 0xAB, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x7A, 0x7A, 0x7A, 0x00, 0x44, 0x41, 0x56, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1D, +0x44, 0x61, 0x76, 0x69, 0x73, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x56, +0x65, 0x73, 0x74, 0x66, 0x6F, 0x6C, 0x64, 0x20, 0x48, 0x69, 0x6C, 0x6C, 0x73, /* Antarctica/DumontDUrville */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xD4, 0xBC, 0x76, 0x80, 0xDE, 0x34, 0x60, 0x60, 0xE7, 0x3C, 0x02, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x08, 0x7A, 0x7A, 0x7A, 0x00, 0x50, 0x4D, 0x54, 0x00, 0x44, 0x44, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x26, 0x44, 0x75, 0x6D, 0x6F, +0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, 0x72, 0x76, 0x69, 0x6C, 0x6C, 0x65, 0x20, 0x53, 0x74, 0x61, +0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x54, 0x65, 0x72, 0x72, 0x65, 0x20, 0x41, 0x64, 0x65, 0x6C, +0x69, 0x65, /* Antarctica/Mawson */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xE2, 0x20, 0x32, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x4D, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4D, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x19, 0x4D, 0x61, 0x77, 0x73, 0x6F, 0x6E, 0x20, 0x53, 0x74, 0x61, +0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x48, 0x6F, 0x6C, 0x6D, 0x65, 0x20, 0x42, 0x61, 0x79, /* Antarctica/McMurdo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 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, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xE5, 0xA9, 0xE9, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, @@ -6698,10 +6931,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x7A, 0x7A, 0x7A, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, -0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x4D, 0x63, 0x4D, 0x75, 0x72, 0x64, 0x6F, 0x20, 0x53, 0x74, +0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x52, 0x6F, 0x73, 0x73, 0x20, 0x49, 0x73, 0x6C, 0x61, +0x6E, 0x64, /* Antarctica/Palmer */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0xF6, 0x98, 0xAD, 0x00, 0xF6, 0xE6, 0x9F, 0xB0, 0xF8, 0x13, 0x43, 0xC0, 0xF8, 0xC7, 0xD3, 0x30, 0xF9, 0xF4, 0x77, 0x40, @@ -6748,17 +6984,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x0D, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x12, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x12, 0x7A, 0x7A, 0x7A, 0x00, 0x41, 0x52, 0x54, 0x00, 0x41, 0x52, 0x53, 0x54, 0x00, 0x43, 0x4C, 0x53, 0x54, 0x00, 0x43, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, +0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1D, 0x50, +0x61, 0x6C, 0x6D, 0x65, 0x72, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x41, +0x6E, 0x76, 0x65, 0x72, 0x73, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Antarctica/Rothera */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x0D, 0x02, 0x2D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x52, 0x4F, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x52, 0x4F, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x20, 0x52, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x61, 0x20, 0x53, 0x74, +0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x41, 0x64, 0x65, 0x6C, 0x61, 0x69, 0x64, 0x65, 0x20, +0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Antarctica/South_Pole */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 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, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xE5, 0xA9, 0xE9, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, @@ -6803,24 +7044,32 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x7A, 0x7A, 0x7A, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, -0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x22, 0x41, 0x6D, 0x75, 0x6E, 0x64, 0x73, 0x65, 0x6E, 0x2D, 0x53, +0x63, 0x6F, 0x74, 0x74, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x53, 0x6F, +0x75, 0x74, 0x68, 0x20, 0x50, 0x6F, 0x6C, 0x65, /* Antarctica/Syowa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xE7, 0xB1, 0x58, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x53, 0x59, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x53, 0x59, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x18, 0x53, 0x79, 0x6F, 0x77, 0x61, 0x20, 0x53, 0x74, 0x61, 0x74, +0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x45, 0x20, 0x4F, 0x6E, 0x67, 0x75, 0x6C, 0x20, 0x49, /* Antarctica/Vostok */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xE9, 0x58, 0x89, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x56, 0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x56, 0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x56, 0x6F, 0x73, 0x74, 0x6F, 0x6B, 0x20, 0x53, 0x74, 0x61, +0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x53, 0x20, 0x4D, 0x61, 0x67, 0x6E, 0x65, 0x74, 0x69, 0x63, +0x20, 0x50, 0x6F, 0x6C, 0x65, /* Arctic/Longyearbyen */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4A, 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, 0x09, 0x9B, 0x27, 0xE3, 0x00, 0x9B, 0xD4, 0x7B, 0x60, 0xC8, 0xB7, 0x4D, 0x60, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -6870,17 +7119,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Asia/Aden */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x59, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x38, 0x20, 0x01, 0x00, 0x00, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Almaty */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 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, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0xAA, 0x19, 0x7B, 0xDC, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, @@ -6902,10 +7153,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4C, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Asia/Amman */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0D, 0xB6, 0xA3, 0xD6, 0xD0, 0x06, 0x72, 0x79, 0xE0, 0x07, 0x0C, 0xAB, 0x50, 0x08, 0x24, 0x37, 0x60, 0x08, 0xED, 0xDE, 0xD0, @@ -6948,10 +7200,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Asia/Anadyr */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xAA, 0x19, 0x1D, 0x9C, 0xB5, 0xA3, 0x8C, 0xC0, 0x15, 0x27, 0x1B, 0x30, 0x16, 0x18, 0x4F, 0xA0, 0x17, 0x08, 0x4E, 0xB0, @@ -6995,10 +7248,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xD0, 0x01, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4E, 0x41, 0x54, 0x00, 0x41, 0x4E, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x31, +0x30, 0x20, 0x2D, 0x20, 0x42, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x61, /* Asia/Aqtau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 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, 0x33, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xAA, 0x19, 0x94, 0xE0, 0xB5, 0xA3, 0xFD, 0x40, 0xF2, 0xD4, 0xAE, 0x30, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xB1, 0x20, @@ -7026,10 +7281,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x45, 0x54, 0x00, 0x53, 0x48, 0x45, 0x53, 0x54, 0x00, 0x41, 0x51, 0x54, 0x53, 0x54, 0x00, 0x41, 0x51, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x31, 0x41, 0x74, +0x79, 0x72, 0x61, 0x75, 0x20, 0x28, 0x41, 0x74, 0x69, 0x72, 0x61, 0x75, 0x2C, 0x20, 0x47, 0x75, +0x72, 0x27, 0x79, 0x65, 0x76, 0x29, 0x2C, 0x20, 0x4D, 0x61, 0x6E, 0x67, 0x67, 0x68, 0x79, 0x73, +0x74, 0x61, 0x75, 0x20, 0x28, 0x4D, 0x61, 0x6E, 0x6B, 0x69, 0x73, 0x74, 0x61, 0x75, 0x29, /* Asia/Aqtobe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 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, 0x33, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1A, 0xAA, 0x19, 0x8E, 0x68, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xB1, 0x20, @@ -7054,10 +7312,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x15, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4B, 0x54, 0x54, 0x00, 0x41, 0x4B, 0x54, 0x53, 0x54, 0x00, 0x41, 0x51, 0x54, 0x53, 0x54, 0x00, 0x41, 0x51, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x41, 0x71, 0x74, 0x6F, 0x62, 0x65, 0x20, +0x28, 0x41, 0x6B, 0x74, 0x6F, 0x62, 0x65, 0x29, /* Asia/Ashgabat */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, 0xAA, 0x19, 0x8D, 0x44, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xBF, 0x30, @@ -7074,10 +7334,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x48, 0x54, 0x00, 0x41, 0x53, 0x48, 0x53, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Ashkhabad */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x13, 0xAA, 0x19, 0x8D, 0x44, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xBF, 0x30, @@ -7094,10 +7354,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x48, 0x54, 0x00, 0x41, 0x53, 0x48, 0x53, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Baghdad */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x9E, 0x30, 0x3C, 0xE0, 0x17, 0x30, 0x68, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xE8, 0xBD, 0x50, 0x19, 0xDB, 0x43, 0x40, @@ -7119,18 +7379,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x29, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x42, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Bahrain */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA1, 0xF2, 0x9E, 0x14, 0x04, 0x8A, 0x92, 0xC0, 0x01, 0x02, 0x00, 0x00, 0x2F, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x53, 0x54, 0x00, -0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Baku */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x95, 0x44, 0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, @@ -7175,17 +7437,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x01, 0x13, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x41, 0x4B, 0x54, 0x00, 0x42, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x41, 0x5A, 0x54, 0x00, 0x41, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Bangkok */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA2, 0x6A, 0x67, 0xC4, 0x01, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x42, 0x4D, 0x54, -0x00, 0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Beirut */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xA2, 0x65, 0x63, 0xE0, 0xA3, 0x7B, 0x82, 0x50, 0xA4, 0x4E, 0x80, 0x60, 0xA5, 0x3F, 0xB4, 0xD0, 0xA6, 0x25, 0x27, 0xE0, @@ -7233,10 +7497,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Bishkek */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x47, 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, 0x34, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x7E, 0x10, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, @@ -7262,29 +7526,31 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x52, 0x55, 0x54, 0x00, 0x46, 0x52, 0x55, 0x53, 0x54, 0x00, 0x4B, 0x47, 0x53, 0x54, 0x00, 0x4B, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Brunei */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xAD, 0x8A, 0x02, 0x44, 0xBA, 0x67, 0x47, 0x88, 0x01, 0x02, 0x00, 0x00, 0x6B, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x69, 0x78, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4E, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Asia/Calcutta */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x09, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, -0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Choibalsan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x86, 0xD3, 0xE7, 0x28, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4E, 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, 0x2F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x86, 0xD3, 0xE7, 0x28, 0x0F, 0x0B, 0xDC, 0x90, 0x18, 0xE9, 0xC8, 0x80, 0x19, 0xDA, 0xEE, 0xE0, 0x1A, 0xCC, 0x3F, 0x70, 0x1B, 0xBC, 0x22, 0x60, 0x1C, 0xAC, 0x21, 0x70, 0x1D, 0x9C, 0x04, 0x60, 0x1E, 0x8C, 0x03, 0x70, 0x1F, 0x7B, 0xE6, 0x60, 0x20, 0x6B, 0xE5, 0x70, 0x21, 0x5B, 0xC8, 0x60, 0x22, 0x4B, 0xC7, 0x70, @@ -7296,16 +7562,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x36, 0x0C, 0xF3, 0x60, 0x3A, 0xE9, 0xA5, 0x90, 0x3B, 0xB4, 0x9E, 0x80, 0x3C, 0xA4, 0x9D, 0x90, 0x3D, 0x94, 0x80, 0x80, 0x3E, 0x84, 0x7F, 0x90, 0x3F, 0x74, 0x62, 0x80, 0x40, 0x64, 0x61, 0x90, 0x41, 0x54, 0x44, 0x80, 0x42, 0x44, 0x43, 0x90, 0x43, 0x34, 0x26, 0x80, 0x44, 0x24, 0x25, 0x90, -0x45, 0x1D, 0x43, 0x00, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x45, 0x1D, 0x43, 0x00, 0x47, 0xEF, 0xAA, 0xF0, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x00, 0x00, 0x6B, 0x58, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, -0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x0E, -0x4C, 0x4D, 0x54, 0x00, 0x55, 0x4C, 0x41, 0x54, 0x00, 0x43, 0x48, 0x4F, 0x54, 0x00, 0x43, 0x48, -0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x6B, 0x58, 0x00, 0x00, 0x00, 0x00, 0x62, +0x70, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, +0x00, 0x8C, 0xA0, 0x01, 0x0E, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x55, +0x4C, 0x41, 0x54, 0x00, 0x43, 0x48, 0x4F, 0x54, 0x00, 0x43, 0x48, 0x4F, 0x53, 0x54, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x12, 0x44, 0x6F, 0x72, 0x6E, 0x6F, 0x64, 0x2C, 0x20, 0x53, +0x75, 0x6B, 0x68, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, /* Asia/Chongqing */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 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, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xA8, 0x94, 0x13, 0x6D, 0xC9, 0x10, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, @@ -7315,10 +7584,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4C, 0x4F, 0x4E, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x40, 0x63, +0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x43, 0x68, 0x69, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x53, +0x69, 0x63, 0x68, 0x75, 0x61, 0x6E, 0x2C, 0x20, 0x59, 0x75, 0x6E, 0x6E, 0x61, 0x6E, 0x2C, 0x20, +0x47, 0x75, 0x61, 0x6E, 0x67, 0x78, 0x69, 0x2C, 0x20, 0x53, 0x68, 0x61, 0x61, 0x6E, 0x78, 0x69, +0x2C, 0x20, 0x47, 0x75, 0x69, 0x7A, 0x68, 0x6F, 0x75, 0x2C, 0x20, 0x65, 0x74, 0x63, 0x2E, /* Asia/Chungking */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xA8, 0x94, 0x13, 0x6D, 0xC9, 0x10, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, @@ -7328,10 +7601,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4C, 0x4F, 0x4E, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Colombo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x4B, 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, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x87, 0x9D, 0xBD, 0x1C, 0xCB, 0x5A, 0x1C, 0x28, 0xCC, 0x95, 0x2B, 0xA0, 0xD2, 0x75, 0x80, 0x38, 0x31, 0xA6, 0x00, 0x28, @@ -7340,10 +7613,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x08, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x04, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x0D, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x49, 0x48, 0x53, 0x54, 0x00, 0x4C, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Dacca */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xDD, 0xA8, 0xD2, 0x98, 0x02, 0x4F, 0x9D, 0x20, @@ -7351,10 +7624,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x54, 0x60, 0x00, 0x12, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x44, 0x41, 0x43, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Damascus */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x59, 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, 0x97, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xA1, 0xF2, 0xAB, 0x78, 0xA2, 0x81, 0x2F, 0x80, 0xA3, 0x5E, 0x9D, 0x70, 0xA4, 0x61, 0x11, 0x80, 0xA5, 0x3E, 0x7F, 0x70, @@ -7379,22 +7652,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3A, 0xC6, 0x53, 0x60, 0x3B, 0xB7, 0x87, 0xD0, 0x3C, 0xA7, 0x86, 0xE0, 0x3D, 0x98, 0xBB, 0x50, 0x3E, 0x88, 0xBA, 0x60, 0x3F, 0x79, 0xEE, 0xD0, 0x40, 0x6B, 0x3F, 0x60, 0x41, 0x5C, 0x73, 0xD0, 0x42, 0x4C, 0x72, 0xE0, 0x43, 0x3D, 0xA7, 0x50, 0x44, 0x2D, 0xA6, 0x60, 0x45, 0x12, 0xFD, 0x50, -0x46, 0x0C, 0x36, 0xE0, 0x47, 0x2A, 0x3E, 0x50, 0x47, 0xF5, 0x53, 0x60, 0x48, 0xE2, 0x93, 0x50, -0x49, 0xD5, 0x35, 0x60, 0x4A, 0xC3, 0xC6, 0xD0, 0x4B, 0xB5, 0x17, 0x60, 0x4C, 0xA4, 0xFA, 0x50, -0x4D, 0x94, 0xF9, 0x60, 0x4E, 0x86, 0x2D, 0xD0, 0x4F, 0x7E, 0x15, 0xE0, 0x50, 0x68, 0xB2, 0xD0, -0x51, 0x5D, 0xF7, 0xE0, 0x52, 0x49, 0xE6, 0x50, 0x53, 0x3D, 0xD9, 0xE0, 0x54, 0x2B, 0x19, 0xD0, -0x55, 0x1D, 0xBB, 0xE0, 0x56, 0x0C, 0x4D, 0x50, 0x56, 0xFD, 0x9D, 0xE0, 0x57, 0xEE, 0xD2, 0x50, -0x58, 0xE6, 0xBA, 0x60, 0x59, 0xD0, 0x05, 0xD0, 0x5A, 0xC6, 0x9C, 0x60, 0x5B, 0xB1, 0x39, 0x50, -0x5C, 0xA6, 0x7E, 0x60, 0x5D, 0x92, 0x6C, 0xD0, 0x5E, 0x86, 0x60, 0x60, 0x5F, 0x74, 0xF1, 0xD0, -0x60, 0x66, 0x42, 0x60, 0x61, 0x56, 0x25, 0x50, 0x62, 0x46, 0x24, 0x60, 0x63, 0x37, 0x58, 0xD0, -0x64, 0x2F, 0x40, 0xE0, 0x65, 0x18, 0x8C, 0x50, 0x66, 0x0F, 0x22, 0xE0, 0x66, 0xFB, 0x11, 0x50, -0x67, 0xEF, 0x04, 0xE0, 0x68, 0xDC, 0x44, 0xD0, 0x69, 0xCE, 0xE6, 0xE0, 0x6A, 0xBD, 0x78, 0x50, -0x6B, 0xAE, 0xC8, 0xE0, 0x6C, 0x9E, 0xAB, 0xD0, 0x6D, 0x97, 0xE5, 0x60, 0x6E, 0x81, 0x30, 0xD0, -0x6F, 0x77, 0xC7, 0x60, 0x70, 0x62, 0x64, 0x50, 0x71, 0x57, 0xA9, 0x60, 0x72, 0x43, 0x97, 0xD0, -0x73, 0x37, 0x8B, 0x60, 0x74, 0x24, 0xCB, 0x50, 0x75, 0x17, 0x6D, 0x60, 0x76, 0x07, 0x50, 0x50, -0x76, 0xF7, 0x4F, 0x60, 0x77, 0xE8, 0x83, 0xD0, 0x78, 0xE0, 0x6B, 0xE0, 0x79, 0xC9, 0xB7, 0x50, -0x7A, 0xC0, 0x4D, 0xE0, 0x7B, 0xAA, 0xEA, 0xD0, 0x7C, 0xA0, 0x2F, 0xE0, 0x7D, 0x8D, 0x6F, 0xD0, -0x7E, 0x80, 0x11, 0xE0, 0x7F, 0x6E, 0xA3, 0x50, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x46, 0x0C, 0x36, 0xE0, 0x47, 0x2A, 0x3E, 0x50, 0x47, 0xF5, 0x53, 0x60, 0x49, 0x0B, 0x71, 0xD0, +0x49, 0xD5, 0x35, 0x60, 0x4A, 0xEC, 0xA5, 0x50, 0x4B, 0xB5, 0x17, 0x60, 0x4C, 0xCD, 0xD8, 0xD0, +0x4D, 0x94, 0xF9, 0x60, 0x4E, 0xAF, 0x0C, 0x50, 0x4F, 0x7E, 0x15, 0xE0, 0x50, 0x91, 0x91, 0x50, +0x51, 0x5D, 0xF7, 0xE0, 0x52, 0x72, 0xC4, 0xD0, 0x53, 0x3D, 0xD9, 0xE0, 0x54, 0x53, 0xF8, 0x50, +0x55, 0x1D, 0xBB, 0xE0, 0x56, 0x35, 0x2B, 0xD0, 0x56, 0xFD, 0x9D, 0xE0, 0x58, 0x17, 0xB0, 0xD0, +0x58, 0xE6, 0xBA, 0x60, 0x59, 0xF8, 0xE4, 0x50, 0x5A, 0xC6, 0x9C, 0x60, 0x5B, 0xDA, 0x17, 0xD0, +0x5C, 0xA6, 0x7E, 0x60, 0x5D, 0xBB, 0x4B, 0x50, 0x5E, 0x86, 0x60, 0x60, 0x5F, 0x9D, 0xD0, 0x50, +0x60, 0x66, 0x42, 0x60, 0x61, 0x7F, 0x03, 0xD0, 0x62, 0x46, 0x24, 0x60, 0x63, 0x60, 0x37, 0x50, +0x64, 0x2F, 0x40, 0xE0, 0x65, 0x41, 0x6A, 0xD0, 0x66, 0x0F, 0x22, 0xE0, 0x67, 0x23, 0xEF, 0xD0, +0x67, 0xEF, 0x04, 0xE0, 0x69, 0x05, 0x23, 0x50, 0x69, 0xCE, 0xE6, 0xE0, 0x6A, 0xE6, 0x56, 0xD0, +0x6B, 0xAE, 0xC8, 0xE0, 0x6C, 0xC7, 0x8A, 0x50, 0x6D, 0x97, 0xE5, 0x60, 0x6E, 0xAA, 0x0F, 0x50, +0x6F, 0x77, 0xC7, 0x60, 0x70, 0x8B, 0x42, 0xD0, 0x71, 0x57, 0xA9, 0x60, 0x72, 0x6C, 0x76, 0x50, +0x73, 0x37, 0x8B, 0x60, 0x74, 0x4D, 0xA9, 0xD0, 0x75, 0x17, 0x6D, 0x60, 0x76, 0x30, 0x2E, 0xD0, +0x76, 0xF7, 0x4F, 0x60, 0x78, 0x11, 0x62, 0x50, 0x78, 0xE0, 0x6B, 0xE0, 0x79, 0xF2, 0x95, 0xD0, +0x7A, 0xC0, 0x4D, 0xE0, 0x7B, 0xD3, 0xC9, 0x50, 0x7C, 0xA0, 0x2F, 0xE0, 0x7D, 0xB6, 0x4E, 0x50, +0x7E, 0x80, 0x11, 0xE0, 0x7F, 0x97, 0x81, 0xD0, 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, @@ -7406,10 +7679,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Asia/Dhaka */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xDD, 0xA8, 0xD2, 0x98, 0x02, 0x4F, 0x9D, 0x20, @@ -7417,27 +7691,29 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x54, 0x60, 0x00, 0x12, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x44, 0x41, 0x43, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Dili */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x92, 0xE6, 0x18, 0xC4, 0xCB, 0x99, 0x32, 0xF0, 0xD2, 0x56, 0xEE, 0x70, 0x0B, 0xEA, 0x30, 0x70, 0x39, 0xC3, 0x99, 0x00, 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, 0x00, 0x75, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4C, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x43, -0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Dubai */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0xF2, 0x99, 0xA8, 0x01, 0x00, 0x00, 0x33, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Dushanbe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x13, 0xAA, 0x19, 0x83, 0x80, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, @@ -7452,10 +7728,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x55, 0x53, 0x54, 0x00, 0x44, 0x55, 0x53, 0x53, 0x54, 0x00, 0x54, 0x4A, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Asia/Gaza */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, 0xCF, 0x8F, 0x66, 0xE0, @@ -7479,21 +7756,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0xC8, 0x51, 0x70, 0x49, 0xD2, 0x92, 0x60, 0x4A, 0xA8, 0x33, 0x70, 0x4B, 0xB3, 0xC5, 0xE0, -0x4C, 0x88, 0x15, 0x70, 0x4D, 0x94, 0xF9, 0x60, 0x4E, 0x67, 0xF7, 0x70, 0x4F, 0x77, 0x7E, 0x60, -0x50, 0x51, 0x13, 0xF0, 0x51, 0x58, 0xB1, 0xE0, 0x52, 0x30, 0xF5, 0xF0, 0x53, 0x39, 0xE5, 0x60, -0x54, 0x10, 0xD7, 0xF0, 0x55, 0x1B, 0x18, 0xE0, 0x55, 0xF0, 0xB9, 0xF0, 0x56, 0xFD, 0x9D, 0xE0, -0x57, 0xD0, 0x9B, 0xF0, 0x58, 0xDE, 0xD1, 0x60, 0x59, 0xB9, 0xB8, 0x70, 0x5A, 0xC0, 0x04, 0xE0, -0x5B, 0x99, 0x9A, 0x70, 0x5C, 0xA1, 0x38, 0x60, 0x5D, 0x79, 0x7C, 0x70, 0x5E, 0x83, 0xBD, 0x60, -0x5F, 0x59, 0x5E, 0x70, 0x60, 0x64, 0xF0, 0xE0, 0x61, 0x39, 0x40, 0x70, 0x62, 0x46, 0x24, 0x60, -0x63, 0x19, 0x22, 0x70, 0x64, 0x27, 0x57, 0xE0, 0x65, 0x02, 0x3E, 0xF0, 0x66, 0x09, 0xDC, 0xE0, -0x66, 0xE2, 0x20, 0xF0, 0x67, 0xEB, 0x10, 0x60, 0x68, 0xC2, 0x02, 0xF0, 0x69, 0xCC, 0x43, 0xE0, -0x6A, 0xA1, 0xE4, 0xF0, 0x6B, 0xAD, 0x77, 0x60, 0x6C, 0x81, 0xC6, 0xF0, 0x6D, 0x8F, 0xFC, 0x60, -0x6E, 0x6A, 0xE3, 0x70, 0x6F, 0x71, 0x2F, 0xE0, 0x70, 0x4A, 0xC5, 0x70, 0x71, 0x52, 0x63, 0x60, -0x72, 0x2A, 0xA7, 0x70, 0x73, 0x33, 0x96, 0xE0, 0x74, 0x0A, 0x89, 0x70, 0x75, 0x16, 0x1B, 0xE0, -0x75, 0xEA, 0x6B, 0x70, 0x76, 0xF7, 0x4F, 0x60, 0x77, 0xCA, 0x4D, 0x70, 0x78, 0xD8, 0x82, 0xE0, -0x79, 0xB3, 0x69, 0xF0, 0x7A, 0xB9, 0xB6, 0x60, 0x7B, 0x93, 0x4B, 0xF0, 0x7C, 0x9C, 0x3B, 0x60, -0x7D, 0x73, 0x2D, 0xF0, 0x7E, 0x7D, 0x6E, 0xE0, 0x7F, 0x53, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x48, 0xB5, 0xDC, 0x70, 0x49, 0xD2, 0x92, 0x60, 0x4A, 0x95, 0xBE, 0x70, 0x4B, 0xB3, 0xC5, 0xE0, +0x4C, 0x75, 0xA0, 0x70, 0x4D, 0x94, 0xF9, 0x60, 0x4E, 0x55, 0x82, 0x70, 0x4F, 0x77, 0x7E, 0x60, +0x50, 0x3E, 0x9E, 0xF0, 0x51, 0x58, 0xB1, 0xE0, 0x52, 0x1E, 0x80, 0xF0, 0x53, 0x39, 0xE5, 0x60, +0x53, 0xFE, 0x62, 0xF0, 0x55, 0x1B, 0x18, 0xE0, 0x55, 0xDE, 0x44, 0xF0, 0x56, 0xFD, 0x9D, 0xE0, +0x57, 0xBE, 0x26, 0xF0, 0x58, 0xDE, 0xD1, 0x60, 0x59, 0xA7, 0x43, 0x70, 0x5A, 0xC0, 0x04, 0xE0, +0x5B, 0x87, 0x25, 0x70, 0x5C, 0xA1, 0x38, 0x60, 0x5D, 0x67, 0x07, 0x70, 0x5E, 0x83, 0xBD, 0x60, +0x5F, 0x46, 0xE9, 0x70, 0x60, 0x64, 0xF0, 0xE0, 0x61, 0x26, 0xCB, 0x70, 0x62, 0x46, 0x24, 0x60, +0x63, 0x06, 0xAD, 0x70, 0x64, 0x27, 0x57, 0xE0, 0x64, 0xEF, 0xC9, 0xF0, 0x66, 0x09, 0xDC, 0xE0, +0x66, 0xCF, 0xAB, 0xF0, 0x67, 0xEB, 0x10, 0x60, 0x68, 0xAF, 0x8D, 0xF0, 0x69, 0xCC, 0x43, 0xE0, +0x6A, 0x8F, 0x6F, 0xF0, 0x6B, 0xAD, 0x77, 0x60, 0x6C, 0x6F, 0x51, 0xF0, 0x6D, 0x8F, 0xFC, 0x60, +0x6E, 0x58, 0x6E, 0x70, 0x6F, 0x71, 0x2F, 0xE0, 0x70, 0x38, 0x50, 0x70, 0x71, 0x52, 0x63, 0x60, +0x72, 0x18, 0x32, 0x70, 0x73, 0x33, 0x96, 0xE0, 0x73, 0xF8, 0x14, 0x70, 0x75, 0x16, 0x1B, 0xE0, +0x75, 0xD7, 0xF6, 0x70, 0x76, 0xF7, 0x4F, 0x60, 0x77, 0xB7, 0xD8, 0x70, 0x78, 0xD8, 0x82, 0xE0, +0x79, 0xA0, 0xF4, 0xF0, 0x7A, 0xB9, 0xB6, 0x60, 0x7B, 0x80, 0xD6, 0xF0, 0x7C, 0x9C, 0x3B, 0x60, +0x7D, 0x60, 0xB8, 0xF0, 0x7E, 0x7D, 0x6E, 0xE0, 0x7F, 0x40, 0x9A, 0xF0, 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, @@ -7506,10 +7783,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Harbin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0x95, 0xBC, 0xB8, 0xD3, 0xCE, 0x78, 0xC7, 0x90, 0xFA, 0x80, 0xF9, 0x17, 0x95, 0xF0, 0x13, 0x6D, 0xB3, 0xF8, @@ -7520,19 +7798,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x00, 0x00, 0x76, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x77, 0x88, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x21, 0x48, 0x65, 0x69, 0x6C, 0x6F, 0x6E, 0x67, 0x6A, 0x69, 0x61, +0x6E, 0x67, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x4D, 0x6F, 0x68, 0x65, 0x29, +0x2C, 0x20, 0x4A, 0x69, 0x6C, 0x69, 0x6E, /* Asia/Ho_Chi_Minh */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x42, 0x80, 0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Hong_Kong */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x4B, 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, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x85, 0x69, 0x5A, 0xFC, 0xD3, 0x6A, 0xB7, 0x38, 0xD4, 0x93, 0x4A, 0xA8, 0xD5, 0x42, 0xB0, 0x38, 0xD6, 0x9A, 0xB9, 0xA8, @@ -7558,10 +7840,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x6B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, -0x48, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x48, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Hovd */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 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, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x86, 0xD3, 0xFC, 0x94, 0x0F, 0x0B, 0xEA, 0xA0, 0x18, 0xE9, 0xD6, 0x90, 0x19, 0xDB, 0x0B, 0x00, 0x1A, 0xCC, 0x5B, 0x90, @@ -7581,10 +7864,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x55, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4F, 0x56, 0x54, 0x00, 0x48, 0x4F, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x2B, 0x42, 0x61, 0x79, +0x61, 0x6E, 0x2D, 0x4F, 0x6C, 0x67, 0x69, 0x79, 0x2C, 0x20, 0x47, 0x6F, 0x76, 0x69, 0x2D, 0x41, +0x6C, 0x74, 0x61, 0x69, 0x2C, 0x20, 0x48, 0x6F, 0x76, 0x64, 0x2C, 0x20, 0x55, 0x76, 0x73, 0x2C, +0x20, 0x5A, 0x61, 0x76, 0x6B, 0x68, 0x61, 0x6E, /* Asia/Irkutsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xA2, 0x12, 0x0F, 0xB0, 0xB5, 0xA3, 0xD3, 0x10, 0x15, 0x27, 0x61, 0x80, 0x16, 0x18, 0x95, 0xF0, 0x17, 0x08, 0x95, 0x00, @@ -7628,10 +7914,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x49, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x17, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x35, 0x20, 0x2D, 0x20, 0x4C, 0x61, 0x6B, 0x65, +0x20, 0x42, 0x61, 0x69, 0x6B, 0x61, 0x6C, /* Asia/Istanbul */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x90, 0x8B, 0xF5, 0x98, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xA2, 0x65, 0x63, 0xE0, 0xA3, 0x7B, 0x82, 0x50, @@ -7693,10 +7981,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x54, 0x52, 0x53, 0x54, 0x00, 0x54, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Jakarta */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 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, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xA9, 0x78, 0x85, 0xE0, 0xBA, 0x16, 0xDE, 0x60, 0xCB, 0xBF, 0x83, 0x88, 0xD2, 0x56, 0xEE, 0x70, 0xD7, 0x3C, 0xC6, 0x08, @@ -7705,18 +7993,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4A, 0x4D, 0x54, 0x00, 0x4A, 0x41, 0x56, 0x54, 0x00, 0x57, 0x49, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x4A, 0x61, 0x76, 0x61, +0x20, 0x26, 0x20, 0x53, 0x75, 0x6D, 0x61, 0x74, 0x72, 0x61, /* Asia/Jayapura */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 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, 0x0C, 0xBA, 0x16, 0xC1, 0x98, 0xD0, 0x58, 0xB9, 0xF0, 0xF4, 0xB5, 0xA2, 0x68, 0x01, 0x02, 0x01, 0x00, 0x00, 0x83, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x85, 0x98, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x45, 0x49, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x49, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x19, 0x49, 0x72, 0x69, 0x61, 0x6E, +0x20, 0x4A, 0x61, 0x79, 0x61, 0x20, 0x26, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4D, 0x6F, 0x6C, 0x75, +0x63, 0x63, 0x61, 0x73, /* Asia/Jerusalem */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x4C, 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, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x9E, 0x30, 0x45, 0x88, 0xC8, 0x59, 0xB2, 0xE0, 0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, @@ -7766,17 +8058,18 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x4A, 0x4D, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x49, 0x44, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Kabul */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0xD0, 0xF9, 0xD7, 0x40, 0x01, 0x00, 0x00, 0x38, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x48, 0x00, 0x00, 0x41, 0x46, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Asia/Kamchatka */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x52, 0x96, 0xC4, 0xB5, 0xA3, 0x9A, 0xD0, 0x15, 0x27, 0x29, 0x40, 0x16, 0x18, 0x5D, 0xB0, 0x17, 0x08, 0x5C, 0xC0, @@ -7820,22 +8113,25 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xC0, 0x00, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x45, 0x54, 0x54, 0x00, 0x50, 0x45, 0x54, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x15, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x39, 0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6D, 0x63, +0x68, 0x61, 0x74, 0x6B, 0x61, /* Asia/Karachi */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4B, 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, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x89, 0x7E, 0xFC, 0xA4, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x89, 0x7E, 0xFC, 0xA4, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98, 0xDD, 0xA8, 0xE0, 0xA8, 0x02, 0x4F, 0xAB, 0x30, -0x3C, 0xAF, 0x45, 0xEC, 0x3D, 0x9F, 0x28, 0xDC, 0x01, 0x02, 0x01, 0x03, 0x05, 0x04, 0x05, 0x00, -0x00, 0x3E, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x5B, 0x68, 0x01, -0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x08, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0D, 0x00, 0x00, 0x46, -0x50, 0x00, 0x12, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x4B, 0x41, 0x52, 0x54, 0x00, -0x50, 0x4B, 0x53, 0x54, 0x00, 0x50, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x3C, 0xAF, 0x45, 0xEC, 0x3D, 0x9F, 0x28, 0xDC, 0x48, 0x41, 0xA0, 0x30, 0x49, 0x0B, 0x47, 0xA0, +0x01, 0x02, 0x01, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x3E, 0xDC, 0x00, 0x00, 0x00, +0x00, 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, +0x08, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0D, 0x00, 0x00, 0x46, 0x50, 0x00, 0x12, 0x4C, 0x4D, 0x54, +0x00, 0x49, 0x53, 0x54, 0x00, 0x4B, 0x41, 0x52, 0x54, 0x00, 0x50, 0x4B, 0x53, 0x54, 0x00, 0x50, +0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Kashgar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xC5, 0x44, 0xC7, 0x91, 0x1D, 0xA8, 0x13, 0x6D, 0xE5, 0x30, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, @@ -7846,27 +8142,40 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x58, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x41, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x15, 0x77, 0x65, 0x73, 0x74, +0x20, 0x54, 0x69, 0x62, 0x65, 0x74, 0x20, 0x26, 0x20, 0x58, 0x69, 0x6E, 0x6A, 0x69, 0x61, 0x6E, +0x67, +/* Asia/Kathmandu */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA1, 0xF2, 0x7D, 0x84, +0x1E, 0x18, 0x30, 0xA8, 0x01, 0x02, 0x00, 0x00, 0x4F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x58, +0x00, 0x04, 0x00, 0x00, 0x50, 0xDC, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, +0x4E, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Katmandu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA1, 0xF2, 0x7D, 0x84, 0x1E, 0x18, 0x30, 0xA8, 0x01, 0x02, 0x00, 0x00, 0x4F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x50, 0xDC, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, -0x4E, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4E, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Kolkata */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 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, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0xCA, 0xDB, 0x86, 0xB0, 0xCC, 0x05, 0x71, 0x18, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x52, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x09, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, -0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Krasnoyarsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xF9, 0x0D, 0xF8, 0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10, @@ -7910,10 +8219,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x70, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x19, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x34, 0x20, 0x2D, 0x20, 0x59, 0x65, 0x6E, 0x69, +0x73, 0x65, 0x69, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Kuala_Lumpur */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x86, 0x83, 0x85, 0xA3, 0xBA, 0x67, 0x4E, 0x90, 0xC0, 0x0A, 0xE4, 0x60, 0xCA, 0xB3, 0xE5, 0x60, 0xCB, 0x91, 0x5F, 0x08, @@ -7922,10 +8233,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x09, 0x00, 0x00, 0x67, 0x20, 0x00, 0x04, 0x00, 0x00, 0x69, 0x78, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x80, 0x00, 0x13, 0x53, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x4D, 0x59, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x13, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x73, +0x75, 0x6C, 0x61, 0x72, 0x20, 0x4D, 0x61, 0x6C, 0x61, 0x79, 0x73, 0x69, 0x61, /* Asia/Kuching */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x59, 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, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xAD, 0x8A, 0x06, 0x90, 0xBA, 0x67, 0x47, 0x88, 0xBF, 0x7B, 0x27, 0x80, 0xBF, 0xF3, 0x1B, 0x50, 0xC1, 0x5D, 0xAC, 0x80, @@ -7938,17 +8251,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x10, 0x00, 0x00, 0x70, 0x80, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4F, 0x52, 0x54, 0x00, 0x42, 0x4F, 0x52, 0x54, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x4D, 0x59, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x53, +0x61, 0x62, 0x61, 0x68, 0x20, 0x26, 0x20, 0x53, 0x61, 0x72, 0x61, 0x77, 0x61, 0x6B, /* Asia/Kuwait */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x35, 0x84, 0x01, 0x00, 0x00, 0x2C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Macao */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x92, 0xE6, 0x24, 0x04, 0xEF, 0x77, 0xD1, 0xB8, 0xF0, 0xA8, 0x4E, 0x28, 0xF1, 0x57, 0xB3, 0xB8, 0xF2, 0x88, 0x30, 0x28, @@ -7966,10 +8281,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x6A, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4F, 0x53, 0x54, 0x00, 0x4D, -0x4F, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4F, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Macau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4F, 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, 0x2A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x92, 0xE6, 0x24, 0x04, 0xEF, 0x77, 0xD1, 0xB8, 0xF0, 0xA8, 0x4E, 0x28, 0xF1, 0x57, 0xB3, 0xB8, 0xF2, 0x88, 0x30, 0x28, @@ -7987,10 +8303,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x6A, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4F, 0x53, 0x54, 0x00, 0x4D, -0x4F, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4F, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Magadan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xAA, 0x19, 0x36, 0xA0, 0xB5, 0xA3, 0xA8, 0xE0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, 0x17, 0x08, 0x6A, 0xD0, @@ -8034,37 +8351,45 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x13, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x67, 0x61, +0x64, 0x61, 0x6E, /* Asia/Makassar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 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, 0x10, 0xA1, 0xF2, 0x5D, 0x90, 0xBA, 0x16, 0xD5, 0x90, 0xCB, 0x88, 0x1D, 0x80, 0xD2, 0x56, 0xEE, 0x70, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x43, 0x49, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x3D, 0x65, 0x61, 0x73, 0x74, +0x20, 0x26, 0x20, 0x73, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x42, 0x6F, 0x72, 0x6E, 0x65, 0x6F, 0x2C, +0x20, 0x43, 0x65, 0x6C, 0x65, 0x62, 0x65, 0x73, 0x2C, 0x20, 0x42, 0x61, 0x6C, 0x69, 0x2C, 0x20, +0x4E, 0x75, 0x73, 0x61, 0x20, 0x54, 0x65, 0x6E, 0x67, 0x61, 0x72, 0x72, 0x61, 0x2C, 0x20, 0x77, +0x65, 0x73, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x6F, 0x72, /* Asia/Manila */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x48, 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, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xC1, 0x9C, 0xF4, 0x80, 0xC2, 0x16, 0x30, 0x70, 0xCB, 0xF2, 0xE7, 0x00, 0xD0, 0xA9, 0x25, 0x70, 0xE2, 0x6C, 0x39, 0x00, 0xE2, 0xD5, 0xA2, 0xF0, 0x0F, 0x75, 0x46, 0x80, 0x10, 0x66, 0x7A, 0xF0, 0x00, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x05, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x50, 0x48, 0x53, 0x54, 0x00, 0x50, 0x48, 0x54, 0x00, 0x4A, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Muscat */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4F, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0xF2, 0x96, 0x94, 0x01, 0x00, 0x00, 0x36, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Nicosia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA5, 0x77, 0x1E, 0xB8, 0x09, 0xED, 0xAF, 0xE0, 0x0A, 0xDD, 0x92, 0xD0, 0x0B, 0xFA, 0x64, 0xE0, 0x0C, 0xBE, 0xC6, 0x50, @@ -8109,10 +8434,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Novosibirsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0x19, 0x24, 0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10, @@ -8157,10 +8483,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, +0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x76, 0x6F, 0x73, 0x69, 0x62, +0x69, 0x72, 0x73, 0x6B, /* Asia/Omsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xB3, 0x40, 0xB0, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, @@ -8204,10 +8532,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x18, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, +0x20, 0x53, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, /* Asia/Oral */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1A, 0xAA, 0x19, 0x93, 0xDC, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xB1, 0x20, @@ -8234,19 +8564,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x4D, 0x54, 0x00, 0x55, 0x52, 0x41, 0x54, 0x00, 0x55, 0x52, 0x41, 0x53, 0x54, 0x00, 0x4F, 0x52, 0x41, 0x53, 0x54, 0x00, 0x4F, 0x52, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x0F, 0x57, 0x65, 0x73, 0x74, 0x20, 0x4B, 0x61, 0x7A, 0x61, 0x6B, 0x68, 0x73, 0x74, 0x61, 0x6E, + /* Asia/Phnom_Penh */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x48, 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, 0x0C, 0x88, 0x6F, 0x44, 0x24, 0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Pontianak */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0x8E, 0x00, 0xBA, 0x16, 0xDF, 0x00, 0xCB, 0x79, 0xA4, 0x08, 0xD2, 0x56, 0xEE, 0x70, 0xD7, 0x3C, 0xC6, 0x08, @@ -8256,27 +8589,30 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x10, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4D, 0x54, 0x00, 0x57, 0x49, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x43, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x15, 0x77, 0x65, 0x73, 0x74, +0x20, 0x26, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x42, 0x6F, 0x72, 0x6E, 0x65, +0x6F, /* Asia/Pyongyang */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x50, 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, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x85, 0x93, 0x7E, 0x78, 0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xF0, 0x35, 0x78, 0x80, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Qatar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x51, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA1, 0xF2, 0x9D, 0x30, 0x04, 0x8A, 0x92, 0xC0, 0x01, 0x02, 0x00, 0x00, 0x30, 0x50, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x53, 0x54, 0x00, -0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Qyzylorda */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0xAA, 0x19, 0x86, 0xA0, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xB1, 0x20, @@ -8302,35 +8638,41 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x14, 0x00, 0x00, 0x54, 0x60, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x49, 0x5A, 0x54, 0x00, 0x4B, 0x49, 0x5A, 0x53, 0x54, 0x00, 0x51, 0x59, 0x5A, 0x54, 0x00, 0x51, 0x59, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x20, 0x51, 0x79, 0x7A, 0x79, 0x6C, 0x6F, 0x72, 0x64, 0x61, 0x20, +0x28, 0x4B, 0x79, 0x7A, 0x79, 0x6C, 0x6F, 0x72, 0x64, 0x61, 0x2C, 0x20, 0x4B, 0x7A, 0x79, 0x6C, +0x2D, 0x4F, 0x72, 0x64, 0x61, 0x29, /* Asia/Rangoon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0x73, 0x5C, 0xCB, 0xF2, 0xFC, 0x18, 0xD1, 0x9A, 0x67, 0xF0, 0x01, 0x02, 0x03, 0x00, 0x00, 0x5A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x5B, 0x68, 0x00, 0x0D, 0x52, 0x4D, 0x54, 0x00, 0x42, 0x55, 0x52, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, -0x4D, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4D, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Riyadh */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x36, 0xB4, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Saigon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x88, 0x6F, 0x42, 0x80, 0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Sakhalin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x86, 0xF0, 0xCD, 0xB8, 0xC3, 0xCE, 0x85, 0x70, 0xD2, 0x30, 0xB2, 0xF0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, @@ -8375,10 +8717,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xA8, 0xC0, 0x01, 0x0C, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0C, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x12, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4A, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x53, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x53, 0x41, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x1B, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, +0x20, 0x53, 0x61, 0x6B, 0x68, 0x61, 0x6C, 0x69, 0x6E, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, + /* Asia/Samarkand */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1D, 0xAA, 0x19, 0x85, 0x60, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xB1, 0x20, @@ -8395,10 +8740,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x54, 0x60, 0x01, 0x18, 0x00, 0x00, 0x46, 0x50, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x54, 0x41, 0x53, 0x54, 0x00, 0x55, 0x5A, 0x54, 0x00, 0x55, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x77, 0x65, 0x73, 0x74, 0x20, 0x55, 0x7A, 0x62, 0x65, +0x6B, 0x69, 0x73, 0x74, 0x61, 0x6E, /* Asia/Seoul */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x85, 0x93, 0x7E, 0x78, 0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, @@ -8407,10 +8754,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x01, 0x04, 0x01, 0x04, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x4B, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Asia/Shanghai */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 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, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xB0, 0xFE, 0x9A, 0xA0, 0xC8, 0x5C, 0x01, 0x80, 0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, @@ -8420,10 +8768,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x2F, 0x65, 0x61, 0x73, 0x74, 0x20, 0x43, 0x68, 0x69, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x42, 0x65, +0x69, 0x6A, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x47, 0x75, 0x61, 0x6E, 0x67, 0x64, 0x6F, 0x6E, 0x67, +0x2C, 0x20, 0x53, 0x68, 0x61, 0x6E, 0x67, 0x68, 0x61, 0x69, 0x2C, 0x20, 0x65, 0x74, 0x63, 0x2E, + /* Asia/Singapore */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x86, 0x83, 0x85, 0xA3, 0xBA, 0x67, 0x4E, 0x90, 0xC0, 0x0A, 0xE4, 0x60, 0xCA, 0xB3, 0xE5, 0x60, 0xCB, 0x91, 0x5F, 0x08, @@ -8433,10 +8785,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0F, 0x00, 0x00, 0x69, 0x78, 0x00, 0x13, 0x00, 0x00, 0x70, 0x80, 0x00, 0x13, 0x53, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x53, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Taipei */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD1, 0x97, 0xD3, 0x00, 0xD2, 0x61, 0x7A, 0x70, 0xD3, 0x79, 0x06, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x5A, 0x3A, 0x00, @@ -8452,10 +8805,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, -0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Tashkent */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x83, 0x08, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, @@ -8472,10 +8826,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x54, 0x60, 0x01, 0x13, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x41, 0x53, 0x54, 0x00, 0x54, 0x41, 0x53, 0x53, 0x54, 0x00, 0x55, 0x5A, 0x54, 0x00, 0x55, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x0F, 0x65, 0x61, 0x73, 0x74, 0x20, 0x55, 0x7A, 0x62, 0x65, 0x6B, 0x69, 0x73, 0x74, 0x61, +0x6E, /* Asia/Tbilisi */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xAA, 0x19, 0x99, 0xFC, 0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, @@ -8501,10 +8857,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x10, 0x00, 0x00, 0x46, 0x50, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x10, 0x54, 0x42, 0x4D, 0x54, 0x00, 0x54, 0x42, 0x49, 0x54, 0x00, 0x54, 0x42, 0x49, 0x53, 0x54, 0x00, 0x47, 0x45, 0x54, 0x00, 0x47, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Tehran */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x52, 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, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x9A, 0x6C, 0x7D, 0xC8, 0xD2, 0xDB, 0x12, 0xC8, 0x0E, 0xBB, 0xA2, 0x48, 0x0F, 0x74, 0x2D, 0x40, 0x10, 0x8E, 0x40, 0x30, @@ -8542,10 +8899,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00, 0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Tel_Aviv */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x9E, 0x30, 0x45, 0x88, 0xC8, 0x59, 0xB2, 0xE0, 0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, @@ -8595,46 +8952,49 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x4A, 0x4D, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x49, 0x44, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Thimbu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xD5, 0xE6, 0x15, 0x74, 0x21, 0x61, 0x4D, 0xA8, 0x01, 0x02, 0x00, 0x00, 0x54, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, -0x42, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x42, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Thimphu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xD5, 0xE6, 0x15, 0x74, 0x21, 0x61, 0x4D, 0xA8, 0x01, 0x02, 0x00, 0x00, 0x54, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, -0x42, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x42, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Tokyo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x50, 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, 0x0C, 0xC3, 0xCE, 0x85, 0x70, 0xD7, 0x3E, 0x1E, 0x90, 0xD7, 0xEC, 0x16, 0x80, 0xD8, 0xF9, 0x16, 0x90, 0xD9, 0xCB, 0xF8, 0x80, 0xDB, 0x07, 0x1D, 0x10, 0xDB, 0xAB, 0xDA, 0x80, 0xDC, 0xE6, 0xFF, 0x10, 0xDD, 0x8B, 0xBC, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x43, 0x4A, 0x54, 0x00, 0x4A, -0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Ujung_Pandang */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xA1, 0xF2, 0x5D, 0x90, 0xBA, 0x16, 0xD5, 0x90, 0xCB, 0x88, 0x1D, 0x80, 0xD2, 0x56, 0xEE, 0x70, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x4D, 0x54, 0x00, 0x43, 0x49, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Ulaanbaatar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 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, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x86, 0xD3, 0xEE, 0x4C, 0x0F, 0x0B, 0xDC, 0x90, 0x18, 0xE9, 0xC8, 0x80, 0x19, 0xDA, 0xFC, 0xF0, 0x1A, 0xCC, 0x4D, 0x80, @@ -8654,10 +9014,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x55, 0x4C, 0x41, 0x54, 0x00, 0x55, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, +0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Asia/Ulan_Bator */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x86, 0xD3, 0xEE, 0x4C, 0x0F, 0x0B, 0xDC, 0x90, 0x18, 0xE9, 0xC8, 0x80, 0x19, 0xDA, 0xFC, 0xF0, 0x1A, 0xCC, 0x4D, 0x80, @@ -8677,10 +9038,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x55, 0x4C, 0x41, 0x54, 0x00, 0x55, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Urumqi */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 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, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xBA, 0x64, 0x13, 0x6D, 0xD7, 0x20, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, @@ -8690,19 +9051,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x00, 0x52, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x55, 0x52, 0x55, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x18, 0x6D, +0x6F, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x54, 0x69, 0x62, 0x65, 0x74, 0x20, 0x26, 0x20, 0x58, +0x69, 0x6E, 0x6A, 0x69, 0x61, 0x6E, 0x67, /* Asia/Vientiane */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x41, 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, 0x0C, 0x88, 0x6F, 0x46, 0x50, 0x91, 0x5F, 0xEE, 0xD0, 0x93, 0x85, 0xB1, 0x90, 0xB7, 0x41, 0xBC, 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, -0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x49, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Vladivostok */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0xA7, 0x59, 0x47, 0x50, 0xB5, 0xA3, 0xB6, 0xF0, 0x15, 0x27, 0x45, 0x60, 0x16, 0x18, 0x79, 0xD0, 0x17, 0x08, 0x78, 0xE0, @@ -8746,10 +9110,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xA0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x0F, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, +0x20, 0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Yakutsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0xEA, 0x70, 0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0, 0x17, 0x08, 0x86, 0xF0, @@ -8793,10 +9159,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x16, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x2D, 0x20, 0x4C, 0x65, 0x6E, 0x61, +0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Yekaterinburg */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x12, 0xAD, 0xF0, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xBF, 0x30, @@ -8842,10 +9210,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x15, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x56, 0x45, 0x54, 0x00, 0x53, 0x56, 0x45, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x11, 0x4D, 0x6F, 0x73, 0x63, 0x6F, +0x77, 0x2B, 0x30, 0x32, 0x20, 0x2D, 0x20, 0x55, 0x72, 0x61, 0x6C, 0x73, /* Asia/Yerevan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x9A, 0x48, 0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, @@ -8892,10 +9262,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x38, 0x40, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x45, 0x52, 0x54, 0x00, 0x59, 0x45, 0x52, 0x53, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Atlantic/Azores */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0x91, 0xC1, 0xFC, 0x58, 0x9B, 0x4B, 0x89, 0x90, 0x9B, 0xFE, 0xE3, 0xA0, 0x9C, 0x9D, 0x09, 0x90, 0x9D, 0xC9, 0x9F, 0x90, @@ -8974,10 +9345,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x48, 0x4D, 0x54, 0x00, 0x41, 0x5A, 0x4F, 0x53, 0x54, 0x00, 0x41, 0x5A, 0x4F, 0x54, 0x00, 0x41, 0x5A, 0x4F, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x06, 0x41, 0x7A, 0x6F, +0x72, 0x65, 0x73, /* Atlantic/Bermuda */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x4D, 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, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xB4, 0xC3, 0x1D, 0xD8, 0x08, 0x20, 0xB3, 0x60, 0x09, 0x10, 0x96, 0x50, 0x0A, 0x00, 0x95, 0x60, 0x0A, 0xF0, 0x78, 0x50, @@ -9022,10 +9394,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xC3, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Atlantic/Canary */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 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, 0x76, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0xA6, 0x04, 0x5C, 0xF0, 0xD4, 0x41, 0xF7, 0x20, 0x13, 0x4D, 0x36, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, @@ -9068,19 +9441,22 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x4E, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x43, 0x61, 0x6E, 0x61, 0x72, 0x79, 0x20, 0x49, +0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Atlantic/Cape_Verde */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x56, 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, 0x0D, 0x89, 0x7F, 0x51, 0x8C, 0xCC, 0x95, 0x9C, 0x20, 0xD2, 0x74, 0x7C, 0x10, 0x0B, 0x17, 0xF7, 0x40, 0x01, 0x02, 0x01, 0x03, 0xFF, 0xFF, 0xE9, 0xF4, 0x00, 0x00, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x56, 0x54, 0x00, -0x43, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Atlantic/Faeroe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x8B, 0x6D, 0xA4, 0x58, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, @@ -9121,10 +9497,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF9, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Atlantic/Faroe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4F, 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, 0x73, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x8B, 0x6D, 0xA4, 0x58, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, @@ -9165,10 +9542,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0xF9, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Atlantic/Jan_Mayen */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x09, 0x9B, 0x27, 0xE3, 0x00, 0x9B, 0xD4, 0x7B, 0x60, 0xC8, 0xB7, 0x4D, 0x60, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -9218,10 +9596,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Atlantic/Madeira */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1E, 0x91, 0xC1, 0xF1, 0x58, 0x9B, 0x4B, 0x7B, 0x80, 0x9B, 0xFE, 0xD5, 0x90, 0x9C, 0x9C, 0xFB, 0x80, 0x9D, 0xC9, 0x91, 0x80, @@ -9299,10 +9678,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x15, 0x46, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x44, 0x53, 0x54, 0x00, 0x4D, 0x41, 0x44, 0x54, 0x00, 0x4D, 0x41, 0x44, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x4D, 0x61, 0x64, 0x65, 0x69, 0x72, +0x61, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Atlantic/Reykjavik */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 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, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x8B, 0x60, 0x83, 0x94, 0x9C, 0x91, 0x1E, 0x00, 0x9D, 0xD1, 0x88, 0x90, 0x9E, 0x72, 0x51, 0x80, 0x9F, 0xD5, 0x03, 0x10, @@ -9328,16 +9709,18 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x52, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x53, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Atlantic/South_Georgia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, -0x00, 0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Atlantic/Stanley */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x93, 0x44, 0x5F, 0x3C, 0xC3, 0x4F, 0x5A, 0xC0, 0xC4, 0x36, 0x03, 0x30, 0xC5, 0x2F, 0x3C, 0xC0, 0xC6, 0x15, 0xE5, 0x30, @@ -9381,17 +9764,19 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xC9, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0xFF, 0xFF, 0xE3, 0xE0, 0x01, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x09, 0x53, 0x4D, 0x54, 0x00, 0x46, 0x4B, 0x53, 0x54, 0x00, 0x46, 0x4B, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Atlantic/St_Helena */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x42, 0x9B, 0x58, 0x01, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4A, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/ACT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9440,10 +9825,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Adelaide */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, @@ -9492,10 +9877,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x53, 0x6F, 0x75, +0x74, 0x68, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, /* Australia/Brisbane */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9505,10 +9891,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1B, 0x51, 0x75, 0x65, 0x65, +0x6E, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, +0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/Broken_Hill */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, @@ -9557,10 +9945,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x1C, 0x4E, 0x65, 0x77, 0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, +0x73, 0x20, 0x2D, 0x20, 0x59, 0x61, 0x6E, 0x63, 0x6F, 0x77, 0x69, 0x6E, 0x6E, 0x61, /* Australia/Canberra */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9609,10 +9999,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Currie */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9661,19 +10051,23 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x16, 0x54, 0x61, 0x73, +0x6D, 0x61, 0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x4B, 0x69, 0x6E, 0x67, 0x20, 0x49, 0x73, 0x6C, +0x61, 0x6E, 0x64, /* Australia/Darwin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, -0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x12, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x65, 0x72, +0x72, 0x69, 0x74, 0x6F, 0x72, 0x79, /* Australia/Eucla */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x9C, 0x4E, 0xB8, 0x30, 0x9C, 0xBC, 0x32, 0x84, 0xCB, 0x54, 0xC4, 0x94, 0xCB, 0xC7, 0x69, 0x04, 0xCC, 0xB7, 0x68, 0x14, @@ -9683,10 +10077,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x49, 0xCE, 0x5B, 0x14, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x89, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x89, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x00, 0x00, 0x43, 0x57, -0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x41, +0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x45, 0x75, 0x63, 0x6C, 0x61, +0x20, 0x61, 0x72, 0x65, 0x61, /* Australia/Hobart */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9737,10 +10134,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x19, 0x54, 0x61, 0x73, 0x6D, 0x61, 0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, +0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/LHI */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x14, 0xFE, 0x66, 0xE0, 0x16, 0x38, 0x40, 0xF8, 0x16, 0xE7, 0x8A, 0x68, 0x18, 0x21, 0x5D, 0x78, 0x18, 0xC7, 0x6C, 0x68, @@ -9780,10 +10179,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, 0x01, 0x04, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x04, 0x45, 0x53, -0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Lindeman */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9794,10 +10194,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x1C, 0x51, 0x75, 0x65, 0x65, 0x6E, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, +0x2D, 0x20, 0x48, 0x6F, 0x6C, 0x69, 0x64, 0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x73, /* Australia/Lord_Howe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x14, 0xFE, 0x66, 0xE0, 0x16, 0x38, 0x40, 0xF8, 0x16, 0xE7, 0x8A, 0x68, 0x18, 0x21, 0x5D, 0x78, 0x18, 0xC7, 0x6C, 0x68, @@ -9837,10 +10240,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, 0x01, 0x04, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x04, 0x45, 0x53, -0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x6F, 0x72, 0x64, 0x20, +0x48, 0x6F, 0x77, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Australia/Melbourne */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9889,19 +10294,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x56, 0x69, 0x63, +0x74, 0x6F, 0x72, 0x69, 0x61, /* Australia/North */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, -0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Australia/NSW */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9950,10 +10357,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Perth */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xC2, 0xBC, 0x9C, 0xBC, 0x3D, 0x10, 0xCB, 0x54, 0xCF, 0x20, 0xCB, 0xC7, 0x73, 0x90, 0xCC, 0xB7, 0x72, 0xA0, @@ -9963,10 +10370,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x49, 0xCE, 0x65, 0xA0, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x57, 0x53, -0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x22, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x41, 0x75, +0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, +0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/Queensland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -9976,10 +10386,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/South */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, @@ -10028,10 +10438,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Sydney */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 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, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -10080,10 +10490,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x65, 0x77, +0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x6D, +0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/Tasmania */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -10134,10 +10546,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Victoria */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, @@ -10186,10 +10599,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/West */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xC2, 0xBC, 0x9C, 0xBC, 0x3D, 0x10, 0xCB, 0x54, 0xCF, 0x20, 0xCB, 0xC7, 0x73, 0x90, 0xCC, 0xB7, 0x72, 0xA0, @@ -10199,10 +10612,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x49, 0xCE, 0x65, 0xA0, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x57, 0x53, -0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Yancowinna */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, @@ -10251,12 +10665,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Brazil/Acre */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 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, 0x1D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x86, 0x90, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x96, 0xAA, 0x86, 0x90, 0xB8, 0x0F, 0x66, 0x00, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xF1, 0x50, 0x50, 0xBA, 0xDE, 0x90, 0x40, 0xDA, 0x38, 0xCA, 0x50, 0xDA, 0xEC, 0x16, 0x50, 0xDC, 0x19, 0xFD, 0xD0, 0xDC, 0xB9, 0x75, 0x40, 0xDD, 0xFB, 0x31, 0x50, 0xDE, 0x9B, 0xFA, 0x40, 0xDF, 0xDD, 0xB6, 0x50, 0xE0, 0x54, 0x4F, 0x40, @@ -10264,14 +10679,15 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xF8, 0x51, 0x48, 0x50, 0xF8, 0xC7, 0xE1, 0x40, 0xFA, 0x0A, 0xEE, 0xD0, 0xFA, 0xA9, 0x14, 0xC0, 0xFB, 0xEC, 0x22, 0x50, 0xFC, 0x8B, 0x99, 0xC0, 0x1D, 0xC9, 0xAA, 0x50, 0x1E, 0x78, 0xF3, 0xC0, 0x1F, 0xA0, 0x51, 0xD0, 0x20, 0x33, 0xEB, 0xC0, 0x21, 0x81, 0x85, 0x50, 0x22, 0x0B, 0xE4, 0xC0, +0x48, 0x60, 0x7F, 0x50, 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, 0xC0, -0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x09, 0x4C, -0x4D, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x02, 0x03, 0xFF, 0xFF, 0xC0, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x09, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x43, +0x53, 0x54, 0x00, 0x41, 0x43, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Brazil/DeNoronha */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x65, 0x64, 0xB8, 0x0F, 0x3B, 0xD0, 0xB8, 0xFD, 0x32, 0x90, 0xB9, 0xF1, 0x26, 0x20, 0xBA, 0xDE, 0x66, 0x10, @@ -10288,10 +10704,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xE1, 0x9C, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x01, 0x04, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x4E, 0x53, 0x54, 0x00, 0x46, 0x4E, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Brazil/East */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x72, 0xB4, 0xB8, 0x0F, 0x49, 0xE0, 0xB8, 0xFD, 0x40, 0xA0, 0xB9, 0xF1, 0x34, 0x30, 0xBA, 0xDE, 0x74, 0x20, @@ -10311,21 +10728,21 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3D, 0xC4, 0x91, 0x30, 0x3E, 0x4E, 0xF0, 0xA0, 0x3F, 0x91, 0xFE, 0x30, 0x40, 0x2E, 0xD2, 0xA0, 0x41, 0x86, 0xF8, 0x30, 0x42, 0x17, 0xEF, 0x20, 0x43, 0x51, 0xC2, 0x30, 0x43, 0xF7, 0xD1, 0x20, 0x45, 0x4D, 0x53, 0xB0, 0x45, 0xE0, 0xED, 0xA0, 0x47, 0x11, 0x86, 0x30, 0x47, 0xB7, 0x95, 0x20, -0x48, 0xF1, 0x68, 0x30, 0x49, 0x97, 0x77, 0x20, 0x4A, 0xD1, 0x4A, 0x30, 0x4B, 0x80, 0x93, 0xA0, -0x4C, 0xB1, 0x2C, 0x30, 0x4D, 0x60, 0x75, 0xA0, 0x4E, 0x91, 0x0E, 0x30, 0x4F, 0x40, 0x57, 0xA0, -0x50, 0x7A, 0x2A, 0xB0, 0x51, 0x20, 0x39, 0xA0, 0x52, 0x5A, 0x0C, 0xB0, 0x53, 0x00, 0x1B, 0xA0, -0x54, 0x39, 0xEE, 0xB0, 0x54, 0xDF, 0xFD, 0xA0, 0x56, 0x19, 0xD0, 0xB0, 0x56, 0xC9, 0x1A, 0x20, -0x57, 0xF9, 0xB2, 0xB0, 0x58, 0xA8, 0xFC, 0x20, 0x59, 0xD9, 0x94, 0xB0, 0x5A, 0x88, 0xDE, 0x20, -0x5B, 0xC2, 0xB1, 0x30, 0x5C, 0x68, 0xC0, 0x20, 0x5D, 0xA2, 0x93, 0x30, 0x5E, 0x48, 0xA2, 0x20, -0x5F, 0x82, 0x75, 0x30, 0x60, 0x31, 0xBE, 0xA0, 0x61, 0x62, 0x57, 0x30, 0x62, 0x11, 0xA0, 0xA0, -0x63, 0x42, 0x39, 0x30, 0x63, 0xF1, 0x82, 0xA0, 0x65, 0x22, 0x1B, 0x30, 0x65, 0xD1, 0x64, 0xA0, -0x67, 0x0B, 0x37, 0xB0, 0x67, 0xB1, 0x46, 0xA0, 0x68, 0xEB, 0x19, 0xB0, 0x69, 0x91, 0x28, 0xA0, -0x6A, 0xCA, 0xFB, 0xB0, 0x6B, 0x7A, 0x45, 0x20, 0x6C, 0xAA, 0xDD, 0xB0, 0x6D, 0x5A, 0x27, 0x20, -0x6E, 0x8A, 0xBF, 0xB0, 0x6F, 0x3A, 0x09, 0x20, 0x70, 0x73, 0xDC, 0x30, 0x71, 0x19, 0xEB, 0x20, -0x72, 0x53, 0xBE, 0x30, 0x72, 0xF9, 0xCD, 0x20, 0x74, 0x33, 0xA0, 0x30, 0x74, 0xD9, 0xAF, 0x20, -0x76, 0x13, 0x82, 0x30, 0x76, 0xC2, 0xCB, 0xA0, 0x77, 0xF3, 0x64, 0x30, 0x78, 0xA2, 0xAD, 0xA0, -0x79, 0xD3, 0x46, 0x30, 0x7A, 0x82, 0x8F, 0xA0, 0x7B, 0xBC, 0x62, 0xB0, 0x7C, 0x62, 0x71, 0xA0, -0x7D, 0x9C, 0x44, 0xB0, 0x7E, 0x42, 0x53, 0xA0, 0x7F, 0x7C, 0x26, 0xB0, 0x02, 0x01, 0x02, 0x01, +0x48, 0xFA, 0xA2, 0xB0, 0x49, 0x97, 0x77, 0x20, 0x4A, 0xDA, 0x84, 0xB0, 0x4B, 0x80, 0x93, 0xA0, +0x4C, 0xBA, 0x66, 0xB0, 0x4D, 0x60, 0x75, 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, @@ -10336,10 +10753,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xD4, 0x4C, 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, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Brazil/West */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x1F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x7F, 0x44, 0xB8, 0x0F, 0x57, 0xF0, 0xB8, 0xFD, 0x4E, 0xB0, 0xB9, 0xF1, 0x42, 0x40, 0xBA, 0xDE, 0x82, 0x30, @@ -10353,10 +10770,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0xC7, 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x53, -0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Atlantic */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0xF1, 0xAB, 0xA0, 0x9A, 0xE4, 0xDE, 0xC0, 0x9B, 0xD6, 0x13, 0x30, 0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, @@ -10433,10 +10851,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0xC4, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Central */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x01, 0xFB, 0xE0, 0x9B, 0xC3, 0xBA, 0x50, 0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xC0, 0x3F, 0x70, 0xC2, 0xA0, 0x3B, 0x80, @@ -10500,10 +10919,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Eastern */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0x93, 0x70, 0x9F, 0xC0, 0x31, 0x60, 0xA0, 0x87, 0x2E, 0xC8, 0xA1, 0x9A, 0xB1, 0x40, 0xA2, 0x94, 0x06, 0xF0, @@ -10581,10 +11001,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Canada/East-Saskatchewan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x86, 0xFD, 0x93, 0x1C, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xB5, 0x65, 0x4F, 0xF0, 0xB6, 0x30, 0x48, 0xE0, @@ -10607,10 +11028,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Mountain */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x88, 0xDE, 0xCE, 0xE0, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xA0, 0x98, 0x91, 0x90, 0xA0, 0xD2, 0x85, 0x80, @@ -10664,10 +11086,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Newfoundland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x15, 0x9C, 0xCF, 0x62, 0x0C, 0x9D, 0xA4, 0xE6, 0xFC, 0x9E, 0xB8, 0x7E, 0x8C, 0x9F, 0xC0, 0x1C, 0x7C, 0xA0, 0xB6, 0x88, 0xDC, @@ -10748,10 +11171,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xDC, 0xD8, 0x01, 0x00, 0xFF, 0xFF, 0xCE, 0xC8, 0x00, 0x04, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x08, 0xFF, 0xFF, 0xDC, 0xD8, 0x01, 0x0C, 0xFF, 0xFF, 0xEA, 0xE8, 0x01, 0x10, 0x4E, 0x44, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x44, 0x44, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Pacific */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xB8, 0xBD, 0xA0, 0x9F, 0xC0, 0x5B, 0x90, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, @@ -10815,10 +11239,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, -0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Saskatchewan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x86, 0xFD, 0x93, 0x1C, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xC0, 0x4D, 0x80, 0xB5, 0x65, 0x4F, 0xF0, 0xB6, 0x30, 0x48, 0xE0, @@ -10841,10 +11266,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Canada/Yukon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1D, 0x9E, 0xB8, 0xCB, 0xB0, 0x9F, 0xBB, 0x23, 0xA0, 0xA0, 0xD0, 0x0C, 0xB0, 0xA1, 0xA2, 0xD2, 0x80, 0xCB, 0x89, 0x28, 0xB0, @@ -10891,46 +11317,47 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x15, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x19, 0x59, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x59, 0x57, 0x54, 0x00, 0x59, 0x50, 0x54, 0x00, 0x59, 0x44, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* CET */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 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, 0x0D, 0xA4, 0x63, 0x90, -0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, 0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, -0x12, 0x54, 0x18, 0x90, 0x13, 0x4D, 0x44, 0x10, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, -0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, -0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, -0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, -0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, -0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, -0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, -0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, -0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, -0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, -0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, -0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, -0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, -0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, -0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, -0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, -0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, -0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, -0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, -0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, -0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, -0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, -0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, -0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, -0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, -0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, -0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, -0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, +0xD2, 0x4E, 0x40, 0x90, 0x0D, 0xA4, 0x63, 0x90, 0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, +0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, 0x12, 0x54, 0x18, 0x90, 0x13, 0x4D, 0x44, 0x10, +0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, +0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, @@ -10938,13 +11365,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, -0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, +0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Chile/Continental */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x8F, 0x24, 0x69, 0xC6, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x71, 0x05, 0x46, 0xA1, 0x00, 0x71, 0xC0, 0xB0, 0x5E, 0x77, 0xC6, @@ -11000,10 +11428,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x53, 0x4D, 0x54, 0x00, 0x43, 0x4C, 0x54, 0x00, 0x43, 0x4C, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Chile/EasterIsland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x8F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0xB9, 0xC7, 0x40, 0x88, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD4, 0x1B, 0xC9, 0xB0, 0xFD, 0xD1, 0x3C, 0x40, @@ -11054,10 +11483,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x09, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x09, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x09, 0x45, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, 0x45, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* CST6CDT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -11109,10 +11539,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Cuba */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xAC, 0x62, 0xC2, 0x80, 0xB1, 0xD3, 0x94, 0x50, 0xB2, 0x74, 0x5D, 0x40, 0xC8, 0x5B, 0x66, 0xD0, 0xC8, 0xD3, 0x51, 0x40, @@ -11166,10 +11597,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xB2, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0x48, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* EET */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x0D, 0xA4, 0x63, 0x90, 0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, 0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, @@ -11211,10 +11643,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x01, 0x01, 0x01, 0x01, +0x45, 0x54, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Egypt */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC8, 0x93, 0xB4, 0xE0, 0xC8, 0xFA, 0x7B, 0xD0, 0xC9, 0xFC, 0xEF, 0xE0, 0xCA, 0xC7, 0xE8, 0xD0, 0xCB, 0xCB, 0xAE, 0x60, @@ -11273,10 +11706,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Eire */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x26, 0xB3, 0x91, 0x9B, 0xD6, 0x0B, 0x11, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -11356,16 +11790,18 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* EST */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, -0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* EST5EDT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xCB, 0x88, 0xF0, 0x70, @@ -11417,220 +11853,256 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Etc/GMT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/GMT0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/GMT-0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/GMT+0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/GMT-1 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+1 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xF1, 0xF0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-10 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x30, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+10 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x73, 0x60, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x30, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-11 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x9A, 0xB0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x31, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+11 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x65, 0x50, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-12 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x32, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+12 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x57, 0x40, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x31, 0x32, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-13 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xB6, 0xD0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x33, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x33, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-14 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xC4, 0xE0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x34, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x31, 0x34, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-2 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+2 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xE3, 0xE0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x32, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-3 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x33, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x33, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+3 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xD5, 0xD0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x33, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x33, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-4 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x38, 0x40, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x34, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x34, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+4 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xC7, 0xC0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x34, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x34, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-5 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x46, 0x50, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x35, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x35, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+5 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xB9, 0xB0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x35, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x35, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-6 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x54, 0x60, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x36, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x36, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+6 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xAB, 0xA0, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x36, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x36, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-7 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x62, 0x70, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x37, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x37, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+7 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x37, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x37, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-8 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x70, 0x80, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x38, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x38, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+8 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x8F, 0x80, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x38, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT-9 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7E, 0x90, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x39, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2D, 0x39, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/GMT+9 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x81, 0x70, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x39, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x2B, 0x39, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Etc/Greenwich */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/UCT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x43, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/Universal */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/UTC */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Etc/Zulu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Europe/Amsterdam */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0x9B, 0x0C, 0x2E, 0xEC, 0x9B, 0xD5, 0xD6, 0x5C, 0x9C, 0xD9, 0xB8, 0x0C, 0x9D, 0xA4, 0xBF, 0x0C, 0x9E, 0xA7, 0x25, 0x0C, @@ -11697,10 +12169,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x45, 0x54, 0x00, 0x4E, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x00, +0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Andorra */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x44, 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, 0x6B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0xD4, 0x41, 0xDB, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, @@ -11739,10 +12211,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Athens */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x9B, 0x80, 0x21, 0x80, 0xB9, 0x7C, 0xE9, 0xE0, 0xB9, 0xC6, 0xAF, 0xD0, 0xC9, 0xF2, 0x63, 0xE0, 0xCA, 0x10, 0xA8, 0x50, @@ -11793,10 +12265,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x41, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Belfast */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -11878,111 +12351,114 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Belgrade */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 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, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Berlin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0E, 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, 0xD1, 0x72, 0x16, 0x10, -0xD1, 0xB6, 0x96, 0x00, 0xD2, 0x58, 0xBE, 0x80, 0xD2, 0xA1, 0x4F, 0x10, 0xD3, 0x63, 0x1B, 0x90, -0xD4, 0x4B, 0x23, 0x90, 0xD5, 0x39, 0xC3, 0x10, 0xD5, 0x67, 0xE7, 0x90, 0xD5, 0xA8, 0x73, 0x00, -0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x2C, 0x1A, 0x10, 0xD8, 0x09, 0x96, 0x10, 0xD9, 0x02, 0xC1, 0x90, -0xD9, 0xE9, 0x78, 0x10, 0x12, 0xCE, 0x97, 0xF0, 0x13, 0x4D, 0x44, 0x10, 0x14, 0x33, 0xFA, 0x90, -0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x00, 0x03, 0x02, 0x03, 0x02, 0x05, 0x00, 0x03, 0x02, 0x03, -0x02, 0x03, 0x01, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, -0x43, 0x45, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, +0xD1, 0xB6, 0x96, 0x00, 0xD2, 0x58, 0xBE, 0x80, 0xD2, 0xA1, 0x4F, 0x10, 0xD2, 0xDB, 0x34, 0xF0, +0xD3, 0x63, 0x1B, 0x90, 0xD4, 0x4B, 0x23, 0x90, 0xD5, 0x39, 0xD1, 0x20, 0xD5, 0x67, 0xE7, 0x90, +0xD5, 0xA8, 0x73, 0x00, 0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x2C, 0x1A, 0x10, 0xD8, 0x09, 0x96, 0x10, +0xD9, 0x02, 0xC1, 0x90, 0xD9, 0xE9, 0x78, 0x10, 0x12, 0xCE, 0x97, 0xF0, 0x13, 0x4D, 0x44, 0x10, +0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, +0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x00, 0x03, 0x01, 0x02, 0x03, 0x02, +0x05, 0x00, 0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, +0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Bratislava */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4B, 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, 0x09, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90, @@ -12032,10 +12508,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Europe/Brussels */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x12, 0x98, 0x44, 0x49, 0x80, 0x9B, 0x0C, 0x25, 0x70, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, @@ -12101,10 +12578,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Bucharest */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0xB7, 0xB0, 0xD2, 0x08, 0xB9, 0x3E, 0xF3, 0x60, 0xB9, 0xEF, 0x9C, 0x60, 0xBA, 0xDF, 0x8D, 0x60, 0xBB, 0xCF, 0x7E, 0x60, @@ -12153,67 +12631,69 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x42, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Budapest */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x55, 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, 0x99, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0x30, 0x58, 0x70, 0x9E, 0xA7, 0x29, 0xA0, 0x9F, 0x95, 0xBB, 0x10, 0xA0, 0x9A, 0xD2, 0x20, 0xA1, 0x64, 0x79, 0x90, 0xA2, 0x70, 0x28, 0x20, 0xA3, 0x5A, 0xC5, 0x10, 0xC9, 0xF1, 0x3C, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, -0xD1, 0x99, 0x78, 0xE0, 0xD2, 0x8D, 0x5E, 0x60, 0xD3, 0x50, 0xA6, 0x90, 0xD4, 0x49, 0xD2, 0x10, -0xD5, 0x39, 0xC3, 0x10, 0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x19, 0xA5, 0x10, 0xD8, 0x09, 0x96, 0x10, -0xD9, 0x02, 0xC1, 0x90, 0xD9, 0xE9, 0x78, 0x10, 0xDA, 0xED, 0x2F, 0x90, 0xDB, 0xE6, 0x5B, 0x10, -0xE2, 0xA2, 0xA8, 0xF0, 0xE3, 0x51, 0xF2, 0x60, 0xE4, 0x83, 0xDC, 0x70, 0xE5, 0x33, 0x25, 0xE0, -0xE6, 0x74, 0xE1, 0xF0, 0xE7, 0x11, 0xB6, 0x60, 0xE8, 0x54, 0xD2, 0x00, 0xE8, 0xF1, 0xC2, 0x90, -0x13, 0x4D, 0x36, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, -0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, -0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, -0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, -0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, -0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, -0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, -0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, -0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, -0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, -0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, -0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, -0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, -0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, -0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, -0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, -0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, -0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, -0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, -0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, -0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, -0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, -0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, -0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, -0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, -0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, -0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, -0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, -0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x02, 0x03, 0x02, -0x03, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, -0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x43, 0x45, 0x53, -0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, +0xD0, 0xFA, 0x01, 0x70, 0xD1, 0x99, 0x78, 0xE0, 0xD2, 0x8D, 0x5E, 0x60, 0xD3, 0x50, 0xA6, 0x90, +0xD4, 0x49, 0xD2, 0x10, 0xD5, 0x39, 0xC3, 0x10, 0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x19, 0xA5, 0x10, +0xD8, 0x09, 0x96, 0x10, 0xD9, 0x02, 0xC1, 0x90, 0xD9, 0xE9, 0x78, 0x10, 0xDA, 0xED, 0x2F, 0x90, +0xDB, 0xE6, 0x5B, 0x10, 0xE2, 0xA2, 0xA8, 0xF0, 0xE3, 0x51, 0xF2, 0x60, 0xE4, 0x83, 0xDC, 0x70, +0xE5, 0x33, 0x25, 0xE0, 0xE6, 0x74, 0xE1, 0xF0, 0xE7, 0x11, 0xB6, 0x60, 0xE8, 0x54, 0xD2, 0x00, +0xE8, 0xF1, 0xC2, 0x90, 0x13, 0x4D, 0x36, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, +0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, +0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, +0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, +0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, +0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, +0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, +0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, +0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, +0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, +0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, +0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, +0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, +0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, +0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, +0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, +0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, +0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, +0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, +0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, +0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, +0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, +0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, +0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, +0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, +0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, +0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, +0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, +0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, +0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 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, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Chisinau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x44, 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, 0x8C, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x9E, 0x6B, 0x9F, 0x0C, 0xB7, 0xB0, 0xD2, 0x08, 0xB9, 0x3E, 0xF3, 0x60, 0xB9, 0xEF, 0x9C, 0x60, 0xBA, 0xDF, 0x8D, 0x60, @@ -12269,10 +12749,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, +0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Copenhagen */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x4B, 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, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x1E, 0x8C, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xC8, 0x43, 0x57, 0x70, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -12319,10 +12799,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x05, 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, -0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Dublin */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x9B, 0x26, 0xB3, 0x91, 0x9B, 0xD6, 0x0B, 0x11, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -12402,10 +12883,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Europe/Gibraltar */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x49, 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, 0xC5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -12473,10 +12955,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x11, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x01, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Guernsey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -12558,10 +13041,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Helsinki */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x18, 0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xBF, 0x85, 0xD0, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, @@ -12603,10 +13087,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Isle_of_Man */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -12688,10 +13173,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Istanbul */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x90, 0x8B, 0xF5, 0x98, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xA2, 0x65, 0x63, 0xE0, 0xA3, 0x7B, 0x82, 0x50, @@ -12753,10 +13239,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x54, 0x52, 0x53, 0x54, 0x00, 0x54, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Jersey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -12838,10 +13324,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Kaliningrad */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1A, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90, @@ -12893,10 +13380,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 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 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -12943,10 +13432,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4B, 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, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, +0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Europe/Lisbon */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x10, 0x9B, 0x4B, 0x6D, 0x70, 0x9B, 0xFE, 0xC7, 0x80, 0x9C, 0x9C, 0xED, 0x70, 0x9D, 0xC9, 0x83, 0x70, @@ -13025,56 +13516,58 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x6D, 0x61, 0x69, 0x6E, +0x6C, 0x61, 0x6E, 0x64, /* Europe/Ljubljana */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x49, 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, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/London */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -13156,10 +13649,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Luxembourg */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x16, 0x84, 0xA2, 0xAD, 0xBC, 0x9B, 0x1E, 0x8C, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xEA, 0xA7, 0xE0, 0x9D, 0xA4, 0x99, 0x70, @@ -13227,10 +13721,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Madrid */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x9C, 0xF3, 0xF0, 0x70, 0x9D, 0xBE, 0xF7, 0x70, 0x9E, 0xBA, 0xC5, 0xF0, 0x9F, 0xA0, 0x2A, 0xF0, 0xA0, 0x8E, 0xCA, 0x70, @@ -13289,10 +13784,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x1C, 0x20, 0x01, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x13, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, +0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x6D, 0x61, +0x69, 0x6E, 0x6C, 0x61, 0x6E, 0x64, /* Europe/Malta */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x54, 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, 0xA8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x37, 0xA6, 0xF0, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xC5, 0xCB, 0xF0, 0x9D, 0xB5, 0xBC, 0xF0, 0x9E, 0x89, 0xFE, 0x70, @@ -13350,10 +13846,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, -0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Mariehamn */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x18, 0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xBF, 0x85, 0xD0, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, @@ -13395,10 +13892,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Minsk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0x5E, 0x70, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -13445,10 +13943,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Monaco */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x1B, 0x91, 0x60, 0x50, 0x4F, 0x9B, 0x47, 0x78, 0xF0, 0x9B, 0xD7, 0x2C, 0x70, 0x9C, 0xBC, 0x91, 0x70, 0x9D, 0xC0, 0x48, 0xF0, @@ -13514,10 +14013,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x0E, 0x10, 0x00, 0x17, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x17, 0x50, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Moscow */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8, 0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, @@ -13567,10 +14067,13 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, +0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52, 0x75, 0x73, 0x73, +0x69, 0x61, /* Europe/Nicosia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA5, 0x77, 0x1E, 0xB8, 0x09, 0xED, 0xAF, 0xE0, 0x0A, 0xDD, 0x92, 0xD0, 0x0B, 0xFA, 0x64, 0xE0, 0x0C, 0xBE, 0xC6, 0x50, @@ -13615,10 +14118,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Oslo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x4F, 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, 0x09, 0x9B, 0x27, 0xE3, 0x00, 0x9B, 0xD4, 0x7B, 0x60, 0xC8, 0xB7, 0x4D, 0x60, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -13668,10 +14172,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Europe/Paris */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1B, 0x91, 0x60, 0x50, 0x8B, 0x9B, 0x47, 0x78, 0xF0, 0x9B, 0xD7, 0x2C, 0x70, 0x9C, 0xBC, 0x91, 0x70, 0x9D, 0xC0, 0x48, 0xF0, @@ -13738,56 +14243,58 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x11, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x50, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Podgorica */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x45, 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, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Prague */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x5A, 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, 0x09, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90, @@ -13837,10 +14344,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Europe/Riga */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x22, 0x9E, 0xB9, 0x88, 0x08, 0x9F, 0x84, 0x8F, 0x08, 0xA0, 0x88, 0x46, 0x88, 0xA0, 0xCB, 0x83, 0x08, 0xAD, 0xE7, 0xF1, 0xE8, @@ -13891,10 +14399,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x53, 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, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Rome */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x54, 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, 0xAA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x37, 0xA6, 0xF0, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xC5, 0xCB, 0xF0, 0x9D, 0xB5, 0xBC, 0xF0, 0x9E, 0x89, 0xFE, 0x70, @@ -13953,10 +14462,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Samara */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x00, 0x26, 0x9C, 0xB5, 0xA4, 0x0B, 0x50, 0xBE, 0x4C, 0x26, 0xC0, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, @@ -14004,10 +14514,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4B, 0x55, 0x59, 0x53, 0x54, 0x00, 0x4B, 0x55, 0x59, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x1C, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x31, 0x20, 0x2D, 0x20, 0x53, 0x61, 0x6D, 0x61, +0x72, 0x61, 0x2C, 0x20, 0x55, 0x64, 0x6D, 0x75, 0x72, 0x74, 0x69, 0x61, /* Europe/San_Marino */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4D, 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, 0xAA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x37, 0xA6, 0xF0, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xC5, 0xCB, 0xF0, 0x9D, 0xB5, 0xBC, 0xF0, 0x9E, 0x89, 0xFE, 0x70, @@ -14066,56 +14578,58 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Sarajevo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 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, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Simferopol */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -14164,105 +14678,109 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x63, 0x65, 0x6E, +0x74, 0x72, 0x61, 0x6C, 0x20, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, /* Europe/Skopje */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4B, 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, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Sofia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x12, 0xCC, 0xE7, 0x4B, 0x10, +0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x12, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, -0xD1, 0x72, 0x24, 0x20, 0x11, 0x63, 0xEF, 0x50, 0x12, 0x55, 0x3F, 0xE0, 0x13, 0x4D, 0x0B, 0xD0, -0x14, 0x35, 0x21, 0xE0, 0x15, 0x2C, 0xED, 0xD0, 0x16, 0x13, 0xC0, 0x70, 0x17, 0x0C, 0xCF, 0xD0, -0x17, 0xF3, 0xB0, 0x80, 0x18, 0xE3, 0xA1, 0x80, 0x19, 0xD3, 0x92, 0x80, 0x1A, 0xC3, 0x83, 0x80, -0x1B, 0xBC, 0xAF, 0x00, 0x1C, 0xAC, 0xA0, 0x00, 0x1D, 0x9C, 0x91, 0x00, 0x1E, 0x8C, 0x82, 0x00, -0x1F, 0x7C, 0x73, 0x00, 0x20, 0x6C, 0x64, 0x00, 0x21, 0x5C, 0x55, 0x00, 0x22, 0x4C, 0x46, 0x00, -0x23, 0x3C, 0x37, 0x00, 0x24, 0x2C, 0x28, 0x00, 0x25, 0x1C, 0x19, 0x00, 0x26, 0x0C, 0x0A, 0x00, -0x27, 0x05, 0x35, 0x80, 0x27, 0x7F, 0xB4, 0xE0, 0x27, 0xF5, 0x0A, 0x60, 0x28, 0xE4, 0xED, 0x50, -0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, -0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0x92, 0x60, 0x30, 0x64, 0x75, 0x50, -0x31, 0x5D, 0xAE, 0xE0, 0x32, 0x72, 0x7B, 0xD0, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, -0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, -0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, -0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, -0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, -0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, -0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, -0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, -0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, -0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, -0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, -0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, -0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, -0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, -0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, -0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, -0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, -0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, -0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, -0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, -0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x01, 0x02, 0x01, 0x02, 0x01, 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, 0x00, 0x03, -0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x1C, -0x20, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, -0x0D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x45, 0x45, 0x54, -0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0xD0, 0xFA, 0x01, 0x70, 0xD1, 0x72, 0x24, 0x20, 0x11, 0x63, 0xEF, 0x50, 0x12, 0x55, 0x3F, 0xE0, +0x13, 0x4D, 0x0B, 0xD0, 0x14, 0x35, 0x21, 0xE0, 0x15, 0x2C, 0xED, 0xD0, 0x16, 0x13, 0xC0, 0x70, +0x17, 0x0C, 0xCF, 0xD0, 0x17, 0xF3, 0xB0, 0x80, 0x18, 0xE3, 0xA1, 0x80, 0x19, 0xD3, 0x92, 0x80, +0x1A, 0xC3, 0x83, 0x80, 0x1B, 0xBC, 0xAF, 0x00, 0x1C, 0xAC, 0xA0, 0x00, 0x1D, 0x9C, 0x91, 0x00, +0x1E, 0x8C, 0x82, 0x00, 0x1F, 0x7C, 0x73, 0x00, 0x20, 0x6C, 0x64, 0x00, 0x21, 0x5C, 0x55, 0x00, +0x22, 0x4C, 0x46, 0x00, 0x23, 0x3C, 0x37, 0x00, 0x24, 0x2C, 0x28, 0x00, 0x25, 0x1C, 0x19, 0x00, +0x26, 0x0C, 0x0A, 0x00, 0x27, 0x05, 0x35, 0x80, 0x27, 0x7F, 0xB4, 0xE0, 0x27, 0xF5, 0x0A, 0x60, +0x28, 0xE4, 0xED, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, +0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0x92, 0x60, +0x30, 0x64, 0x75, 0x50, 0x31, 0x5D, 0xAE, 0xE0, 0x32, 0x72, 0x7B, 0xD0, 0x33, 0x3D, 0xBB, 0x10, +0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, +0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, +0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, +0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, +0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, +0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, +0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, +0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, +0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, +0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, +0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, +0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, +0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, +0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, +0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, +0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, +0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, +0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, +0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, +0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, +0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, +0x00, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, +0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x07, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x45, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, +0x43, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Stockholm */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 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, 0x76, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x1E, 0x8C, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x13, 0x4D, 0x44, 0x10, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, @@ -14304,10 +14822,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Tallinn */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x45, 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, 0x7C, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x9E, 0x59, 0x2D, 0xCC, 0x9E, 0xB9, 0x90, 0x90, 0x9F, 0x84, 0x97, 0x90, 0xA1, 0x00, 0x2B, 0x70, 0xA4, 0x73, 0x6F, 0x4C, @@ -14357,10 +14875,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x19, 0x54, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Tirane */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x96, 0xAA, 0x34, 0x68, 0xC8, 0x6D, 0x87, 0x70, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCD, 0xB8, 0xE9, 0x90, @@ -14407,10 +14926,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0x00, 0x00, 0x12, 0x98, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Tiraspol */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x8C, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x9E, 0x6B, 0x9F, 0x0C, 0xB7, 0xB0, 0xD2, 0x08, 0xB9, 0x3E, 0xF3, 0x60, 0xB9, 0xEF, 0x9C, 0x60, 0xBA, 0xDF, 0x8D, 0x60, @@ -14466,10 +14986,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, +0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Uzhgorod */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, @@ -14517,10 +15037,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x11, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x52, +0x75, 0x74, 0x68, 0x65, 0x6E, 0x69, 0x61, /* Europe/Vaduz */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x49, 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, 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, @@ -14560,10 +15081,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Vatican */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 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, 0xAA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x37, 0xA6, 0xF0, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xC5, 0xCB, 0xF0, 0x9D, 0xB5, 0xBC, 0xF0, 0x9E, 0x89, 0xFE, 0x70, @@ -14622,10 +15144,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Europe/Vienna */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x54, 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, 0x8C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90, @@ -14675,10 +15198,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Vilnius */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x22, 0x9C, 0x4F, 0x1F, 0x50, 0xA1, 0x85, 0x4A, 0x98, 0xA2, 0xF1, 0x30, 0xF0, 0xA3, 0x66, 0x78, 0x60, 0xC8, 0xAC, 0xCF, 0x70, @@ -14729,10 +15252,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x53, 0x4B, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Volgograd */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 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, 0x75, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0xA1, 0xF5, 0x46, 0xDC, 0xAB, 0xD8, 0x86, 0x50, 0xB5, 0xA4, 0x0B, 0x50, 0xF0, 0xB0, 0x4C, 0x40, 0x15, 0x27, 0x99, 0xC0, @@ -14778,10 +15301,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x53, 0x41, 0x54, 0x00, 0x53, 0x54, 0x41, 0x54, 0x00, 0x56, 0x4F, 0x4C, 0x53, 0x54, 0x00, 0x56, 0x4F, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x43, 0x61, +0x73, 0x70, 0x69, 0x61, 0x6E, 0x20, 0x53, 0x65, 0x61, /* Europe/Warsaw */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x99, 0xA8, 0x2A, 0xD0, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, @@ -14799,60 +15324,8 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x12, 0x54, 0x0A, 0x80, 0x13, 0x4D, 0x36, 0x00, 0x14, 0x33, 0xEC, 0x80, 0x15, 0x23, 0xDD, 0x80, 0x16, 0x13, 0xCE, 0x80, 0x17, 0x03, 0xBF, 0x80, 0x17, 0xF3, 0xB0, 0x80, 0x18, 0xE3, 0xA1, 0x80, 0x19, 0xD3, 0x92, 0x80, 0x1A, 0xC3, 0x83, 0x80, 0x1B, 0xBC, 0xAF, 0x00, 0x1C, 0xAC, 0xA0, 0x00, -0x1D, 0x9C, 0x91, 0x00, 0x1E, 0x8C, 0x82, 0x00, 0x1F, 0x7C, 0x73, 0x00, 0x20, 0x6C, 0x64, 0x00, -0x21, 0x5C, 0x55, 0x00, 0x21, 0xDA, 0xD6, 0xF0, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, -0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, -0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, -0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, -0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, -0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, -0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, -0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, -0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, -0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, -0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, -0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, -0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, -0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, -0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, -0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, -0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, -0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, -0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, -0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, -0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, -0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, -0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, -0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x03, 0x04, 0x03, 0x07, 0x05, -0x06, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, -0x00, 0x13, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, -0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x2A, -0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x12, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x57, 0x4D, 0x54, 0x00, 0x43, -0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, - -/* Europe/Zagreb */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 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, 0x09, 0xCA, 0x02, 0x35, 0xE0, -0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, -0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0x45, 0x5F, 0x70, -0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, -0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, -0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, +0x1D, 0x9C, 0x91, 0x00, 0x1E, 0x8C, 0x82, 0x00, 0x1F, 0x7C, 0x73, 0x00, 0x20, 0x6C, 0x64, 0x00, +0x21, 0x5C, 0x55, 0x00, 0x21, 0xDA, 0xD6, 0xF0, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, @@ -14877,21 +15350,75 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, -0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x00, 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, 0x05, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x03, 0x04, 0x03, 0x07, 0x05, +0x06, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x02, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, +0x00, 0x13, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x12, 0x00, +0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x57, 0x4D, 0x54, 0x00, 0x43, +0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, + +/* Europe/Zagreb */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x52, 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, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x02, 0x35, 0xE0, +0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, +0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0x18, 0x45, 0x5F, 0x70, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 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, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Europe/Zaporozhye */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xA3, 0x30, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xAA, 0xE7, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, @@ -14939,64 +15466,69 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0x43, 0x55, 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, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x2E, 0x5A, 0x61, 0x70, 0x6F, 0x72, 0x6F, 0x7A, 0x68, 0x27, 0x79, 0x65, 0x2C, 0x20, +0x45, 0x20, 0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, 0x20, 0x2F, 0x20, 0x5A, 0x61, 0x70, 0x6F, +0x72, 0x69, 0x7A, 0x68, 0x69, 0x61, 0x2C, 0x20, 0x45, 0x20, 0x4C, 0x75, 0x68, 0x61, 0x6E, 0x73, +0x6B, /* Europe/Zurich */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x48, 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, 0x78, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xC9, 0x24, 0xC7, 0xF0, -0xC9, 0x72, 0x82, 0x60, 0xCA, 0x16, 0x26, 0x90, 0xCA, 0xE1, 0x03, 0x60, 0xCB, 0xF6, 0x08, 0x90, -0xCC, 0xC0, 0xE5, 0x60, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, -0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, -0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, -0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, -0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, -0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, -0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, -0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, -0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, -0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, -0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, -0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, -0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, -0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, -0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, -0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, -0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, -0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, -0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, -0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, -0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, -0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, -0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, -0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, -0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, -0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, -0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, -0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, -0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xCA, 0x17, 0x6A, 0x00, +0xCA, 0xE2, 0x71, 0x00, 0xCB, 0xF7, 0x4C, 0x00, 0xCC, 0xC2, 0x53, 0x00, 0x15, 0x23, 0xEB, 0x90, +0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, +0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, +0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, +0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, +0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, +0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, +0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, +0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, +0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, +0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, +0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, +0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, +0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, +0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, +0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, +0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, +0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, +0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, +0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, +0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, +0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, +0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, +0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, +0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, +0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, +0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, +0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, +0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 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, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x43, 0x45, 0x53, 0x54, -0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x05, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Factory */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x7A, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x2D, 0x2D, 0x73, 0x65, 0x65, 0x20, 0x7A, 0x69, 0x63, 0x20, 0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 0x20, 0x70, 0x61, -0x67, 0x65, 0x00, 0x00, 0x00, +0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* GB */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -15078,10 +15610,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* GB-Eire */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, @@ -15163,40 +15696,46 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* GMT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* GMT0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* GMT-0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* GMT+0 */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Greenwich */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Hongkong */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x85, 0x69, 0x5A, 0xFC, 0xD3, 0x6A, 0xB7, 0x38, 0xD4, 0x93, 0x4A, 0xA8, 0xD5, 0x42, 0xB0, 0x38, 0xD6, 0x9A, 0xB9, 0xA8, @@ -15222,16 +15761,18 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x6B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, -0x48, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x48, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* HST */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, -0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Iceland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x8B, 0x60, 0x83, 0x94, 0x9C, 0x91, 0x1E, 0x00, 0x9D, 0xD1, 0x88, 0x90, 0x9E, 0x72, 0x51, 0x80, 0x9F, 0xD5, 0x03, 0x10, @@ -15257,88 +15798,121 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x52, 0x4D, 0x54, 0x00, 0x49, 0x53, 0x53, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Antananarivo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 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, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xF3, 0xCD, 0xF4, 0xE2, 0x33, 0xC0, 0xC0, 0xE2, 0xAB, 0xB9, 0x40, 0x01, 0x02, 0x03, 0x00, 0x00, 0x2C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Indian/Chagos */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x89, 0x7E, 0xF7, 0x9C, 0x30, 0xE6, 0xDD, 0xB0, 0x01, 0x02, 0x00, 0x00, 0x43, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4F, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Indian/Christmas */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x00, 0x43, 0x58, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x43, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Indian/Cocos */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x5B, 0x68, -0x00, 0x00, 0x43, 0x43, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x43, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Indian/Comoro */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD1, 0xF0, 0x01, 0x00, 0x00, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Kerguelen */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x62, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x54, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x54, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Mahe */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x88, 0x64, 0xE6, 0x84, 0x01, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x53, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Maldives */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xED, 0x2F, 0xC3, 0x98, 0x01, 0x00, 0x00, 0x44, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x4D, 0x4D, 0x54, -0x00, 0x4D, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4D, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Mauritius */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x89, 0x7F, 0x05, 0x98, -0x01, 0x00, 0x00, 0x35, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x4D, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x89, 0x7F, 0x05, 0x98, +0x18, 0x05, 0xED, 0x40, 0x18, 0xDB, 0x72, 0x30, 0x49, 0x03, 0x96, 0xE0, 0x49, 0xCE, 0x9D, 0xE0, +0x4A, 0xE3, 0x78, 0xE0, 0x4B, 0xAE, 0x7F, 0xE0, 0x4C, 0xCC, 0x95, 0x60, 0x4D, 0x8E, 0x61, 0xE0, +0x4E, 0xAC, 0x77, 0x60, 0x4F, 0x6E, 0x43, 0xE0, 0x50, 0x8C, 0x59, 0x60, 0x51, 0x57, 0x60, 0x60, +0x52, 0x6C, 0x3B, 0x60, 0x53, 0x37, 0x42, 0x60, 0x54, 0x4C, 0x1D, 0x60, 0x55, 0x17, 0x24, 0x60, +0x56, 0x2B, 0xFF, 0x60, 0x56, 0xF7, 0x06, 0x60, 0x58, 0x15, 0x1B, 0xE0, 0x58, 0xD6, 0xE8, 0x60, +0x59, 0xF4, 0xFD, 0xE0, 0x5A, 0xB6, 0xCA, 0x60, 0x5B, 0xD4, 0xDF, 0xE0, 0x5C, 0x9F, 0xE6, 0xE0, +0x5D, 0xB4, 0xC1, 0xE0, 0x5E, 0x7F, 0xC8, 0xE0, 0x5F, 0x94, 0xA3, 0xE0, 0x60, 0x5F, 0xAA, 0xE0, +0x61, 0x7D, 0xC0, 0x60, 0x62, 0x3F, 0x8C, 0xE0, 0x63, 0x5D, 0xA2, 0x60, 0x64, 0x1F, 0x6E, 0xE0, +0x65, 0x3D, 0x84, 0x60, 0x66, 0x08, 0x8B, 0x60, 0x67, 0x1D, 0x66, 0x60, 0x67, 0xE8, 0x6D, 0x60, +0x68, 0xFD, 0x48, 0x60, 0x69, 0xC8, 0x4F, 0x60, 0x6A, 0xDD, 0x2A, 0x60, 0x6B, 0xA8, 0x31, 0x60, +0x6C, 0xC6, 0x46, 0xE0, 0x6D, 0x88, 0x13, 0x60, 0x6E, 0xA6, 0x28, 0xE0, 0x6F, 0x67, 0xF5, 0x60, +0x70, 0x86, 0x0A, 0xE0, 0x71, 0x51, 0x11, 0xE0, 0x72, 0x65, 0xEC, 0xE0, 0x73, 0x30, 0xF3, 0xE0, +0x74, 0x45, 0xCE, 0xE0, 0x75, 0x10, 0xD5, 0xE0, 0x76, 0x2E, 0xEB, 0x60, 0x76, 0xF0, 0xB7, 0xE0, +0x78, 0x0E, 0xCD, 0x60, 0x78, 0xD0, 0x99, 0xE0, 0x79, 0xEE, 0xAF, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, +0x7B, 0xCE, 0x91, 0x60, 0x7C, 0x99, 0x98, 0x60, 0x7D, 0xAE, 0x73, 0x60, 0x7E, 0x79, 0x7A, 0x60, +0x7F, 0x8E, 0x55, 0x60, 0x02, 0x01, 0x02, 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, 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, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x00, 0x00, 0x35, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x01, 0x04, 0x00, 0x00, +0x38, 0x40, 0x00, 0x09, 0x00, 0x00, 0x46, 0x50, 0x01, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x09, +0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x55, 0x53, 0x54, 0x00, 0x4D, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Indian/Mayotte */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x59, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD0, 0x18, 0x01, 0x00, 0x00, 0x2A, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x45, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Indian/Reunion */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xCC, 0x39, 0x80, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x52, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x52, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Iran */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x9A, 0x6C, 0x7D, 0xC8, 0xD2, 0xDB, 0x12, 0xC8, 0x0E, 0xBB, 0xA2, 0x48, 0x0F, 0x74, 0x2D, 0x40, 0x10, 0x8E, 0x40, 0x30, @@ -15376,10 +15950,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00, 0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Israel */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x9E, 0x30, 0x45, 0x88, 0xC8, 0x59, 0xB2, 0xE0, 0xCC, 0xE5, 0xC1, 0x50, 0xCD, 0xAC, 0xFE, 0x00, 0xCE, 0xC6, 0xF4, 0xD0, @@ -15429,10 +16003,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0C, 0x4A, 0x4D, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x49, 0x44, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Jamaica */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x0F, 0xB5, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x09, 0xAD, 0x94, 0xF0, 0x0A, 0xF0, 0x86, 0x60, @@ -15443,28 +16017,31 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, -0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Japan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x0C, 0xC3, 0xCE, 0x85, 0x70, 0xD7, 0x3E, 0x1E, 0x90, 0xD7, 0xEC, 0x16, 0x80, 0xD8, 0xF9, 0x16, 0x90, 0xD9, 0xCB, 0xF8, 0x80, 0xDB, 0x07, 0x1D, 0x10, 0xDB, 0xAB, 0xDA, 0x80, 0xDC, 0xE6, 0xFF, 0x10, 0xDD, 0x8B, 0xBC, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x43, 0x4A, 0x54, 0x00, 0x4A, -0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Kwajalein */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x86, 0x1B, 0x50, 0x2C, 0x74, 0xBC, 0xC0, 0x01, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x40, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x4D, 0x48, 0x54, 0x00, 0x4B, 0x57, 0x41, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Libya */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xA1, 0xF2, 0xC1, 0x24, 0xDD, 0xBB, 0xB1, 0x10, 0xDE, 0x23, 0xAD, 0x60, 0xE1, 0x78, 0xD2, 0x10, 0xE1, 0xE7, 0x65, 0xE0, @@ -15478,46 +16055,47 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x0C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, -0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* MET */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 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, 0x0D, 0xA4, 0x63, 0x90, -0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, 0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, -0x12, 0x54, 0x18, 0x90, 0x13, 0x4D, 0x44, 0x10, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, -0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, -0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, -0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, -0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, -0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, -0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, -0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, -0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, -0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, -0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, -0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, -0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, -0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, -0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, -0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, -0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, -0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, -0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, -0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, -0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, -0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, -0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, -0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, -0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, -0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, -0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, -0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, +0xD2, 0x4E, 0x40, 0x90, 0x0D, 0xA4, 0x63, 0x90, 0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, +0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, 0x12, 0x54, 0x18, 0x90, 0x13, 0x4D, 0x44, 0x10, +0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, +0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, @@ -15525,13 +16103,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, -0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x05, 0x4D, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x4D, 0x45, 0x53, 0x54, +0x00, 0x4D, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Mexico/BajaNorte */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xA5, 0xB6, 0xF6, 0x80, 0xA9, 0x79, 0x4F, 0x70, 0xAF, 0xF2, 0x7C, 0xF0, 0xB6, 0x66, 0x64, 0x70, 0xB7, 0x1B, 0x10, 0x00, @@ -15584,10 +16163,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Mexico/BajaSur */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -15622,10 +16202,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x3C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Mexico/General */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xA5, 0xB6, 0xE8, 0x70, 0xAF, 0xF2, 0x6E, 0xE0, 0xB6, 0x66, 0x56, 0x60, 0xB7, 0x43, 0xD2, 0x60, 0xB8, 0x0C, 0x36, 0x60, @@ -15662,16 +16243,17 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* MST */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* MST7MDT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, @@ -15723,10 +16305,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Navajo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xA2, 0x65, 0xFE, 0x90, @@ -15780,10 +16363,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, -0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* NZ */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x9B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0xB4, 0xB2, 0xE8, 0xB1, 0x51, 0x87, 0x58, 0xB2, 0x78, 0xE5, 0x68, 0xB3, 0x43, 0xE5, 0x60, 0xB4, 0x58, 0xC7, 0x68, @@ -15838,10 +16422,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0xA8, 0xC0, 0x01, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0A, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* NZ-CHAT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xE7, 0x8B, 0xC2, 0x04, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, @@ -15886,18 +16470,20 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAB, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x04, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, 0x43, 0x48, -0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Apia */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x57, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x91, 0x05, 0xFC, 0x00, 0xDA, 0x62, 0x04, 0x38, 0x01, 0x02, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, -0x00, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Auckland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x5A, 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, 0x9B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0xB4, 0xB2, 0xE8, 0xB1, 0x51, 0x87, 0x58, 0xB2, 0x78, 0xE5, 0x68, 0xB3, 0x43, 0xE5, 0x60, 0xB4, 0x58, 0xC7, 0x68, @@ -15952,10 +16538,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0xA8, 0xC0, 0x01, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0A, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x6D, 0x6F, +0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Pacific/Chatham */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x5A, 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, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xE7, 0x8B, 0xC2, 0x04, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, @@ -16000,10 +16587,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAB, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x04, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, 0x43, 0x48, -0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6D, 0x20, +0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Easter */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4C, 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, 0x8F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F, 0xB9, 0xC7, 0x40, 0x88, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD4, 0x1B, 0xC9, 0xB0, 0xFD, 0xD1, 0x3C, 0x40, @@ -16054,10 +16643,12 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x09, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x09, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x09, 0x45, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, 0x45, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, +0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x1C, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, +0x26, 0x20, 0x53, 0x61, 0x6C, 0x61, 0x20, 0x79, 0x20, 0x47, 0x6F, 0x6D, 0x65, 0x7A, /* Pacific/Efate */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x55, 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, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x92, 0xF5, 0xC2, 0xB4, 0x19, 0xD2, 0xF7, 0xD0, 0x1A, 0xC2, 0xDA, 0xC0, 0x1B, 0xDA, 0x66, 0xD0, 0x1C, 0xA2, 0xBC, 0xC0, @@ -16068,68 +16659,79 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x9D, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x55, 0x53, 0x54, 0x00, -0x56, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x56, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Enderbury */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x12, 0x56, 0x04, 0xC0, 0x2F, 0x06, 0x8B, 0x30, 0x01, 0x02, 0xFF, 0xFF, 0x57, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x00, 0x50, 0x48, 0x4F, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x50, +0x68, 0x6F, 0x65, 0x6E, 0x69, 0x78, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Fakaofo */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, -0x00, 0x00, 0x54, 0x4B, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Fiji */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x05, 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, 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, +0x46, 0x4A, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Funafuti */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x54, 0x56, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Galapagos */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x45, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xB6, 0xA4, 0x4C, 0x80, 0x1E, 0x18, 0xC4, 0x50, 0x01, 0x02, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x43, 0x54, 0x00, -0x47, 0x41, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0x41, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x11, 0x47, 0x61, 0x6C, 0x61, 0x70, 0x61, 0x67, 0x6F, 0x73, +0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Gambier */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x94, 0x50, 0x48, 0x04, 0x01, 0xFF, 0xFF, 0x81, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x47, 0x41, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x47, 0x61, 0x6D, 0x62, 0x69, 0x65, 0x72, 0x20, 0x49, 0x73, +0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Guadalcanal */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x94, 0x4F, 0x33, 0x8C, 0x01, 0x00, 0x00, 0x95, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x53, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Guam */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x47, 0x53, 0x54, -0x00, 0x43, 0x68, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x43, 0x68, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Honolulu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0xBB, 0x05, 0x43, 0x48, 0xBB, 0x20, 0xE4, 0xB8, 0xCB, 0x89, 0x3D, 0xC8, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x49, 0x38, @@ -16137,87 +16739,99 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x04, 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x08, 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x0C, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x48, 0x57, 0x54, 0x00, 0x48, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, +0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x06, 0x48, 0x61, +0x77, 0x61, 0x69, 0x69, /* Pacific/Johnston */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, -0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x0E, 0x4A, 0x6F, 0x68, 0x6E, 0x73, 0x74, 0x6F, 0x6E, 0x20, 0x41, 0x74, 0x6F, +0x6C, 0x6C, /* Pacific/Kiritimati */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x12, 0x55, 0xF2, 0x00, 0x2F, 0x06, 0x7D, 0x20, 0x01, 0x02, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xE0, 0x00, 0x00, 0x4C, 0x49, 0x4E, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x4C, +0x69, 0x6E, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Kosrae */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0xFF, 0x86, 0x1B, 0x50, 0x36, 0x8B, 0x67, 0x40, 0x01, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x4B, 0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x4B, 0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x06, 0x4B, 0x6F, 0x73, 0x72, 0x61, 0x65, /* Pacific/Kwajalein */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x86, 0x1B, 0x50, 0x2C, 0x74, 0xBC, 0xC0, 0x01, 0x02, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0x57, 0x40, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x4D, 0x48, 0x54, 0x00, 0x4B, 0x57, 0x41, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x09, 0x4B, 0x77, 0x61, 0x6A, 0x61, 0x6C, 0x65, 0x69, 0x6E, /* Pacific/Majuro */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0xFF, 0x86, 0x1B, 0x50, 0x01, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x00, 0x4D, 0x48, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x0E, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Pacific/Marquesas */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x94, 0x50, 0x4C, 0x48, 0x01, 0xFF, 0xFF, 0x7D, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x68, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x4D, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4D, 0x41, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x11, 0x4D, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x61, 0x73, 0x20, +0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Midway */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x4D, 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, 0x10, 0xE6, 0x75, 0x8A, 0xB0, 0xE6, 0xED, 0x75, 0x20, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x00, 0x02, 0x03, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x08, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0C, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x44, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x69, 0x64, 0x77, +0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Nauru */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x52, 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, 0x0C, 0xA3, 0xE7, 0x2B, 0x04, 0xCB, 0xB4, 0xBF, 0x48, 0xD0, 0x42, 0x50, 0x70, 0x11, 0x8B, 0x04, 0xC8, 0x01, 0x02, 0x01, 0x03, 0x00, 0x00, 0x9C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x52, 0x54, 0x00, -0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Niue */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0xDC, 0x43, 0x35, 0x60, 0x10, 0x74, 0xCA, 0x38, 0x01, 0x02, 0xFF, 0xFF, 0x60, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x00, 0x4E, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Norfolk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x41, 0xF8, 0x80, 0x01, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, 0x00, 0x04, 0x4E, 0x4D, 0x54, -0x00, 0x4E, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4E, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Noumea */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x92, 0xF5, 0xC4, 0x74, 0x0E, 0xE6, 0xBA, 0x50, 0x0F, 0x56, 0xBB, 0xC0, 0x10, 0xC6, 0x9C, 0x50, 0x11, 0x37, 0xEF, 0x40, @@ -16225,45 +16839,52 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x9C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x43, 0x53, 0x54, 0x00, 0x4E, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Pacific/Pago_Pago */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, 0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Palau */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, -0x00, 0x00, 0x50, 0x57, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x50, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Pitcairn */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x35, 0x44, 0x42, 0x08, 0x01, 0xFF, 0xFF, 0x88, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0x50, 0x4E, 0x54, -0x00, 0x50, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x50, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Ponape */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, -0x00, 0x00, 0x50, 0x4F, 0x4E, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x50, 0x4F, 0x4E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x10, 0x50, 0x6F, 0x6E, 0x61, 0x70, 0x65, 0x20, 0x28, 0x50, 0x6F, 0x68, +0x6E, 0x70, 0x65, 0x69, 0x29, /* Pacific/Port_Moresby */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x00, 0x50, 0x47, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x50, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Rarotonga */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4B, 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, 0x1A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x10, 0xAC, 0x1B, 0x28, 0x11, 0x3F, 0xB5, 0x18, 0x12, 0x79, 0x81, 0x20, 0x13, 0x1F, 0x97, 0x18, 0x14, 0x59, 0x63, 0x20, @@ -16276,41 +16897,47 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x6C, 0x58, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x00, 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x04, 0x43, 0x4B, 0x54, 0x00, 0x43, 0x4B, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Saipan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x86, 0x37, 0x70, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x02, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x68, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Pacific/Samoa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, 0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Tahiti */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x94, 0x50, 0x55, 0xB8, 0x01, 0xFF, 0xFF, 0x73, 0xC8, 0x00, 0x00, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x54, 0x41, 0x48, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x54, 0x41, 0x48, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x53, 0x6F, 0x63, 0x69, 0x65, 0x74, 0x79, 0x20, 0x49, 0x73, +0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Tarawa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x47, 0x49, 0x4C, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x47, 0x49, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x0F, 0x47, 0x69, 0x6C, 0x62, 0x65, 0x72, 0x74, 0x20, 0x49, 0x73, 0x6C, +0x61, 0x6E, 0x64, 0x73, /* Pacific/Tongatapu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0xC9, 0x73, 0x42, 0x90, 0x37, 0xFB, 0x47, 0xD0, 0x38, 0xD3, 0x7D, 0xD0, 0x3A, 0x04, 0x08, 0x50, 0x3A, 0x72, 0xB8, 0x40, @@ -16318,34 +16945,40 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0xAD, 0x70, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x04, 0x54, 0x4F, 0x54, 0x00, 0x54, 0x4F, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Truk */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x00, 0x54, 0x52, 0x55, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0x52, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x14, 0x54, 0x72, 0x75, 0x6B, 0x20, 0x28, 0x43, 0x68, 0x75, 0x75, 0x6B, +0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x59, 0x61, 0x70, /* Pacific/Wake */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x57, 0x41, 0x4B, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x57, 0x41, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x0B, 0x57, 0x61, 0x6B, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, + /* Pacific/Wallis */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x57, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x00, 0x57, 0x46, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x57, 0x46, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Yap */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x00, 0x54, 0x52, 0x55, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0x52, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Poland */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x16, 0x99, 0xA8, 0x2A, 0xD0, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, @@ -16406,10 +17039,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x57, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Portugal */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0x92, 0xE6, 0x97, 0x10, 0x9B, 0x4B, 0x6D, 0x70, 0x9B, 0xFE, 0xC7, 0x80, 0x9C, 0x9C, 0xED, 0x70, 0x9D, 0xC9, 0x83, 0x70, @@ -16488,10 +17122,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* PRC */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xB0, 0xFE, 0x9A, 0xA0, 0xC8, 0x5C, 0x01, 0x80, 0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, @@ -16501,10 +17135,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* PST8PDT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xCB, 0x89, 0x1A, 0xA0, @@ -16556,10 +17191,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* ROC */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD1, 0x97, 0xD3, 0x00, 0xD2, 0x61, 0x7A, 0x70, 0xD3, 0x79, 0x06, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x5A, 0x3A, 0x00, @@ -16575,10 +17211,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, -0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* ROK */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x85, 0x93, 0x7E, 0x78, 0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, @@ -16587,10 +17224,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x02, 0x03, 0x00, 0x01, 0x04, 0x01, 0x04, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x4B, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Singapore */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x17, 0x86, 0x83, 0x85, 0xA3, 0xBA, 0x67, 0x4E, 0x90, 0xC0, 0x0A, 0xE4, 0x60, 0xCA, 0xB3, 0xE5, 0x60, 0xCB, 0x91, 0x5F, 0x08, @@ -16600,10 +17238,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0F, 0x00, 0x00, 0x69, 0x78, 0x00, 0x13, 0x00, 0x00, 0x70, 0x80, 0x00, 0x13, 0x53, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x54, 0x00, 0x4D, 0x41, 0x4C, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x53, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Turkey */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x16, 0x90, 0x8B, 0xF5, 0x98, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xA2, 0x65, 0x63, 0xE0, 0xA3, 0x7B, 0x82, 0x50, @@ -16665,22 +17304,24 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x54, 0x52, 0x53, 0x54, 0x00, 0x54, 0x52, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, +0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* UCT */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x43, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x43, 0x54, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Universal */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* US/Alaska */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, 0xCB, 0x89, 0x36, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x42, 0x30, 0xFA, 0xD2, 0x47, 0xA0, 0xFE, 0xB8, 0x63, 0x40, @@ -16733,10 +17374,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x1C, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x21, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x57, 0x54, 0x00, 0x43, 0x41, 0x50, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x41, 0x48, 0x44, 0x54, 0x00, 0x59, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Aleutian */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0xCB, 0x89, 0x44, 0xD0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x50, 0x40, 0xFA, 0xD2, 0x55, 0xB0, 0xFE, 0xB8, 0x71, 0x50, @@ -16789,10 +17431,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x19, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x1E, 0x4E, 0x53, 0x54, 0x00, 0x4E, 0x57, 0x54, 0x00, 0x4E, 0x50, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x42, 0x44, 0x54, 0x00, 0x41, 0x48, 0x53, 0x54, 0x00, 0x48, 0x41, 0x44, 0x54, 0x00, 0x48, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, +0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Arizona */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xCB, 0x89, 0x0C, 0x90, @@ -16800,10 +17443,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFB, 0xE8, 0x58, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Central */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xA2, 0xCB, 0x74, 0x00, @@ -16882,10 +17525,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, -0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x43, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Eastern */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xA2, 0x65, 0xE2, 0x70, @@ -16964,10 +17608,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, +0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/East-Indiana */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCA, 0x57, 0x22, 0x80, @@ -17004,10 +17648,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Hawaii */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0xBB, 0x05, 0x43, 0x48, 0xBB, 0x20, 0xE4, 0xB8, 0xCB, 0x89, 0x3D, 0xC8, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x49, 0x38, @@ -17015,10 +17660,10 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x04, 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x08, 0xFF, 0xFF, 0x7A, 0x68, 0x01, 0x0C, 0xFF, 0xFF, 0x73, 0x60, 0x00, 0x00, 0x48, 0x53, 0x54, 0x00, 0x48, 0x44, 0x54, 0x00, 0x48, 0x57, 0x54, 0x00, 0x48, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, +0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Indiana-Starke */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80, @@ -17072,10 +17717,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* US/Michigan */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 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, 0x8B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x85, 0xBD, 0x22, 0x5B, 0x99, 0x3C, 0x94, 0x00, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, @@ -17125,10 +17771,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Mountain */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, 0xA2, 0x65, 0xFE, 0x90, @@ -17182,10 +17829,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, -0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* US/Pacific */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xCB, 0x89, 0x1A, 0xA0, @@ -17248,10 +17896,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* US/Pacific-New */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x9E, 0xA6, 0x48, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xA0, 0x86, 0x2A, 0xA0, 0xA1, 0x9A, 0xF7, 0x90, 0xCB, 0x89, 0x1A, 0xA0, @@ -17314,26 +17963,29 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* US/Samoa */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, 0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, +0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* UTC */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x01, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, +0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* WET */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x0D, 0xA4, 0x63, 0x90, 0x0E, 0x8B, 0x1A, 0x10, 0x0F, 0x84, 0x45, 0x90, 0x10, 0x74, 0x36, 0x90, 0x11, 0x64, 0x27, 0x90, @@ -17375,10 +18027,11 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 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, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, -0x45, 0x54, 0x00, 0x01, 0x01, 0x01, 0x01, +0x45, 0x54, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* W-SU */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x5F, 0x1E, 0xD8, 0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, @@ -17428,12 +18081,14 @@ const unsigned char timelib_timezone_db_data_builtin[247685] = { 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Zulu */ -0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, }; +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 = { "2008.2", 557, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2009.1", 560, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/date/lib/tm2unixtime.c b/ext/date/lib/tm2unixtime.c index a4e6996b2..2a0f53a81 100644 --- a/ext/date/lib/tm2unixtime.c +++ b/ext/date/lib/tm2unixtime.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tm2unixtime.c,v 1.13.2.3.2.4 2008/01/26 16:26:47 derick Exp $ */ +/* $Id: tm2unixtime.c,v 1.13.2.3.2.7 2008/12/31 11:17:36 sebastian Exp $ */ #include "timelib.h" @@ -136,35 +136,55 @@ static void do_adjust_relative(timelib_time* time) static void do_adjust_special_weekday(timelib_time* time) { - timelib_sll current_dow, this_weekday = 0, count; + timelib_sll current_dow, count; - current_dow = timelib_day_of_week(time->y, time->m, time->d); count = time->special.amount; + + current_dow = timelib_day_of_week(time->y, time->m, time->d); if (count == 0) { + /* skip over saturday and sunday */ if (current_dow == 6) { - this_weekday = 2; + time->d += 2; } + /* skip over sunday */ if (current_dow == 0) { - this_weekday = 1; + time->d += 1; } - time->d += this_weekday; - return; } else if (count > 0) { + /* skip over saturday and sunday */ if (current_dow == 5) { - this_weekday = 2; + time->d += 2; } + /* skip over sunday */ if (current_dow == 6) { - this_weekday = 1; + time->d += 1; } - } else if (count < 0) { - if (current_dow == 0) { - this_weekday = -1; + /* add increments of 5 weekdays as a week */ + time->d += (count / 5) * 7; + /* if current DOW plus the remainder > 5, add two days */ + current_dow = timelib_day_of_week(time->y, time->m, time->d); + time->d += (count % 5); + if ((count % 5) + current_dow > 5) { + time->d += 2; } + } else if (count < 0) { + /* skip over sunday and saturday */ if (current_dow == 1) { - this_weekday = -2; + time->d -= 2; + } + /* skip over satruday */ + if (current_dow == 0 ) { + time->d -= 1; + } + /* subtract increments of 5 weekdays as a week */ + time->d += (count / 5) * 7; + /* if current DOW minus the remainder < 0, subtract two days */ + current_dow = timelib_day_of_week(time->y, time->m, time->d); + time->d += (count % 5); + if ((count % 5) + current_dow < 1) { + time->d -= 2; } } - time->d += this_weekday + ((count / 5) * 7) + (count % 5); } static void do_adjust_special(timelib_time* time) @@ -178,6 +198,7 @@ static void do_adjust_special(timelib_time* time) } do_normalize(time); memset(&(time->special), 0, sizeof(time->special)); + time->have_relative = 0; } static timelib_sll do_years(timelib_sll year) @@ -186,10 +207,10 @@ static timelib_sll do_years(timelib_sll year) timelib_sll res = 0; timelib_sll eras; - eras = (year - 1970) / 400; + eras = (year - 1970) / 40000; if (eras != 0) { - year = year - (eras * 400); - res += (SECS_PER_ERA * eras); + year = year - (eras * 40000); + res += (SECS_PER_ERA * eras * 100); } if (year >= 1970) { diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c index 4b36e9c94..b5178e3f8 100644 --- a/ext/date/lib/unixtime2tm.c +++ b/ext/date/lib/unixtime2tm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: unixtime2tm.c,v 1.12.2.4.2.4 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: unixtime2tm.c,v 1.12.2.4.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #include "timelib.h" @@ -76,12 +76,18 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts) */ while (tmp_days <= 0) { - cur_year--; - DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); - if (timelib_is_leap(cur_year)) { - tmp_days += DAYS_PER_LYEAR; + if (tmp_days < -1460970) { + cur_year -= 4000; + DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); + tmp_days += 1460970; } else { - tmp_days += DAYS_PER_YEAR; + cur_year--; + DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); + if (timelib_is_leap(cur_year)) { + tmp_days += DAYS_PER_LYEAR; + } else { + tmp_days += DAYS_PER_YEAR; + } } } remainder += SECS_PER_DAY; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 25189b5c6..840bd703c 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_date.c,v 1.43.2.45.2.58 2008/04/16 17:21:46 derick Exp $ */ +/* $Id: php_date.c,v 1.43.2.45.2.64 2008/12/31 11:17:36 sebastian Exp $ */ #include "php.h" #include "php_streams.h" @@ -269,9 +269,9 @@ struct _php_timezone_obj { int initialized; int type; union { - timelib_tzinfo *tz; // TIMELIB_ZONETYPE_ID; - timelib_sll utc_offset; // TIMELIB_ZONETYPE_OFFSET - struct // TIMELIB_ZONETYPE_ABBR + timelib_tzinfo *tz; /* TIMELIB_ZONETYPE_ID; */ + timelib_sll utc_offset; /* TIMELIB_ZONETYPE_OFFSET */ + struct /* TIMELIB_ZONETYPE_ABBR */ { timelib_sll utc_offset; char *abbr; @@ -731,7 +731,7 @@ static char *date_format(char *format, int format_len, timelib_time *t, int loca char buffer[33]; timelib_time_offset *offset = NULL; timelib_sll isoweek, isoyear; - int rfc_colon = 0; + int rfc_colon; if (!format_len) { return estrdup(""); @@ -761,6 +761,7 @@ static char *date_format(char *format, int format_len, timelib_time *t, int loca timelib_isoweek_from_date(t->y, t->m, t->d, &isoweek, &isoyear); for (i = 0; i < format_len; i++) { + rfc_colon = 0; switch (format[i]) { /* day */ case 'd': length = slprintf(buffer, 32, "%02d", (int) t->d); break; @@ -1142,18 +1143,10 @@ PHP_FUNCTION(strtotime) t = timelib_strtotime(times, time_len, &error, DATE_TIMEZONEDB); error1 = error->error_count; timelib_error_container_dtor(error); - timelib_fill_holes(t, now, 0); + timelib_fill_holes(t, now, TIMELIB_NO_CLONE); timelib_update_ts(t, tzi); ts = timelib_date_to_int(t, &error2); - /* if tz_info is not a copy, avoid double free */ - if (now->tz_info != tzi && now->tz_info) { - timelib_tzinfo_dtor(now->tz_info); - } - if (t->tz_info != tzi) { - timelib_tzinfo_dtor(t->tz_info); - } - timelib_time_dtor(now); timelib_time_dtor(t); @@ -1195,7 +1188,7 @@ PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt) case 6: if (yea >= 0 && yea < 70) { yea += 2000; - } else if (yea >= 70 && yea <= 110) { + } else if (yea >= 70 && yea <= 100) { yea += 1900; } now->y = yea; @@ -1560,7 +1553,7 @@ static zend_object_value date_object_clone_date(zval *this_ptr TSRMLS_DC) new_obj->time->tz_abbr = strdup(old_obj->time->tz_abbr); } if (old_obj->time->tz_info) { - new_obj->time->tz_info = timelib_tzinfo_clone(old_obj->time->tz_info); + new_obj->time->tz_info = old_obj->time->tz_info; } return new_ov; @@ -1644,9 +1637,6 @@ static void date_object_free_storage_date(void *object TSRMLS_DC) php_date_obj *intern = (php_date_obj *)object; if (intern->time) { - if (intern->time->tz_info) { - timelib_tzinfo_dtor(intern->time->tz_info); - } timelib_time_dtor(intern->time); } @@ -1684,14 +1674,11 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int timelib_time *now; timelib_tzinfo *tzi; timelib_error_container *err = NULL; - int free_tzi = 0, type = TIMELIB_ZONETYPE_ID, new_dst, errors_found = 0; + int type = TIMELIB_ZONETYPE_ID, new_dst, errors_found = 0; char *new_abbr; timelib_sll new_offset; if (dateobj->time) { - if (dateobj->time->tz_info) { - timelib_tzinfo_dtor(dateobj->time->tz_info); - } timelib_time_dtor(dateobj->time); } dateobj->time = timelib_strtotime(time_str_len ? time_str : "now", time_str_len ? time_str_len : sizeof("now") -1, &err, DATE_TIMEZONEDB); @@ -1715,8 +1702,7 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int tzobj = (php_timezone_obj *) zend_object_store_get_object(timezone_object TSRMLS_CC); switch (tzobj->type) { case TIMELIB_ZONETYPE_ID: - tzi = timelib_tzinfo_clone(tzobj->tzi.tz); - free_tzi = 1; + tzi = tzobj->tzi.tz; break; case TIMELIB_ZONETYPE_OFFSET: new_offset = tzobj->tzi.utc_offset; @@ -1729,8 +1715,7 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int } type = tzobj->type; } else if (dateobj->time->tz_info) { - tzi = timelib_tzinfo_clone(dateobj->time->tz_info); - free_tzi = 1; + tzi = dateobj->time->tz_info; } else { tzi = get_timezone_info(TSRMLS_C); } @@ -1757,12 +1742,6 @@ static int date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int dateobj->time->have_weekday_relative = dateobj->time->have_relative = 0; - if (type == TIMELIB_ZONETYPE_ID && now->tz_info != tzi) { - timelib_tzinfo_dtor(now->tz_info); - } - if (free_tzi) { - timelib_tzinfo_dtor(tzi); - } timelib_time_dtor(now); return 1; @@ -1941,13 +1920,7 @@ PHP_FUNCTION(date_modify) DATE_CHECK_INITIALIZED(dateobj->time, DateTime); tmp_time = timelib_strtotime(modify, modify_len, NULL, DATE_TIMEZONEDB); - dateobj->time->relative.y = tmp_time->relative.y; - dateobj->time->relative.m = tmp_time->relative.m; - dateobj->time->relative.d = tmp_time->relative.d; - dateobj->time->relative.h = tmp_time->relative.h; - dateobj->time->relative.i = tmp_time->relative.i; - dateobj->time->relative.s = tmp_time->relative.s; - dateobj->time->relative.weekday = tmp_time->relative.weekday; + memcpy(&dateobj->time->relative, &tmp_time->relative, sizeof(struct timelib_rel_time)); dateobj->time->have_relative = tmp_time->have_relative; dateobj->time->have_weekday_relative = tmp_time->have_weekday_relative; dateobj->time->sse_uptodate = 0; @@ -2014,11 +1987,9 @@ PHP_FUNCTION(date_timezone_set) tzobj = (php_timezone_obj *) zend_object_store_get_object(timezone_object TSRMLS_CC); if (tzobj->type != TIMELIB_ZONETYPE_ID) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only do this for zones with ID for now"); + return; } - if (dateobj->time->tz_info) { - timelib_tzinfo_dtor(dateobj->time->tz_info); - } - timelib_set_timezone(dateobj->time, timelib_tzinfo_clone(tzobj->tzi.tz)); + timelib_set_timezone(dateobj->time, tzobj->tzi.tz); timelib_unixtime2local(dateobj->time, dateobj->time->sse); } /* }}} */ diff --git a/ext/date/php_date.h b/ext/date/php_date.h index 79e2785dc..4e07c8f86 100644 --- a/ext/date/php_date.h +++ b/ext/date/php_date.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_date.h,v 1.17.2.11.2.4 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: php_date.h,v 1.17.2.11.2.5 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef PHP_DATE_H #define PHP_DATE_H diff --git a/ext/date/tests/bug43452.phpt b/ext/date/tests/bug43452.phpt new file mode 100644 index 000000000..25b4f0161 --- /dev/null +++ b/ext/date/tests/bug43452.phpt @@ -0,0 +1,71 @@ +--TEST-- +Bug #43452 ("weekday" is not equivalent to "1 weekday" of the current weekday is "weekday") +--INI-- +date.timezone=Europe/Oslo +--FILE-- + is equivalent to 1 and will *not* forward if the current day +// (November 1st) is the same day of week. +$day = strtotime( "Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "1 Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "2 Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "3 Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n\n"; + +// forward one week, then behaves like above for week days +$day = strtotime( "Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "+1 week Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "+2 week Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "+3 week Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n\n"; + +// First, second, etc skip to the first/second weekday *after* the current day. +// This makes "first thursday" equivalent to "+1 week thursday" - but only +// if the current day-of-week is the one mentioned in the phrase. +$day = strtotime( "Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "first Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "second Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "third Thursday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n\n"; + +// Now the same where the current day-of-week does not match the one in the +// phrase. +$day = strtotime( "Friday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "first Friday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "second Friday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n"; +$day = strtotime( "third Friday Nov 2007" ); +echo date( DateTime::ISO8601, $day ), "\n\n"; + +?> +--EXPECT-- +2007-11-01T00:00:00+0100 +2007-11-01T00:00:00+0100 +2007-11-08T00:00:00+0100 +2007-11-15T00:00:00+0100 + +2007-11-01T00:00:00+0100 +2007-11-08T00:00:00+0100 +2007-11-15T00:00:00+0100 +2007-11-22T00:00:00+0100 + +2007-11-01T00:00:00+0100 +2007-11-08T00:00:00+0100 +2007-11-15T00:00:00+0100 +2007-11-22T00:00:00+0100 + +2007-11-02T00:00:00+0100 +2007-11-02T00:00:00+0100 +2007-11-09T00:00:00+0100 +2007-11-16T00:00:00+0100 diff --git a/ext/date/tests/bug46268.phpt b/ext/date/tests/bug46268.phpt new file mode 100644 index 000000000..dd2d4a3ca --- /dev/null +++ b/ext/date/tests/bug46268.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #46268 (When call DateTime#setTime, it seems to be called the last modify method too) +--FILE-- +format("Y-m-d H:i:s") . PHP_EOL; + +$now->modify("1 day after"); +echo $now->format("Y-m-d H:i:s") . PHP_EOL; + +$now->modify("1 hour after"); +echo $now->format("Y-m-d H:i:s") . PHP_EOL; + +$now->setTime(0, 0, 0); +//date_time_set($now, 0, 0, 0); +echo $now->format("Y-m-d H:i:s") . PHP_EOL; +--EXPECT-- +2008-10-10 01:02:03 +2008-10-11 01:02:03 +2008-10-11 02:02:03 +2008-10-11 00:00:00 diff --git a/ext/date/tests/date_default_timezone_get_error.phpt b/ext/date/tests/date_default_timezone_get_error.phpt new file mode 100644 index 000000000..bf8bc8ef6 --- /dev/null +++ b/ext/date/tests/date_default_timezone_get_error.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test date_default_timezone_get() function : error conditions +--FILE-- + + +===Done=== +--EXPECTF-- +*** Testing date_default_timezone_get() : error conditions *** + +-- Testing date_create() function with more than expected no. of arguments -- +string(3) "UTC" + +===Done=== \ No newline at end of file diff --git a/ext/date/tests/date_default_timezone_set_error.phpt b/ext/date/tests/date_default_timezone_set_error.phpt new file mode 100644 index 000000000..15c6aa6fe --- /dev/null +++ b/ext/date/tests/date_default_timezone_set_error.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test date_default_timezone_set() function : error variations +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_default_timezone_set() : error variations *** + +-- Testing date_default_timezone_set() function with less than expected no. of arguments -- + +Warning: date_default_timezone_set() expects exactly 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing date_default_timezone_set() function with more than expected no. of arguments -- + +Warning: date_default_timezone_set() expects exactly 1 parameter, 2 given in %s on line %d +bool(false) + +-- Testing date_default_timezone_set() function with invalid timezone identifier -- + +Notice: date_default_timezone_set(): Timezone ID 'foo' is invalid in %s on line %d +bool(false) +===Done=== diff --git a/ext/date/tests/date_default_timezone_set_variation1.phpt b/ext/date/tests/date_default_timezone_set_variation1.phpt new file mode 100644 index 000000000..22f4c22de --- /dev/null +++ b/ext/date/tests/date_default_timezone_set_variation1.phpt @@ -0,0 +1,200 @@ +--TEST-- +Test date_default_timezone_set() function : usage variations - Passing unexpected values for time_zone identifier +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_default_timezone_set() : usage variations *** + +-- Iteration 1 -- + +Notice: date_default_timezone_set(): Timezone ID '0' is invalid in %s on line %d +bool(false) + +-- Iteration 2 -- + +Notice: date_default_timezone_set(): Timezone ID '1' is invalid in %s on line %d +bool(false) + +-- Iteration 3 -- + +Notice: date_default_timezone_set(): Timezone ID '12345' is invalid in %s on line %d +bool(false) + +-- Iteration 4 -- + +Notice: date_default_timezone_set(): Timezone ID '-2345' is invalid in %s on line %d +bool(false) + +-- Iteration 5 -- + +Notice: date_default_timezone_set(): Timezone ID '10.5' is invalid in %s on line %d +bool(false) + +-- Iteration 6 -- + +Notice: date_default_timezone_set(): Timezone ID '-10.5' is invalid in %s on line %d +bool(false) + +-- Iteration 7 -- + +Notice: date_default_timezone_set(): Timezone ID '123456789000' is invalid in %s on line %d +bool(false) + +-- Iteration 8 -- + +Notice: date_default_timezone_set(): Timezone ID '1.23456789E-9' is invalid in %s on line %d +bool(false) + +-- Iteration 9 -- + +Notice: date_default_timezone_set(): Timezone ID '0.5' is invalid in %s on line %d +bool(false) + +-- Iteration 10 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 11 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 12 -- + +Notice: date_default_timezone_set(): Timezone ID '1' is invalid in %s on line %d +bool(false) + +-- Iteration 13 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 14 -- + +Notice: date_default_timezone_set(): Timezone ID '1' is invalid in %s on line %d +bool(false) + +-- Iteration 15 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 16 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 17 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: date_default_timezone_set() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Notice: date_default_timezone_set(): Timezone ID 'abcxyz' is invalid in %s on line %d +bool(false) + +-- Iteration 20 -- + +Notice: date_default_timezone_set(): Timezone ID 'abcxyz' is invalid in %s on line %d +bool(false) + +-- Iteration 21 -- + +Notice: date_default_timezone_set(): Timezone ID 'abc +xyz' is invalid in %s on line %d +bool(false) + +-- Iteration 22 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 23 -- + +Notice: date_default_timezone_set(): Timezone ID '' is invalid in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: date_default_timezone_set() expects parameter 1 to be string, resource given in %s on line %d +bool(false) +===Done=== diff --git a/ext/date/tests/date_parse_001.phpt b/ext/date/tests/date_parse_001.phpt index 205380fc9..542161016 100644 --- a/ext/date/tests/date_parse_001.phpt +++ b/ext/date/tests/date_parse_001.phpt @@ -79,7 +79,7 @@ array(15) { ["month"]=> int(12) ["day"]=> - bool(false) + int(1) ["hour"]=> bool(false) ["minute"]=> @@ -171,7 +171,7 @@ array(12) { ["month"]=> int(3) ["day"]=> - bool(false) + int(1) ["hour"]=> bool(false) ["minute"]=> diff --git a/ext/date/tests/date_sun_info_error.phpt b/ext/date/tests/date_sun_info_error.phpt new file mode 100644 index 000000000..8d572479f --- /dev/null +++ b/ext/date/tests/date_sun_info_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test date_sun_info() function : error variations +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_sun_info() : usage variations *** + +-- Testing date_sun_info() function with less than expected no. of arguments -- + +Warning: date_sun_info() expects exactly 3 parameters, 0 given in %s on line %d +bool(false) + +Warning: date_sun_info() expects exactly 3 parameters, 1 given in %s on line %d +bool(false) + +Warning: date_sun_info() expects exactly 3 parameters, 2 given in %s on line %d +bool(false) + +-- Testing date_sun_info() function with more than expected no. of arguments -- + +Warning: date_create() expects at most 2 parameters, 4 given in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/date/tests/date_sun_info_variation1.phpt b/ext/date/tests/date_sun_info_variation1.phpt new file mode 100644 index 000000000..4df94c8b8 --- /dev/null +++ b/ext/date/tests/date_sun_info_variation1.phpt @@ -0,0 +1,491 @@ +--TEST-- +Test date_sun_info() function : error variations - Pass unexpected values for time argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_sun_info() : usage variations *** + +-- Iteration 1 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 2 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 3 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 4 -- +array(9) { + ["sunrise"]=> + int(-69665) + ["sunset"]=> + int(-33260) + ["transit"]=> + int(-51462) + ["civil_twilight_begin"]=> + int(-71269) + ["civil_twilight_end"]=> + int(-31655) + ["nautical_twilight_begin"]=> + int(-73092) + ["nautical_twilight_end"]=> + int(-29832) + ["astronomical_twilight_begin"]=> + int(-74874) + ["astronomical_twilight_end"]=> + int(-28050) +} + +-- Iteration 5 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 6 -- +array(9) { + ["sunrise"]=> + int(-69665) + ["sunset"]=> + int(-33260) + ["transit"]=> + int(-51462) + ["civil_twilight_begin"]=> + int(-71269) + ["civil_twilight_end"]=> + int(-31655) + ["nautical_twilight_begin"]=> + int(-73092) + ["nautical_twilight_end"]=> + int(-29832) + ["astronomical_twilight_begin"]=> + int(-74874) + ["astronomical_twilight_end"]=> + int(-28050) +} + +-- Iteration 7 -- +array(9) { + ["sunrise"]=> + int(1226363) + ["sunset"]=> + int(1263468) + ["transit"]=> + int(1244916) + ["civil_twilight_begin"]=> + int(1224788) + ["civil_twilight_end"]=> + int(1265044) + ["nautical_twilight_begin"]=> + int(1222993) + ["nautical_twilight_end"]=> + int(1266839) + ["astronomical_twilight_begin"]=> + int(1221233) + ["astronomical_twilight_end"]=> + int(1268599) +} + +-- Iteration 8 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 9 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 10 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 11 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 12 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 13 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 14 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 15 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 16 -- + +Warning: date_sun_info() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: date_sun_info() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: date_sun_info() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: date_sun_info() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: date_sun_info() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: date_sun_info() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +-- Iteration 22 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 23 -- +array(9) { + ["sunrise"]=> + int(16748) + ["sunset"]=> + int(53182) + ["transit"]=> + int(34965) + ["civil_twilight_begin"]=> + int(15145) + ["civil_twilight_end"]=> + int(54786) + ["nautical_twilight_begin"]=> + int(13324) + ["nautical_twilight_end"]=> + int(56607) + ["astronomical_twilight_begin"]=> + int(11542) + ["astronomical_twilight_end"]=> + int(58389) +} + +-- Iteration 24 -- + +Warning: date_sun_info() expects parameter 1 to be long, resource given in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/date/tests/date_sun_info_variation2.phpt b/ext/date/tests/date_sun_info_variation2.phpt new file mode 100644 index 000000000..fb5ed317f --- /dev/null +++ b/ext/date/tests/date_sun_info_variation2.phpt @@ -0,0 +1,492 @@ +--TEST-- +Test date_sun_info() function : error variations - Pass unexpected values for latitude argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_sun_info() : usage variations *** + +-- Iteration 1 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 2 -- +array(9) { + ["sunrise"]=> + int(1165894254) + ["sunset"]=> + int(1165937695) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892911) + ["civil_twilight_end"]=> + int(1165939038) + ["nautical_twilight_begin"]=> + int(1165891344) + ["nautical_twilight_end"]=> + int(1165940606) + ["astronomical_twilight_begin"]=> + int(1165889771) + ["astronomical_twilight_end"]=> + int(1165942179) +} + +-- Iteration 3 -- +array(9) { + ["sunrise"]=> + bool(true) + ["sunset"]=> + bool(true) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + bool(true) + ["civil_twilight_end"]=> + bool(true) + ["nautical_twilight_begin"]=> + int(1165883331) + ["nautical_twilight_end"]=> + int(1165948619) + ["astronomical_twilight_begin"]=> + int(1165890260) + ["astronomical_twilight_end"]=> + int(1165941690) +} + +-- Iteration 4 -- +array(9) { + ["sunrise"]=> + int(1165894085) + ["sunset"]=> + int(1165937865) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165895431) + ["civil_twilight_end"]=> + int(1165936519) + ["nautical_twilight_begin"]=> + int(1165896998) + ["nautical_twilight_end"]=> + int(1165934952) + ["astronomical_twilight_begin"]=> + int(1165898564) + ["astronomical_twilight_end"]=> + int(1165933386) +} + +-- Iteration 5 -- +array(9) { + ["sunrise"]=> + int(1165895237) + ["sunset"]=> + int(1165936713) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165893873) + ["civil_twilight_end"]=> + int(1165938077) + ["nautical_twilight_begin"]=> + int(1165892293) + ["nautical_twilight_end"]=> + int(1165939656) + ["astronomical_twilight_begin"]=> + int(1165890721) + ["astronomical_twilight_end"]=> + int(1165941229) +} + +-- Iteration 6 -- +array(9) { + ["sunrise"]=> + int(1165893058) + ["sunset"]=> + int(1165938891) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165891680) + ["civil_twilight_end"]=> + int(1165940269) + ["nautical_twilight_begin"]=> + int(1165890055) + ["nautical_twilight_end"]=> + int(1165941895) + ["astronomical_twilight_begin"]=> + int(1165888402) + ["astronomical_twilight_end"]=> + int(1165943548) +} + +-- Iteration 7 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 8 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 9 -- +array(9) { + ["sunrise"]=> + int(1165894203) + ["sunset"]=> + int(1165937747) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892860) + ["civil_twilight_end"]=> + int(1165939090) + ["nautical_twilight_begin"]=> + int(1165891292) + ["nautical_twilight_end"]=> + int(1165940658) + ["astronomical_twilight_begin"]=> + int(1165889717) + ["astronomical_twilight_end"]=> + int(1165942233) +} + +-- Iteration 10 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 11 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 12 -- +array(9) { + ["sunrise"]=> + int(1165894254) + ["sunset"]=> + int(1165937695) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892911) + ["civil_twilight_end"]=> + int(1165939038) + ["nautical_twilight_begin"]=> + int(1165891344) + ["nautical_twilight_end"]=> + int(1165940606) + ["astronomical_twilight_begin"]=> + int(1165889771) + ["astronomical_twilight_end"]=> + int(1165942179) +} + +-- Iteration 13 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 14 -- +array(9) { + ["sunrise"]=> + int(1165894254) + ["sunset"]=> + int(1165937695) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892911) + ["civil_twilight_end"]=> + int(1165939038) + ["nautical_twilight_begin"]=> + int(1165891344) + ["nautical_twilight_end"]=> + int(1165940606) + ["astronomical_twilight_begin"]=> + int(1165889771) + ["astronomical_twilight_end"]=> + int(1165942179) +} + +-- Iteration 15 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 16 -- + +Warning: date_sun_info() expects parameter 2 to be double, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: date_sun_info() expects parameter 2 to be double, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: date_sun_info() expects parameter 2 to be double, array given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: date_sun_info() expects parameter 2 to be double, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: date_sun_info() expects parameter 2 to be double, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: date_sun_info() expects parameter 2 to be double, string given in %s on line %d +bool(false) + +-- Iteration 22 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 23 -- +array(9) { + ["sunrise"]=> + int(1165894152) + ["sunset"]=> + int(1165937798) + ["transit"]=> + int(1165915975) + ["civil_twilight_begin"]=> + int(1165892809) + ["civil_twilight_end"]=> + int(1165939141) + ["nautical_twilight_begin"]=> + int(1165891239) + ["nautical_twilight_end"]=> + int(1165940710) + ["astronomical_twilight_begin"]=> + int(1165889663) + ["astronomical_twilight_end"]=> + int(1165942287) +} + +-- Iteration 24 -- + +Warning: date_sun_info() expects parameter 2 to be double, resource given in %s on line %d +bool(false) +===Done=== diff --git a/ext/date/tests/date_sun_info_variation3.phpt b/ext/date/tests/date_sun_info_variation3.phpt new file mode 100644 index 000000000..207d205d9 --- /dev/null +++ b/ext/date/tests/date_sun_info_variation3.phpt @@ -0,0 +1,493 @@ +--TEST-- +Test date_sun_info() function : usage variations - Pass unexpected values for longitude argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing date_sun_info() : usage variations *** + +-- Iteration 1 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 2 -- +array(9) { + ["sunrise"]=> + int(1165906002) + ["sunset"]=> + int(1165942385) + ["transit"]=> + int(1165924194) + ["civil_twilight_begin"]=> + int(1165904396) + ["civil_twilight_end"]=> + int(1165943991) + ["nautical_twilight_begin"]=> + int(1165902573) + ["nautical_twilight_end"]=> + int(1165945814) + ["astronomical_twilight_begin"]=> + int(1165900789) + ["astronomical_twilight_end"]=> + int(1165947598) +} + +-- Iteration 3 -- +array(9) { + ["sunrise"]=> + int(1165879335) + ["sunset"]=> + int(1165917916) + ["transit"]=> + int(1165898625) + ["civil_twilight_begin"]=> + int(1165877811) + ["civil_twilight_end"]=> + int(1165919440) + ["nautical_twilight_begin"]=> + int(1165876064) + ["nautical_twilight_end"]=> + int(1165921187) + ["astronomical_twilight_begin"]=> + int(1165874341) + ["astronomical_twilight_end"]=> + int(1165922910) +} + +-- Iteration 4 -- +array(9) { + ["sunrise"]=> + int(1165864483) + ["sunset"]=> + int(1165900762) + ["transit"]=> + int(1165882623) + ["civil_twilight_begin"]=> + int(1165862873) + ["civil_twilight_end"]=> + int(1165902372) + ["nautical_twilight_begin"]=> + int(1165861045) + ["nautical_twilight_end"]=> + int(1165904200) + ["astronomical_twilight_begin"]=> + int(1165859259) + ["astronomical_twilight_end"]=> + int(1165905987) +} + +-- Iteration 5 -- +array(9) { + ["sunrise"]=> + int(1165903721) + ["sunset"]=> + int(1165940105) + ["transit"]=> + int(1165921913) + ["civil_twilight_begin"]=> + int(1165902115) + ["civil_twilight_end"]=> + int(1165941711) + ["nautical_twilight_begin"]=> + int(1165900292) + ["nautical_twilight_end"]=> + int(1165943534) + ["astronomical_twilight_begin"]=> + int(1165898508) + ["astronomical_twilight_end"]=> + int(1165945317) +} + +-- Iteration 6 -- +array(9) { + ["sunrise"]=> + int(1165908763) + ["sunset"]=> + int(1165945146) + ["transit"]=> + int(1165926954) + ["civil_twilight_begin"]=> + int(1165907157) + ["civil_twilight_end"]=> + int(1165946752) + ["nautical_twilight_begin"]=> + int(1165905334) + ["nautical_twilight_end"]=> + int(1165948575) + ["astronomical_twilight_begin"]=> + int(1165903551) + ["astronomical_twilight_end"]=> + int(1165950358) +} + +-- Iteration 7 -- +array(9) { + ["sunrise"]=> + int(1165919856) + ["sunset"]=> + int(1165969985) + ["transit"]=> + int(1165944920) + ["civil_twilight_begin"]=> + int(1165918203) + ["civil_twilight_end"]=> + int(1165971638) + ["nautical_twilight_begin"]=> + int(1165916223) + ["nautical_twilight_end"]=> + int(1165973617) + ["astronomical_twilight_begin"]=> + int(1165914116) + ["astronomical_twilight_end"]=> + int(1165975725) +} + +-- Iteration 8 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 9 -- +array(9) { + ["sunrise"]=> + int(1165906122) + ["sunset"]=> + int(1165942505) + ["transit"]=> + int(1165924314) + ["civil_twilight_begin"]=> + int(1165904516) + ["civil_twilight_end"]=> + int(1165944111) + ["nautical_twilight_begin"]=> + int(1165902693) + ["nautical_twilight_end"]=> + int(1165945934) + ["astronomical_twilight_begin"]=> + int(1165900910) + ["astronomical_twilight_end"]=> + int(1165947718) +} + +-- Iteration 10 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 11 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 12 -- +array(9) { + ["sunrise"]=> + int(1165906002) + ["sunset"]=> + int(1165942385) + ["transit"]=> + int(1165924194) + ["civil_twilight_begin"]=> + int(1165904396) + ["civil_twilight_end"]=> + int(1165943991) + ["nautical_twilight_begin"]=> + int(1165902573) + ["nautical_twilight_end"]=> + int(1165945814) + ["astronomical_twilight_begin"]=> + int(1165900789) + ["astronomical_twilight_end"]=> + int(1165947598) +} + +-- Iteration 13 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 14 -- +array(9) { + ["sunrise"]=> + int(1165906002) + ["sunset"]=> + int(1165942385) + ["transit"]=> + int(1165924194) + ["civil_twilight_begin"]=> + int(1165904396) + ["civil_twilight_end"]=> + int(1165943991) + ["nautical_twilight_begin"]=> + int(1165902573) + ["nautical_twilight_end"]=> + int(1165945814) + ["astronomical_twilight_begin"]=> + int(1165900789) + ["astronomical_twilight_end"]=> + int(1165947598) +} + +-- Iteration 15 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 16 -- + +Warning: date_sun_info() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: date_sun_info() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: date_sun_info() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: date_sun_info() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: date_sun_info() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: date_sun_info() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +-- Iteration 22 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 23 -- +array(9) { + ["sunrise"]=> + int(1165906242) + ["sunset"]=> + int(1165942625) + ["transit"]=> + int(1165924434) + ["civil_twilight_begin"]=> + int(1165904636) + ["civil_twilight_end"]=> + int(1165944231) + ["nautical_twilight_begin"]=> + int(1165902813) + ["nautical_twilight_end"]=> + int(1165946054) + ["astronomical_twilight_begin"]=> + int(1165901030) + ["astronomical_twilight_end"]=> + int(1165947838) +} + +-- Iteration 24 -- + +Warning: date_sun_info() expects parameter 3 to be double, resource given in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/date/tests/date_sunrise_and_sunset_basic.phpt b/ext/date/tests/date_sunrise_and_sunset_basic.phpt new file mode 100644 index 000000000..ed68267ec --- /dev/null +++ b/ext/date/tests/date_sunrise_and_sunset_basic.phpt @@ -0,0 +1,28 @@ +--TEST-- +Basic test for date_sunrise and date_sunset based on example in PHP manual +--FILE-- + +===Done=== +--EXPECTF-- +Basic test for date_sunrise() and date_sunset() +%s %s %d %d, sunrise time : %d:%d +%s %s %d %d, sunset time : %d:%d +===Done=== diff --git a/ext/date/tests/date_sunrise_error.phpt b/ext/date/tests/date_sunrise_error.phpt new file mode 100644 index 000000000..f57b7ed1c --- /dev/null +++ b/ext/date/tests/date_sunrise_error.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test date_sunrise() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : error conditions *** + +-- Testing date_sunrise() function with Zero arguments -- + +Warning: date_sunrise() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing date_sunrise() function with more than expected no. of arguments -- + +Warning: date_sunrise() expects at most 6 parameters, 7 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation1.phpt b/ext/date/tests/date_sunrise_variation1.phpt new file mode 100644 index 000000000..bf6b17ede --- /dev/null +++ b/ext/date/tests/date_sunrise_variation1.phpt @@ -0,0 +1,315 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to first argument time. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for time + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($value, SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunrise($value, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunrise($value, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--int 0-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--int 1-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--int 12345-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--int -12345-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--float 10.5-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--float -10.5-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--float .5-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--empty array-- + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--lowercase null-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--lowercase true-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--lowercase false-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--uppercase TRUE-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--uppercase FALSE-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "08:56" +float(8.944%d) +int(28599) + +--unset var-- +string(5) "08:56" +float(8.944%d) +int(28599) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation2.phpt b/ext/date/tests/date_sunrise_variation2.phpt new file mode 100644 index 000000000..915b790bc --- /dev/null +++ b/ext/date/tests/date_sunrise_variation2.phpt @@ -0,0 +1,212 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to second argument format. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($time, $value, $latitude, $longitude, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--float 10.5-- + +Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float -10.5-- + +Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float 12.3456789000e10-- + +Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float -12.3456789000e10-- + +Warning: date_sunrise(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float .5-- +int(1218174483) + +--empty array-- + +Warning: date_sunrise() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1218174483) + +--lowercase null-- +int(1218174483) + +--lowercase true-- +string(5) "06:48" + +--lowercase false-- +int(1218174483) + +--uppercase TRUE-- +string(5) "06:48" + +--uppercase FALSE-- +int(1218174483) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1218174483) + +--unset var-- +int(1218174483) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation3.phpt b/ext/date/tests/date_sunrise_variation3.phpt new file mode 100644 index 000000000..46c5783c1 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation3.phpt @@ -0,0 +1,294 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to third argument latitude. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for latitude + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $value, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, $value, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, $value, $longitude, $zenith, $gmt_offset) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--int 0-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--int 1-- +string(5) "01:09" +float(1.155%d) +int(1218177558) + +--int 12345-- +bool(false) +bool(false) +bool(false) + +--int -12345-- +bool(false) +bool(false) +bool(false) + +--empty array-- + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--lowercase null-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--lowercase true-- +string(5) "01:09" +float(1.155%d) +int(1218177558) + +--lowercase false-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--uppercase TRUE-- +string(5) "01:09" +float(1.155%d) +int(1218177558) + +--uppercase FALSE-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "01:10" +float(1.174%d) +int(1218177627) + +--unset var-- +string(5) "01:10" +float(1.1742%d) +int(1218177627) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation4.phpt b/ext/date/tests/date_sunrise_variation4.phpt new file mode 100644 index 000000000..c48f53831 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation4.phpt @@ -0,0 +1,296 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to fourth argument longitude. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for longitude + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $latitude, $value, $zenith, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, $latitude, $value, $zenith, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $value, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--int 0-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--int 1-- +string(5) "05:08" +float(5.133%d) +int(1218172081) + +--int 12345-- +string(5) "21:45" +float(21.759%d) +int(1218145534) + +--int -12345-- +string(5) "12:41" +float(12.698%d) +int(1218199315) + +--empty array-- + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--lowercase null-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--lowercase true-- +string(5) "05:08" +float(5.133%d) +int(1218172081) + +--lowercase false-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--uppercase TRUE-- +string(5) "05:08" +float(5.133%d) +int(1218172081) + +--uppercase FALSE-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "05:12" +float(5.200%d) +int(1218172321) + +--unset var-- +string(5) "05:12" +float(5.200%d) +int(1218172321) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation5.phpt b/ext/date/tests/date_sunrise_variation5.phpt new file mode 100644 index 000000000..e697836d1 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation5.phpt @@ -0,0 +1,296 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to fifth argument zenith +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for zenith + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $latitude, $longitude, $value, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $value, $gmt_offset) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $value, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--int 0-- +bool(false) +bool(false) +bool(false) + +--int 1-- +bool(false) +bool(false) +bool(false) + +--int 12345-- +string(5) "09:52" +float(9.882%d) +int(1218169377) + +--int -12345-- +string(5) "09:54" +float(9.909%d) +int(1218169475) + +--empty array-- + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +bool(false) +bool(false) +bool(false) + +--lowercase null-- +bool(false) +bool(false) +bool(false) + +--lowercase true-- +bool(false) +bool(false) +bool(false) + +--lowercase false-- +bool(false) +bool(false) +bool(false) + +--uppercase TRUE-- +bool(false) +bool(false) +bool(false) + +--uppercase FALSE-- +bool(false) +bool(false) +bool(false) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +bool(false) +bool(false) +bool(false) + +--unset var-- +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation6.phpt b/ext/date/tests/date_sunrise_variation6.phpt new file mode 100644 index 000000000..a96b95f56 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation6.phpt @@ -0,0 +1,295 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing unexpected values to sixth argument gmt_offset. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for gmt_offset + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $value) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $zenith, $value) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zenith, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--int 0-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--int 1-- +string(5) "06:48" +float(6.800%d) +int(1218174483) + +--int 12345-- +string(5) "14:48" +float(14.800%d) +int(1218174483) + +--int -12345-- +string(5) "12:48" +float(12.800%d) +int(1218174483) + +--empty array-- + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--lowercase null-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--lowercase true-- +string(5) "06:48" +float(6.800%d) +int(1218174483) + +--lowercase false-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--uppercase TRUE-- +string(5) "06:48" +float(6.800%d) +int(1218174483) + +--uppercase FALSE-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--empty string DQ-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunrise() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "05:48" +float(5.800%d) +int(1218174483) + +--unset var-- +string(5) "05:48" +float(5.800%d) +int(1218174483) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation7.phpt b/ext/date/tests/date_sunrise_variation7.phpt new file mode 100644 index 000000000..fa5f363a5 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation7.phpt @@ -0,0 +1,57 @@ +--TEST-- +Test date_sunrise() function : usage variation - Checking sunrise for consecutive days in specific timezone +--FILE-- + array ("Latitude" => -14.24, "Longitude" => -170.72, "GMT" => -11), + "US/Alaska" => array ("Latitude" => 61, "Longitude" => -150 , "GMT" => -9), + "America/Chicago" => array ("Latitude" => 41.85, "Longitude" => -87.65 , "GMT" => -5), + "America/Montevideo" => array ("Latitude" => -34.88, "Longitude" => -56.18 , "GMT" => -3), + "Africa/Casablanca" => array ("Latitude" => 33.65, "Longitude" => -7.58, "GMT" => 0), + "Europe/Moscow" => array ("Latitude" => 55.75, "Longitude" => 37.58, "GMT" => 4), + "Asia/Hong_Kong" => array ("Latitude" => 22.28, "Longitude" => 114.15 , "GMT" => 8), + "Australia/Brisbane" => array ("Latitude" => -27.46, "Longitude" => 153.2 , "GMT" => 10), + "Pacific/Wallis" => array ("Latitude" => -13.3, "Longitude" => -176.16, "GMT" => 12), +); + +foreach($inputs as $timezone => $value) { + date_default_timezone_set($timezone); + $time = mktime(8, 8, 8, 8, 11, 2008); + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $value["Latitude"], $value["Longitude"], 90, $value["GMT"] )); + $time = mktime(8, 8, 8, 8, 12, 2008); + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, $value["Latitude"], $value["Longitude"], 90, $value["GMT"]) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** +string(5) "06:41" +string(5) "06:41" +string(5) "05:09" +string(5) "05:11" +string(5) "05:59" +string(5) "06:00" +string(5) "07:30" +string(5) "07:29" +string(5) "05:53" +string(5) "05:53" +string(5) "05:59" +string(5) "06:01" +string(5) "06:01" +string(5) "06:02" +string(5) "06:23" +string(5) "06:22" +string(5) "06:03" +string(5) "06:02" +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation8.phpt b/ext/date/tests/date_sunrise_variation8.phpt new file mode 100644 index 000000000..1d22be8c8 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation8.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test date_sunrise() function : usage variation - Checking with North and South poles when Sun is up and down all day +--FILE-- + mktime(8, 8, 8, 8, 12, 2008), + "13 Aug 2008" => mktime(8, 8, 8, 8, 13, 2008), + + //Date at which Sun is up all day at South Pole + "12 Nov 2008" => mktime(8, 8, 8, 11, 12, 2008), + "13 Nov 2008" => mktime(8, 8, 8, 11, 13, 2008), +); + +//Iterate over different date and time +foreach( $time_date as $date => $time ){ + echo "\n--$date--\n"; + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, 90, 0 ) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, 90, 0 ) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, 90, 0 ) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_STRING, -90, 0 ) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_DOUBLE, -90, 0 ) ); + var_dump( date_sunrise($time, SUNFUNCS_RET_TIMESTAMP, -90, 0 ) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunrise() : usage variation *** + +--12 Aug 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + +--13 Aug 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + +--12 Nov 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + +--13 Nov 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunrise_variation9.phpt b/ext/date/tests/date_sunrise_variation9.phpt new file mode 100644 index 000000000..49af06d52 --- /dev/null +++ b/ext/date/tests/date_sunrise_variation9.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test date_sunrise() function : usage variation - Passing high positive and negative float values to time argument. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing date_sunrise\(\) : usage variation \*\*\* + +-- Testing date_sunrise\(\) function by passing float 12.3456789000e10 value to time -- +string\(5\) "(07:34|07:49)" +float\((7.566[0-9]*|7.821[0-9]*)\) +int\((-1097256359|123456811756)\) + +-- Testing date_sunrise\(\) function by passing float -12.3456789000e10 value to time -- +string\(5\) "(07:42|08:48|08:04)" +float\((7.713[0-9]*|8.810[0-9]*|8.074[0-9]*)\) +int\((1097304168|-2147443882|-123456761731)\) +===DONE=== diff --git a/ext/date/tests/date_sunset_error.phpt b/ext/date/tests/date_sunset_error.phpt new file mode 100644 index 000000000..a5e75b649 --- /dev/null +++ b/ext/date/tests/date_sunset_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test date_sunset() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : error conditions *** + +-- Testing date_sunset() function with Zero arguments -- + +Warning: date_sunset() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing date_sunset() function with more than expected no. of arguments -- + +Warning: date_sunset() expects at most 6 parameters, 7 given in %s on line %d +bool(false) + +Warning: date_sunset() expects at most 6 parameters, 7 given in %s on line %d +bool(false) + +Warning: date_sunset() expects at most 6 parameters, 7 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation1.phpt b/ext/date/tests/date_sunset_variation1.phpt new file mode 100644 index 000000000..c2e119571 --- /dev/null +++ b/ext/date/tests/date_sunset_variation1.phpt @@ -0,0 +1,316 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to first argument time. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for time + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($value, SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunset($value, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunset($value, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--int 0-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--int 1-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--int 12345-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--int -12345-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--float 10.5-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--float -10.5-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--float .5-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--empty array-- + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--lowercase null-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--lowercase true-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--lowercase false-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--uppercase TRUE-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--uppercase FALSE-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "18:22" +float(18.377%d) +int(62558) + +--unset var-- +string(5) "18:22" +float(18.377%d) +int(62558) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation2.phpt b/ext/date/tests/date_sunset_variation2.phpt new file mode 100644 index 000000000..575b64a22 --- /dev/null +++ b/ext/date/tests/date_sunset_variation2.phpt @@ -0,0 +1,211 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to second argument format. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($time, $value, $latitude, $longitude, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--float 10.5-- + +Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float -10.5-- + +Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float 12.3456789000e10-- + +Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float -12.3456789000e10-- + +Warning: date_sunset(): Wrong return format given, pick one of SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING or SUNFUNCS_RET_DOUBLE in %s on line %d +bool(false) + +--float .5-- +int(1218199253) + +--empty array-- + +Warning: date_sunset() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1218199253) + +--lowercase null-- +int(1218199253) + +--lowercase true-- +string(5) "18:10" + +--lowercase false-- +int(1218199253) + +--uppercase TRUE-- +string(5) "18:10" + +--uppercase FALSE-- +int(1218199253) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1218199253) + +--unset var-- +int(1218199253) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation3.phpt b/ext/date/tests/date_sunset_variation3.phpt new file mode 100644 index 000000000..142cb9d0b --- /dev/null +++ b/ext/date/tests/date_sunset_variation3.phpt @@ -0,0 +1,297 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to third argument latitude. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for latitude + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $value, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, $value, $longitude, $zenith, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, $value, $longitude, $zenith, $gmt_offset) ); + +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--int 0-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--int 1-- +string(5) "17:44" +float(17.7496%d) +int(1218197698) + +--int 12345-- +bool(false) +bool(false) +bool(false) + +--int -12345-- +string(5) "17:35" +float(17.598%d) +int(1218197155) + +--empty array-- + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--lowercase null-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--lowercase true-- +string(5) "17:44" +float(17.7496%d) +int(1218197698) + +--lowercase false-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--uppercase TRUE-- +string(5) "17:44" +float(17.7496%d) +int(1218197698) + +--uppercase FALSE-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 3 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "17:43" +float(17.730%d) +int(1218197630) + +--unset var-- +string(5) "17:43" +float(17.730%d) +int(1218197630) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation4.phpt b/ext/date/tests/date_sunset_variation4.phpt new file mode 100644 index 000000000..7840f8f8f --- /dev/null +++ b/ext/date/tests/date_sunset_variation4.phpt @@ -0,0 +1,296 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to fourth argument longitude. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for longitude + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $latitude, $value, $zenith, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, $latitude, $value, $zenith, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $value, $zenith, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--int 0-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--int 1-- +string(5) "23:59" +float(23.992%d) +int(1218220174) + +--int 12345-- +string(5) "17:15" +float(17.259%d) +int(1218195932) + +--int -12345-- +string(5) "12:18" +float(12.316%d) +int(1218178138) + +--empty array-- + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--lowercase null-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--lowercase true-- +string(5) "23:59" +float(23.992%d) +int(1218220174) + +--lowercase false-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--uppercase TRUE-- +string(5) "23:59" +float(23.992%d) +int(1218220174) + +--uppercase FALSE-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 4 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "00:03" +float(0.059%d) +int(1218220414) + +--unset var-- +string(5) "00:03" +float(0.059%d) +int(1218220414) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation5.phpt b/ext/date/tests/date_sunset_variation5.phpt new file mode 100644 index 000000000..26bf4ccc9 --- /dev/null +++ b/ext/date/tests/date_sunset_variation5.phpt @@ -0,0 +1,296 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to fifth argument zenith. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for zenith + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $latitude, $longitude, $value, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $value, $gmt_offset) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $value, $gmt_offset) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--int 0-- +bool(false) +bool(false) +bool(false) + +--int 1-- +bool(false) +bool(false) +bool(false) + +--int 12345-- +string(5) "19:19" +float(19.319%d) +int(1218203349) + +--int -12345-- +bool(false) +bool(false) +bool(false) + +--empty array-- + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +bool(false) +bool(false) +bool(false) + +--lowercase null-- +bool(false) +bool(false) +bool(false) + +--lowercase true-- +bool(false) +bool(false) +bool(false) + +--lowercase false-- +bool(false) +bool(false) +bool(false) + +--uppercase TRUE-- +bool(false) +bool(false) +bool(false) + +--uppercase FALSE-- +bool(false) +bool(false) +bool(false) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 5 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +bool(false) +bool(false) +bool(false) + +--unset var-- +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation6.phpt b/ext/date/tests/date_sunset_variation6.phpt new file mode 100644 index 000000000..a434de871 --- /dev/null +++ b/ext/date/tests/date_sunset_variation6.phpt @@ -0,0 +1,296 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing unexpected values to sixth argument gmt_offset. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for gmt_offset + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $latitude, $longitude, $zenith, $value) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, $latitude, $longitude, $zenith, $value) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $zenith, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--int 0-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--int 1-- +string(5) "13:40" +float(13.681%d) +int(1218199253) + +--int 12345-- +string(5) "21:40" +float(21.681%d) +int(1218199253) + +--int -12345-- +string(5) "19:40" +float(19.681%d) +int(1218199253) + +--empty array-- + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--lowercase null-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--lowercase true-- +string(5) "13:40" +float(13.681%d) +int(1218199253) + +--lowercase false-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--uppercase TRUE-- +string(5) "13:40" +float(13.681%d) +int(1218199253) + +--uppercase FALSE-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--empty string DQ-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +Warning: date_sunset() expects parameter 6 to be double, object given in %s on line %d +bool(false) + +--undefined var-- +string(5) "12:40" +float(12.681%d) +int(1218199253) + +--unset var-- +string(5) "12:40" +float(12.681%d) +int(1218199253) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation7.phpt b/ext/date/tests/date_sunset_variation7.phpt new file mode 100644 index 000000000..0c64d969e --- /dev/null +++ b/ext/date/tests/date_sunset_variation7.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test date_sunset() function : usage variation - Checking sunrise for consecutive days in specific timezone +--FILE-- + array ("Latitude" => -14.24, "Longitude" => -170.72, "GMT" => -11), + "US/Alaska" => array ("Latitude" => 61, "Longitude" => -150 , "GMT" => -9), + "America/Chicago" => array ("Latitude" => 41.85, "Longitude" => -87.65 , "GMT" => -5), + "America/Montevideo" => array ("Latitude" => -34.88, "Longitude" => -56.18 , "GMT" => -3), + "Africa/Casablanca" => array ("Latitude" => 33.65, "Longitude" => "-7.58", "GMT" => 0), + "Europe/Moscow" => array ("Latitude" => 55.75, "Longitude" => 37.58, "GMT" => 4), + "Asia/Hong_Kong" => array ("Latitude" => 22.28, "Longitude" => 114.15 , "GMT" => 8), + "Australia/Brisbane" => array ("Latitude" => -27.46, "Longitude" => 153.2 , "GMT" => 10), + "Pacific/Wallis" => array ("Latitude" => -13.3, "Longitude" => -176.16, "GMT" => 12), +); + +foreach($inputs as $timezone => $value) { + echo "\n--$timezone--\n"; + date_default_timezone_set($timezone); + $time = mktime(8, 8, 8, 8, 11, 2008); + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $value["Latitude"], $value["Longitude"], 90, $value["GMT"] )); + $time = mktime(8, 8, 8, 8, 12, 2008); + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, $value["Latitude"], $value["Longitude"], 90, $value["GMT"]) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--Pacific/Samoa-- +string(5) "18:13" +string(5) "18:13" + +--US/Alaska-- +string(5) "21:00" +string(5) "20:57" + +--America/Chicago-- +string(5) "19:51" +string(5) "19:50" + +--America/Montevideo-- +string(5) "18:08" +string(5) "18:09" + +--Africa/Casablanca-- +string(5) "19:17" +string(5) "19:16" + +--Europe/Moscow-- +string(5) "21:09" +string(5) "21:07" + +--Asia/Hong_Kong-- +string(5) "18:55" +string(5) "18:54" + +--Australia/Brisbane-- +string(5) "17:21" +string(5) "17:21" + +--Pacific/Wallis-- +string(5) "17:36" +string(5) "17:36" +===DONE=== diff --git a/ext/date/tests/date_sunset_variation8.phpt b/ext/date/tests/date_sunset_variation8.phpt new file mode 100644 index 000000000..9114e3bfa --- /dev/null +++ b/ext/date/tests/date_sunset_variation8.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test date_sunset() function : usage variation - Checking with North and South poles when Sun is up and down all day +--FILE-- + mktime(8, 8, 8, 8, 12, 2008), + + //Date at which Sun is up all day at South Pole + "12 Nov 2008" => mktime(8, 8, 8, 11, 12, 2008), +); + +//Iterate over different date and time +foreach( $time_date as $date => $time ){ + echo "\n--$date--\n"; + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, 90, 0 ) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, 90, 0 ) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, 90, 0 ) ); + var_dump( date_sunset($time, SUNFUNCS_RET_STRING, -90, 0 ) ); + var_dump( date_sunset($time, SUNFUNCS_RET_DOUBLE, -90, 0 ) ); + var_dump( date_sunset($time, SUNFUNCS_RET_TIMESTAMP, -90, 0 ) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing date_sunset() : usage variation *** + +--12 Aug 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + +--12 Nov 2008-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/date_sunset_variation9.phpt b/ext/date/tests/date_sunset_variation9.phpt new file mode 100644 index 000000000..59a4b584a --- /dev/null +++ b/ext/date/tests/date_sunset_variation9.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test date_sunset() function : usage variation - Passing high positive and negative float values to time argument. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing date_sunset\(\) : usage variation \*\*\* + +-- Testing date_sunset\(\) function by passing float 12.3456789000e10 value to time -- +string\(5\) "(19:49|19:28)" +float\((19.830[0-9]*|19.830[0-9]*|19.480[0-9]*)\) +int\((-1097212211|123456853728)\) + +-- Testing date_sunset\(\) function by passing float -12.3456789000e10 value to time -- +string\(5\) "(19:03|18:12|18:48)" +float\((19.056[0-9]*|18.213[0-9]*|18.808[0-9]*)\) +int\((1097345002|-2147410031|-123456723090)\) +===DONE=== diff --git a/ext/date/tests/getdate_basic.phpt b/ext/date/tests/getdate_basic.phpt new file mode 100644 index 000000000..5d6cc815d --- /dev/null +++ b/ext/date/tests/getdate_basic.phpt @@ -0,0 +1,76 @@ +--TEST-- +Test getdate() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getdate() : basic functionality *** +array(11) { + ["seconds"]=> + int(10) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(10) +} +array(11) { + ["seconds"]=> + int(%d) + ["minutes"]=> + int(%d) + ["hours"]=> + int(%d) + ["mday"]=> + int(%d) + ["wday"]=> + int(%d) + ["mon"]=> + int(%d) + ["year"]=> + int(%d) + ["yday"]=> + int(%d) + ["weekday"]=> + string(%d) %s + ["month"]=> + string(%d) %s + [0]=> + int(%d) +} +===DONE=== diff --git a/ext/date/tests/getdate_error.phpt b/ext/date/tests/getdate_error.phpt new file mode 100644 index 000000000..149d06695 --- /dev/null +++ b/ext/date/tests/getdate_error.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test getdate() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getdate() : error conditions *** + +-- Testing getdate() function with more than expected no. of arguments -- + +Warning: getdate() expects at most 1 parameter, 2 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/getdate_variation1.phpt b/ext/date/tests/getdate_variation1.phpt new file mode 100644 index 000000000..4935dfe8e --- /dev/null +++ b/ext/date/tests/getdate_variation1.phpt @@ -0,0 +1,444 @@ +--TEST-- +Test getdate() function : usage variation - Passing unexpected values to first argument timestamp. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( getdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- + +*** Testing getdate() : usage variation *** + +--float 10.5-- +array(11) { + ["seconds"]=> + int(10) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(10) +} + +--float -10.5-- +array(11) { + ["seconds"]=> + int(50) + ["minutes"]=> + int(29) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(-10) +} + +--float .5-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--empty array-- + +Warning: getdate() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: getdate() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: getdate() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: getdate() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--lowercase null-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--lowercase true-- +array(11) { + ["seconds"]=> + int(1) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(1) +} + +--lowercase false-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--uppercase TRUE-- +array(11) { + ["seconds"]=> + int(1) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(1) +} + +--uppercase FALSE-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--empty string DQ-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: getdate() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: getdate() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: getdate() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--unset var-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation2.phpt b/ext/date/tests/getdate_variation2.phpt new file mode 100644 index 000000000..f987d2134 --- /dev/null +++ b/ext/date/tests/getdate_variation2.phpt @@ -0,0 +1,114 @@ +--TEST-- +Test getdate() function : usage variation - Passing octal timestamp values +--FILE-- + 05, + 'octal 010' => 010, + 'octal -010' => -010, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( getdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing getdate() : usage variation *** + +--octal 05-- +array(11) { + ["seconds"]=> + int(5) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(5) +} + +--octal 010-- +array(11) { + ["seconds"]=> + int(8) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(8) +} + +--octal -010-- +array(11) { + ["seconds"]=> + int(52) + ["minutes"]=> + int(29) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(-8) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation3.phpt b/ext/date/tests/getdate_variation3.phpt new file mode 100644 index 000000000..f7d686320 --- /dev/null +++ b/ext/date/tests/getdate_variation3.phpt @@ -0,0 +1,114 @@ +--TEST-- +Test getdate() function : usage variation - Passing hexadcimal timestamp values +--FILE-- + 0x5, + 'hexadcimal 0xCAFE' => 0xCAFE, + 'octal -0xCAFE' => -0xCAFE, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( getdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing getdate() : usage variation *** + +--hexadcimal 0x5-- +array(11) { + ["seconds"]=> + int(5) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(5) +} + +--hexadcimal 0xCAFE-- +array(11) { + ["seconds"]=> + int(6) + ["minutes"]=> + int(56) + ["hours"]=> + int(19) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(51966) +} + +--octal -0xCAFE-- +array(11) { + ["seconds"]=> + int(54) + ["minutes"]=> + int(3) + ["hours"]=> + int(15) + ["mday"]=> + int(31) + ["wday"]=> + int(3) + ["mon"]=> + int(12) + ["year"]=> + int(1969) + ["yday"]=> + int(364) + ["weekday"]=> + string(9) "Wednesday" + ["month"]=> + string(8) "December" + [0]=> + int(-51966) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation4.phpt b/ext/date/tests/getdate_variation4.phpt new file mode 100644 index 000000000..92719ac65 --- /dev/null +++ b/ext/date/tests/getdate_variation4.phpt @@ -0,0 +1,141 @@ +--TEST-- +Test getdate() function : usage variation - Verifyig by supplying year-wise sample time stamps since Unix epoch time +--FILE-- + 0, + '01 Jan 1971' => 31536000, + '01 Jan 1972' => 63072000, + '01 Jan 1973' => 94694400, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( getdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing getdate() : usage variation *** + +--01 Jan 1970-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--01 Jan 1971-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(5) + ["mon"]=> + int(1) + ["year"]=> + int(1971) + ["yday"]=> + int(0) + ["weekday"]=> + string(6) "Friday" + ["month"]=> + string(7) "January" + [0]=> + int(31536000) +} + +--01 Jan 1972-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(6) + ["mon"]=> + int(1) + ["year"]=> + int(1972) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Saturday" + ["month"]=> + string(7) "January" + [0]=> + int(63072000) +} + +--01 Jan 1973-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(1) + ["mon"]=> + int(1) + ["year"]=> + int(1973) + ["yday"]=> + int(0) + ["weekday"]=> + string(6) "Monday" + ["month"]=> + string(7) "January" + [0]=> + int(94694400) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation5.phpt b/ext/date/tests/getdate_variation5.phpt new file mode 100644 index 000000000..e4524a865 --- /dev/null +++ b/ext/date/tests/getdate_variation5.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test getdate() function : usage variation - Verifyig with different timezones on Unix epoch timestamp +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getdate() : usage variation *** + +--Pacific/Samoa-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(13) + ["mday"]=> + int(31) + ["wday"]=> + int(3) + ["mon"]=> + int(12) + ["year"]=> + int(1969) + ["yday"]=> + int(364) + ["weekday"]=> + string(9) "Wednesday" + ["month"]=> + string(8) "December" + [0]=> + int(0) +} + +--US/Alaska-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(14) + ["mday"]=> + int(31) + ["wday"]=> + int(3) + ["mon"]=> + int(12) + ["year"]=> + int(1969) + ["yday"]=> + int(364) + ["weekday"]=> + string(9) "Wednesday" + ["month"]=> + string(8) "December" + [0]=> + int(0) +} + +--Africa/Casablanca-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(0) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--Europe/Moscow-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(3) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--Asia/Hong_Kong-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(8) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--Australia/Brisbane-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(10) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--Pacific/Wallis-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(0) + ["hours"]=> + int(12) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation6.phpt b/ext/date/tests/getdate_variation6.phpt new file mode 100644 index 000000000..5c03a3bb7 --- /dev/null +++ b/ext/date/tests/getdate_variation6.phpt @@ -0,0 +1,109 @@ +--TEST-- +Test getdate() function : usage variation - Passing strings containing numbers +--FILE-- + '0', + 'String 10.5' => "10.5", + 'String -10.5' => '-10.5', +); + +// loop through each element of the array for timestamp +foreach($inputs as $key => $value) { + echo "\n--$key--\n"; + var_dump( getdate($value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing getdate() : usage variation *** + +--String 0-- +array(11) { + ["seconds"]=> + int(0) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(0) +} + +--String 10.5-- +array(11) { + ["seconds"]=> + int(10) + ["minutes"]=> + int(30) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(10) +} + +--String -10.5-- +array(11) { + ["seconds"]=> + int(50) + ["minutes"]=> + int(29) + ["hours"]=> + int(5) + ["mday"]=> + int(1) + ["wday"]=> + int(4) + ["mon"]=> + int(1) + ["year"]=> + int(1970) + ["yday"]=> + int(0) + ["weekday"]=> + string(8) "Thursday" + ["month"]=> + string(7) "January" + [0]=> + int(-10) +} +===DONE=== diff --git a/ext/date/tests/getdate_variation7.phpt b/ext/date/tests/getdate_variation7.phpt new file mode 100644 index 000000000..5af2dd53f --- /dev/null +++ b/ext/date/tests/getdate_variation7.phpt @@ -0,0 +1,78 @@ +--TEST-- +Test getdate() function : usage variation - Passing high positive and negative float values to timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- + +\*\*\* Testing getdate\(\) : usage variation \*\*\* + +-- Testing getdate\(\) function by passing float 12.3456789000e10 value to timestamp -- +array\(11\) { + \["seconds"\]=> + int\((36|0)\) + \["minutes"\]=> + int\((43|0)\) + \["hours"\]=> + int\((10|6)\) + \["mday"\]=> + int\((26|11)\) + \["wday"\]=> + int\((2|6)\) + \["mon"\]=> + int\(3\) + \["year"\]=> + int\((1935|5882)\) + \["yday"\]=> + int\((84|69)\) + \["weekday"\]=> + string\((7|8)\) "(Tuesday|Saturday)" + \["month"\]=> + string\(5\) "March" + \[0\]=> + int\((-1097262584|123456789000)\) +} + +-- Testing getdate\(\) function by passing float -12.3456789000e10 value to timestamp -- +array\(11\) { + \["seconds"\]=> + int\((44|12|20)\) + \["minutes"\]=> + int\((39|23)\) + \["hours"\]=> + int\((0|2|5)\) + \["mday"\]=> + int\((9|14|23)\) + \["wday"\]=> + int\((6|-4)\) + \["mon"\]=> + int\((10|12)\) + \["year"\]=> + int\((2004|1901|-1943)\) + \["yday"\]=> + int\((282|347|295)\) + \["weekday"\]=> + string\((8|7)\) "(Saturday|Unknown)" + \["month"\]=> + string\((7|8)\) "(October|December)" + \[0\]=> + int\((1097262584|-2147483648|-123456789000)\) +} +===DONE=== diff --git a/ext/date/tests/gettimeofday_basic.phpt b/ext/date/tests/gettimeofday_basic.phpt new file mode 100644 index 000000000..fe04f015e --- /dev/null +++ b/ext/date/tests/gettimeofday_basic.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gettimeofday() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gettimeofday() : basic functionality *** +float(%f) +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/gettimeofday_error.phpt b/ext/date/tests/gettimeofday_error.phpt new file mode 100644 index 000000000..558a381fe --- /dev/null +++ b/ext/date/tests/gettimeofday_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test gettimeofday() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gettimeofday() : error conditions *** + +-- Testing gettimeofday() function with more than expected no. of arguments -- + +Warning: gettimeofday() expects at most 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/date/tests/gettimeofday_variation1.phpt b/ext/date/tests/gettimeofday_variation1.phpt new file mode 100644 index 000000000..f494a25b5 --- /dev/null +++ b/ext/date/tests/gettimeofday_variation1.phpt @@ -0,0 +1,284 @@ +--TEST-- +Test gettimeofday() function : usage variation - Passing unexpected values to get_as_float argument +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for get_as_float + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gettimeofday($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gettimeofday() : usage variation *** + +--int 0-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--int 1-- +float(%f) + +--int 12345-- +float(%f) + +--int -12345-- +float(%f) + +--float 10.5-- +float(%f) + +--float -10.5-- +float(%f) + +--float 12.3456789000e10-- +float(%f) + +--float -12.3456789000e10-- +float(%f) + +--float .5-- +float(%f) + +--empty array-- + +Warning: gettimeofday() expects parameter 1 to be boolean, array given in %s on line %d +NULL + +--int indexed array-- + +Warning: gettimeofday() expects parameter 1 to be boolean, array given in %s on line %d +NULL + +--associative array-- + +Warning: gettimeofday() expects parameter 1 to be boolean, array given in %s on line %d +NULL + +--nested arrays-- + +Warning: gettimeofday() expects parameter 1 to be boolean, array given in %s on line %d +NULL + +--uppercase NULL-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--lowercase null-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--lowercase true-- +float(%f) + +--lowercase false-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--uppercase TRUE-- +float(%f) + +--uppercase FALSE-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--empty string DQ-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--empty string SQ-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--string DQ-- +float(%f) + +--string SQ-- +float(%f) + +--mixed case string-- +float(%f) + +--heredoc-- +float(%f) + +--instance of classWithToString-- + +Warning: gettimeofday() expects parameter 1 to be boolean, object given in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: gettimeofday() expects parameter 1 to be boolean, object given in %s on line %d +NULL + +--undefined var-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} + +--unset var-- +array(4) { + ["sec"]=> + int(%d) + ["usec"]=> + int(%d) + ["minuteswest"]=> + int(-330) + ["dsttime"]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/gmdate_basic.phpt b/ext/date/tests/gmdate_basic.phpt new file mode 100644 index 000000000..ae036cacb --- /dev/null +++ b/ext/date/tests/gmdate_basic.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test gmdate() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : basic functionality *** +string(24) "2008-08-08T08:08:08+0000" +string(%d) "%s" +===DONE=== diff --git a/ext/date/tests/gmdate_error.phpt b/ext/date/tests/gmdate_error.phpt new file mode 100644 index 000000000..fbee07126 --- /dev/null +++ b/ext/date/tests/gmdate_error.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test gmdate() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : error conditions *** + +-- Testing gmdate() function with Zero arguments -- + +Warning: gmdate() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing gmdate() function with more than expected no. of arguments -- + +Warning: gmdate() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/gmdate_variation1.phpt b/ext/date/tests/gmdate_variation1.phpt new file mode 100644 index 000000000..f6850ccd2 --- /dev/null +++ b/ext/date/tests/gmdate_variation1.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test gmdate() function : usage variation - Passing unexpected values to format argument. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmdate($value, $timestamp) ); + var_dump( gmdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +--int 0-- +string(1) "0" +string(1) "0" + +--int 1-- +string(1) "1" +string(1) "1" + +--int 12345-- +string(5) "12345" +string(5) "12345" + +--int -12345-- +string(6) "-12345" +string(6) "-12345" + +--float 10.5-- +string(4) "10.5" +string(4) "10.5" + +--float -10.5-- +string(5) "-10.5" +string(5) "-10.5" + +--float 12.3456789000e10-- +string(12) "123456789000" +string(12) "123456789000" + +--float -12.3456789000e10-- +string(13) "-123456789000" +string(13) "-123456789000" + +--float .5-- +string(3) "0.5" +string(3) "0.5" + +--empty array-- + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmdate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(0) "" +string(0) "" + +--lowercase null-- +string(0) "" +string(0) "" + +--lowercase true-- +string(1) "1" +string(1) "1" + +--lowercase false-- +string(0) "" +string(0) "" + +--uppercase TRUE-- +string(1) "1" +string(1) "1" + +--uppercase FALSE-- +string(0) "" +string(0) "" + +--empty string DQ-- +string(0) "" +string(0) "" + +--empty string SQ-- +string(0) "" +string(0) "" + +--instance of classWithToString-- +string(53) "CFridayam0808 AM 2008b8UTC2008-08-08T08:08:08+00:0031" +string(%d) "%s" + +--instance of classWithoutToString-- + +Warning: gmdate() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +Warning: gmdate() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +--undefined var-- +string(0) "" +string(0) "" + +--unset var-- +string(0) "" +string(0) "" +===DONE=== diff --git a/ext/date/tests/gmdate_variation10.phpt b/ext/date/tests/gmdate_variation10.phpt new file mode 100644 index 000000000..d5298368d --- /dev/null +++ b/ext/date/tests/gmdate_variation10.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Timezone format options to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with Timezone identifier format -- +string(3) "UTC" +string(3) "UTC" + +-- Testing gmdate() function with checking whether date is in daylight saving time format -- +string(1) "%d" +string(1) "%d" + +-- Testing gmdate() function with difference to GMT in hours format -- +string(5) "+0000" +string(5) "+0000" + +-- Testing gmdate() function with Difference to GMT in hours using colon as separator format -- +string(6) "+00:00" +string(6) "+00:00" + +-- Testing gmdate() function with timezone abbreviation format -- +string(3) "GMT" +string(3) "GMT" + +-- Testing gmdate() function with timezone offset format -- +string(3) "GMT" +string(3) "GMT" +===DONE=== diff --git a/ext/date/tests/gmdate_variation11.phpt b/ext/date/tests/gmdate_variation11.phpt new file mode 100644 index 000000000..a9520907c --- /dev/null +++ b/ext/date/tests/gmdate_variation11.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Full Date/Time format options to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with ISO 8601 date format -- +string(%d) "%s" +string(25) "2008-08-08T08:08:08+00:00" + +-- Testing gmdate() function with RFC 2822 date format -- +string(%d) "%s" +string(31) "Fri, 08 Aug 2008 08:08:08 +0000" + +-- Testing gmdate() function with seconds since Unix Epoch format -- +string(%d) "%d" +string(10) "1218182888" +===DONE=== diff --git a/ext/date/tests/gmdate_variation12.phpt b/ext/date/tests/gmdate_variation12.phpt new file mode 100644 index 000000000..8f0146f38 --- /dev/null +++ b/ext/date/tests/gmdate_variation12.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test gmdate() function : usage variation - Valid and invalid range of timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing gmdate\(\) : usage variation \*\*\* + +-- Testing gmdate\(\) function with minimum range of timestamp -- +string\(24\) "1901-12-13T20:45:54\+0000" + +-- Testing gmdate\(\) function with less than the range of timestamp -- +string\(24\) "(1970-01-01T00:00:00\+0000|1901-12-13T20:45:50\+0000)" + +-- Testing gmdate\(\) function with maximum range of timestamp -- +string\(24\) "2038-01-19T03:14:07\+0000" + +-- Testing gmdate\(\) function with greater than the range of timestamp -- +string\(24\) "(1970-01-01T00:00:00\+0000|2038-01-19T03:14:10\+0000)" +===DONE=== diff --git a/ext/date/tests/gmdate_variation13.phpt b/ext/date/tests/gmdate_variation13.phpt new file mode 100644 index 000000000..adc03919e --- /dev/null +++ b/ext/date/tests/gmdate_variation13.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test gmdate() function : usage variation - Passing predefined constants to format argument. +--FILE-- + DATE_ATOM, + 'DATE_COOKIE Constant' => DATE_COOKIE, + 'DATE_RFC822 Constant' => DATE_RFC822, + 'DATE_RFC850 Constant' => DATE_RFC850, + 'DATE_RFC1036 Constant' => DATE_RFC1036, + 'DATE_RFC1123 Constant' => DATE_RFC1123, + 'DATE_RFC2822 Constant' => DATE_RFC2822, + 'DATE_RFC3339 Constant' => DATE_RFC3339, + 'DATE_RSS Constant' => DATE_RSS, + 'DATE_W3C Constant' => DATE_W3C, +); + +// loop through each element of the array for format +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmdate($value, $timestamp) ); + var_dump( gmdate($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +--DATE_ATOM Constant-- +string(25) "2008-08-08T08:08:08+00:00" +string(%d) "%s" + +--DATE_COOKIE Constant-- +string(30) "Friday, 08-Aug-08 08:08:08 GMT" +string(%d) "%s" + +--DATE_RFC822 Constant-- +string(29) "Fri, 08 Aug 08 08:08:08 +0000" +string(%d) "%s" + +--DATE_RFC850 Constant-- +string(30) "Friday, 08-Aug-08 08:08:08 GMT" +string(%d) "%s" + +--DATE_RFC1036 Constant-- +string(29) "Fri, 08 Aug 08 08:08:08 +0000" +string(%d) "%s" + +--DATE_RFC1123 Constant-- +string(31) "Fri, 08 Aug 2008 08:08:08 +0000" +string(%d) "%s" + +--DATE_RFC2822 Constant-- +string(31) "Fri, 08 Aug 2008 08:08:08 +0000" +string(%d) "%s" + +--DATE_RFC3339 Constant-- +string(25) "2008-08-08T08:08:08+00:00" +string(%d) "%s" + +--DATE_RSS Constant-- +string(31) "Fri, 08 Aug 2008 08:08:08 +0000" +string(%d) "%s" + +--DATE_W3C Constant-- +string(25) "2008-08-08T08:08:08+00:00" +string(%d) "%s" +===DONE=== diff --git a/ext/date/tests/gmdate_variation14.phpt b/ext/date/tests/gmdate_variation14.phpt new file mode 100644 index 000000000..dfea054c6 --- /dev/null +++ b/ext/date/tests/gmdate_variation14.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test gmdate() function : usage variation - Passing high positive and negetive float values to timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing gmdate\(\) : usage variation \*\*\* + +-- Testing gmdate\(\) function with float 12.3456789000e10 to timestamp -- +string\((24|25)\) "(1935-03-26T04:50:16\+0000|5882-03-11T00:30:00\+0000)" + +-- Testing gmdate\(\) function with float -12.3456789000e10 to timestamp -- +string\((24|25)\) "(2004-10-08T19:09:44\+0000|1901-12-13T20:45:52\+0000|-1943-10-22T23:30:00\+0000)" +===DONE=== diff --git a/ext/date/tests/gmdate_variation2.phpt b/ext/date/tests/gmdate_variation2.phpt new file mode 100644 index 000000000..c52de9da7 --- /dev/null +++ b/ext/date/tests/gmdate_variation2.phpt @@ -0,0 +1,210 @@ +--TEST-- +Test gmdate() function : usage variation - Passing unexpected values to timestamp argument. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmdate($format, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +--int 0-- +string(24) "1970-01-01T00:00:00+0000" + +--int 1-- +string(24) "1970-01-01T00:00:01+0000" + +--int 12345-- +string(24) "1970-01-01T03:25:45+0000" + +--int -12345-- +string(24) "1969-12-31T20:34:15+0000" + +--float 10.5-- +string(24) "1970-01-01T00:00:10+0000" + +--float -10.5-- +string(24) "1969-12-31T23:59:50+0000" + +--float .5-- +string(24) "1970-01-01T00:00:00+0000" + +--empty array-- + +Warning: gmdate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmdate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmdate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmdate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(24) "1970-01-01T00:00:00+0000" + +--lowercase null-- +string(24) "1970-01-01T00:00:00+0000" + +--lowercase true-- +string(24) "1970-01-01T00:00:01+0000" + +--lowercase false-- +string(24) "1970-01-01T00:00:00+0000" + +--uppercase TRUE-- +string(24) "1970-01-01T00:00:01+0000" + +--uppercase FALSE-- +string(24) "1970-01-01T00:00:00+0000" + +--empty string DQ-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmdate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmdate() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmdate() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +string(24) "1970-01-01T00:00:00+0000" + +--unset var-- +string(24) "1970-01-01T00:00:00+0000" +===DONE=== diff --git a/ext/date/tests/gmdate_variation3.phpt b/ext/date/tests/gmdate_variation3.phpt new file mode 100644 index 000000000..a93d6e923 --- /dev/null +++ b/ext/date/tests/gmdate_variation3.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test gmdate() function : usage variation - Passing numeric representation of day formats. +--FILE-- + 'd', + 'Day without leading zeros' => 'j', + 'ISO representation' => 'N', + 'Numeric representation of day' => 'w', + 'Day of the year' => 'z' +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmdate($value) ); + var_dump( gmdate($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +--Day with leading zeros-- +string(%d) "%d" +string(2) "08" + +--Day without leading zeros-- +string(%d) "%d" +string(1) "8" + +--ISO representation-- +string(%d) "%d" +string(1) "5" + +--Numeric representation of day-- +string(%d) "%d" +string(1) "5" + +--Day of the year-- +string(%d) "%d" +string(3) "220" +===DONE=== diff --git a/ext/date/tests/gmdate_variation4.phpt b/ext/date/tests/gmdate_variation4.phpt new file mode 100644 index 000000000..bb97b567c --- /dev/null +++ b/ext/date/tests/gmdate_variation4.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test gmdate() function : usage variation - Passing textual representation of day formats. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with partial textual representation of day -- +string(%d) "%s" +string(3) "Fri" + +-- Testing gmdate() function with full textual representation of day -- +string(%d) "%s" +string(6) "Friday" + +-- Testing gmdate() function with English ordinal suffix -- +string(%d) "%s" +string(2) "th" +===DONE=== diff --git a/ext/date/tests/gmdate_variation5.phpt b/ext/date/tests/gmdate_variation5.phpt new file mode 100644 index 000000000..d40488a69 --- /dev/null +++ b/ext/date/tests/gmdate_variation5.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Week representation to format. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with ISO-8601 week number of year format -- +string(%d) "%d" +string(2) "32" +===DONE=== diff --git a/ext/date/tests/gmdate_variation6.phpt b/ext/date/tests/gmdate_variation6.phpt new file mode 100644 index 000000000..f5b63a5b3 --- /dev/null +++ b/ext/date/tests/gmdate_variation6.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Month format options to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with full textual representation of month format -- +string(%d) "%s" +string(6) "August" + +-- Testing gmdate() function with numeric representation of month format -- +string(%d) "%d" +string(2) "08" + +-- Testing gmdate() function with short textual representation of month format -- +string(%d) "%s" +string(3) "Aug" + +-- Testing gmdate() function with numeric representation of month without leading zeros format -- +string(%d) "%d" +string(1) "8" + +-- Testing gmdate() function with number of days in a month format -- +string(%d) "%d" +string(2) "31" +===DONE=== diff --git a/ext/date/tests/gmdate_variation7.phpt b/ext/date/tests/gmdate_variation7.phpt new file mode 100644 index 000000000..8d9c1b0b9 --- /dev/null +++ b/ext/date/tests/gmdate_variation7.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Year format options to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with checking non leap year using Leap Year format -- +string(1) "0" + +-- Testing gmdate() function with checking leap year using Leap Year format -- +string(1) "%d" +string(1) "1" + +-- Testing gmdate() function with ISO-8601 year number format -- +string(4) "%d" +string(4) "2008" + +-- Testing gmdate() function with full numeric representation of year format -- +string(4) "%d" +string(4) "2008" + +-- Testing gmdate() function with 2 digit representation year format -- +string(2) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/gmdate_variation8.phpt b/ext/date/tests/gmdate_variation8.phpt new file mode 100644 index 000000000..8d9c1b0b9 --- /dev/null +++ b/ext/date/tests/gmdate_variation8.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Year format options to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +-- Testing gmdate() function with checking non leap year using Leap Year format -- +string(1) "0" + +-- Testing gmdate() function with checking leap year using Leap Year format -- +string(1) "%d" +string(1) "1" + +-- Testing gmdate() function with ISO-8601 year number format -- +string(4) "%d" +string(4) "2008" + +-- Testing gmdate() function with full numeric representation of year format -- +string(4) "%d" +string(4) "2008" + +-- Testing gmdate() function with 2 digit representation year format -- +string(2) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/gmdate_variation9.phpt b/ext/date/tests/gmdate_variation9.phpt new file mode 100644 index 000000000..e210557ac --- /dev/null +++ b/ext/date/tests/gmdate_variation9.phpt @@ -0,0 +1,81 @@ +--TEST-- +Test gmdate() function : usage variation - Passing Time format options to format argument. +--FILE-- + 'a', + 'Uppercase Ante meridiem and post meridiem' => 'a', + 'Swatch Internet time' => 'B', + '12-hour format without leading zeros' => 'g', + '24-hour format without leading zeros' => 'G', + '12-hour format with leading zeros' => 'h', + '24-hour format with leading zeros' => 'H', + 'Minutes with leading zeros' => 'i', + 'Seconds with leading zeros' => 's', + 'Milliseconds' => 'u', +); + +foreach($time_formats as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmdate($value) ); + var_dump( gmdate($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing gmdate() : usage variation *** + +--Lowercase Ante meridiem and post meridiem-- +string(2) "%s" +string(2) "am" + +--Uppercase Ante meridiem and post meridiem-- +string(2) "%s" +string(2) "am" + +--Swatch Internet time-- +string(%d) "%d" +string(3) "380" + +--12-hour format without leading zeros-- +string(%d) "%d" +string(1) "8" + +--24-hour format without leading zeros-- +string(%d) "%d" +string(1) "8" + +--12-hour format with leading zeros-- +string(%d) "%d" +string(2) "08" + +--24-hour format with leading zeros-- +string(2) "%d" +string(2) "08" + +--Minutes with leading zeros-- +string(2) "%d" +string(2) "08" + +--Seconds with leading zeros-- +string(2) "%d" +string(2) "08" + +--Milliseconds-- +string(%d) "%d" +string(6) "000000" +===DONE=== diff --git a/ext/date/tests/gmmktime_basic.phpt b/ext/date/tests/gmmktime_basic.phpt new file mode 100644 index 000000000..81abb5f2b --- /dev/null +++ b/ext/date/tests/gmmktime_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test gmmktime() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : basic functionality *** +int(1218182888) + +Strict Standards: gmmktime(): You should be using the time() function instead in %s on line %d +int(%d) +===DONE=== diff --git a/ext/date/tests/gmmktime_error.phpt b/ext/date/tests/gmmktime_error.phpt new file mode 100644 index 000000000..5fca888d1 --- /dev/null +++ b/ext/date/tests/gmmktime_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test gmmktime() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : error conditions *** + +-- Testing gmmktime() function with more than expected no. of arguments -- + +Strict Standards: gmmktime(): The is_dst parameter is deprecated in %s on line %d +int(1218182888) + +Warning: gmmktime() expects at most 7 parameters, 8 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation1.phpt b/ext/date/tests/gmmktime_variation1.phpt new file mode 100644 index 000000000..f84d99b9c --- /dev/null +++ b/ext/date/tests/gmmktime_variation1.phpt @@ -0,0 +1,194 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to first argument hour. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for hour + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($value, $min, $sec, $mon, $day, $year) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1218190088) + +--float -10.5-- +int(1218118088) + +--float .5-- +int(1218154088) + +--empty array-- + +Warning: gmmktime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1218154088) + +--lowercase null-- +int(1218154088) + +--lowercase true-- +int(1218157688) + +--lowercase false-- +int(1218154088) + +--uppercase TRUE-- +int(1218157688) + +--uppercase FALSE-- +int(1218154088) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1218154088) + +--unset var-- +int(1218154088) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation2.phpt b/ext/date/tests/gmmktime_variation2.phpt new file mode 100644 index 000000000..e74af392f --- /dev/null +++ b/ext/date/tests/gmmktime_variation2.phpt @@ -0,0 +1,194 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to second argument minute. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for min + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($hour, $value, $sec, $mon, $day, $year) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1218183008) + +--float -10.5-- +int(1218181808) + +--float .5-- +int(1218182408) + +--empty array-- + +Warning: gmmktime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1218182408) + +--lowercase null-- +int(1218182408) + +--lowercase true-- +int(1218182468) + +--lowercase false-- +int(1218182408) + +--uppercase TRUE-- +int(1218182468) + +--uppercase FALSE-- +int(1218182408) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1218182408) + +--unset var-- +int(1218182408) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation3.phpt b/ext/date/tests/gmmktime_variation3.phpt new file mode 100644 index 000000000..d180e829a --- /dev/null +++ b/ext/date/tests/gmmktime_variation3.phpt @@ -0,0 +1,194 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to third argument seconds. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for sec + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($hour, $min, $value, $mon, $day, $year) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1218182890) + +--float -10.5-- +int(1218182870) + +--float .5-- +int(1218182880) + +--empty array-- + +Warning: gmmktime() expects parameter 3 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 3 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 3 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 3 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1218182880) + +--lowercase null-- +int(1218182880) + +--lowercase true-- +int(1218182881) + +--lowercase false-- +int(1218182880) + +--uppercase TRUE-- +int(1218182881) + +--uppercase FALSE-- +int(1218182880) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 3 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 3 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1218182880) + +--unset var-- +int(1218182880) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation4.phpt b/ext/date/tests/gmmktime_variation4.phpt new file mode 100644 index 000000000..909311928 --- /dev/null +++ b/ext/date/tests/gmmktime_variation4.phpt @@ -0,0 +1,194 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to fourth argument month. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for mon + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($hour, $min, $sec, $value, $day, $year) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1223453288) + +--float -10.5-- +int(1170922088) + +--float .5-- +int(1197101288) + +--empty array-- + +Warning: gmmktime() expects parameter 4 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 4 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 4 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 4 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1197101288) + +--lowercase null-- +int(1197101288) + +--lowercase true-- +int(1199779688) + +--lowercase false-- +int(1197101288) + +--uppercase TRUE-- +int(1199779688) + +--uppercase FALSE-- +int(1197101288) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 4 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 4 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 4 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1197101288) + +--unset var-- +int(1197101288) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation5.phpt b/ext/date/tests/gmmktime_variation5.phpt new file mode 100644 index 000000000..dd1ca3e9c --- /dev/null +++ b/ext/date/tests/gmmktime_variation5.phpt @@ -0,0 +1,194 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to fifth argument day. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for day + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($hour, $min, $sec, $mon, $value, $year) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1218355688) + +--float -10.5-- +int(1216627688) + +--float .5-- +int(1217491688) + +--empty array-- + +Warning: gmmktime() expects parameter 5 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 5 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 5 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 5 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1217491688) + +--lowercase null-- +int(1217491688) + +--lowercase true-- +int(1217578088) + +--lowercase false-- +int(1217491688) + +--uppercase TRUE-- +int(1217578088) + +--uppercase FALSE-- +int(1217491688) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 5 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 5 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 5 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1217491688) + +--unset var-- +int(1217491688) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation6.phpt b/ext/date/tests/gmmktime_variation6.phpt new file mode 100644 index 000000000..4877556b7 --- /dev/null +++ b/ext/date/tests/gmmktime_variation6.phpt @@ -0,0 +1,190 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing unexpected values to sixth argument year. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for year + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($hour, $min, $sec, $mon, $day, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +--float 10.5-- +int(1281254888) + +--float .5-- +int(965722088) + +--empty array-- + +Warning: gmmktime() expects parameter 6 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmmktime() expects parameter 6 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmmktime() expects parameter 6 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmmktime() expects parameter 6 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(965722088) + +--lowercase null-- +int(965722088) + +--lowercase true-- +int(997258088) + +--lowercase false-- +int(965722088) + +--uppercase TRUE-- +int(997258088) + +--uppercase FALSE-- +int(965722088) + +--empty string DQ-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmmktime() expects parameter 6 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmmktime() expects parameter 6 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmmktime() expects parameter 6 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(965722088) + +--unset var-- +int(965722088) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation7.phpt b/ext/date/tests/gmmktime_variation7.phpt new file mode 100644 index 000000000..3d0d25a00 --- /dev/null +++ b/ext/date/tests/gmmktime_variation7.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test gmmktime() function : usage variation - Checking with few optional arguments. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +-- Testing gmmktime() function with one optional argument -- +int(%d) + +-- Testing gmmktime() function with two optional argument -- +int(%d) + +-- Testing gmmktime() function with three optional argument -- +int(%d) + +-- Testing gmmktime() function with four optional argument -- +int(%d) + +-- Testing gmmktime() function with five optional argument -- +int(%d) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation8.phpt b/ext/date/tests/gmmktime_variation8.phpt new file mode 100644 index 000000000..b0c56a127 --- /dev/null +++ b/ext/date/tests/gmmktime_variation8.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing octal and hexadecimal values to arguments. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmmktime() : usage variation *** + +-- Testing gmmktime() function with supplying octal values to arguments -- +int(1218182888) + +-- Testing gmmktime() function with supplying hexa decimal values to arguments -- +int(1218182888) +===DONE=== diff --git a/ext/date/tests/gmmktime_variation9.phpt b/ext/date/tests/gmmktime_variation9.phpt new file mode 100644 index 000000000..fa463e0d6 --- /dev/null +++ b/ext/date/tests/gmmktime_variation9.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test gmmktime() function : usage variation - Passing positive and negative float values to arguments. +--FILE-- + 123456, + 'float -123456' => -123456, + 'float -10.5' => -10.5, +); + +// loop through each element of the array for min +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmmktime($value, $min, $sec, $mon, $day, $year) ); + var_dump( gmmktime($hour, $value, $sec, $mon, $day, $year) ); + var_dump( gmmktime($hour, $min, $value, $mon, $day, $year) ); + var_dump( gmmktime($hour, $min, $sec, $value, $day, $year) ); + var_dump( gmmktime($hour, $min, $sec, $mon, $value, $value) ); +} +?> +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing gmmktime\(\) : usage variation \*\*\* + +--float 123456-- +int\(1662595688\) +int\(1225589768\) +int\(1218306336\) +(bool|int)\((false|325855037288)\) +(bool|int)\((false|3844412784488)\) + +--float -123456-- +int\(773712488\) +int\(1210775048\) +int\(1218059424\) +(bool|int)\((false|-323460834712)\) +(bool|int)\((false|-3968710530712)\) + +--float -10.5-- +int\(1218118088\) +int\(1218181808\) +int\(1218182870\) +int\(1170922088\) +(bool|int)\((false|-62465356312)\) +===DONE=== diff --git a/ext/date/tests/gmstrftime_basic.phpt b/ext/date/tests/gmstrftime_basic.phpt new file mode 100644 index 000000000..17bad69d0 --- /dev/null +++ b/ext/date/tests/gmstrftime_basic.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test gmstrftime() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : basic functionality *** +string(20) "Aug 08 2008 08:08:08" +string(%d) "%s %d %d %d:%d:%d" +===DONE=== diff --git a/ext/date/tests/gmstrftime_error.phpt b/ext/date/tests/gmstrftime_error.phpt new file mode 100644 index 000000000..d28780fe0 --- /dev/null +++ b/ext/date/tests/gmstrftime_error.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test gmstrftime() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : error conditions *** + +-- Testing gmstrftime() function with Zero arguments -- + +Warning: gmstrftime() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing gmstrftime() function with more than expected no. of arguments -- + +Warning: gmstrftime() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation1.phpt b/ext/date/tests/gmstrftime_variation1.phpt new file mode 100644 index 000000000..d123fb254 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation1.phpt @@ -0,0 +1,220 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing unexpected values to first argument 'format'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--int 0-- +string(1) "0" +string(1) "0" + +--int 1-- +string(1) "1" +string(1) "1" + +--int 12345-- +string(5) "12345" +string(5) "12345" + +--int -12345-- +string(6) "-12345" +string(6) "-12345" + +--float 10.5-- +string(4) "10.5" +string(4) "10.5" + +--float -10.5-- +string(5) "-10.5" +string(5) "-10.5" + +--float 12.3456789000e10-- +string(12) "123456789000" +string(12) "123456789000" + +--float -12.3456789000e10-- +string(13) "-123456789000" +string(13) "-123456789000" + +--float .5-- +string(3) "0.5" +string(3) "0.5" + +--empty array-- + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: gmstrftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--uppercase NULL-- +bool(false) +bool(false) + +--lowercase null-- +bool(false) +bool(false) + +--lowercase true-- +string(1) "1" +string(1) "1" + +--lowercase false-- +bool(false) +bool(false) + +--uppercase TRUE-- +string(1) "1" +string(1) "1" + +--uppercase FALSE-- +bool(false) +bool(false) + +--empty string DQ-- +bool(false) +bool(false) + +--empty string SQ-- +bool(false) +bool(false) + +--instance of classWithToString-- +string(14) "Class A object" +string(14) "Class A object" + +--instance of classWithoutToString-- + +Warning: gmstrftime() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +Warning: gmstrftime() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +--undefined var-- +bool(false) +bool(false) + +--unset var-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation10.phpt b/ext/date/tests/gmstrftime_variation10.phpt new file mode 100644 index 000000000..0e54d846e --- /dev/null +++ b/ext/date/tests/gmstrftime_variation10.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking week related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%V", + 'Weekday as decimal' => "%u", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--The ISO 8601:1988 week number-- +string(%d) "%d" +string(2) "32" + +--Weekday as decimal-- +string(%d) "%d" +string(1) "5" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation11.phpt b/ext/date/tests/gmstrftime_variation11.phpt new file mode 100644 index 000000000..482ff6d2d --- /dev/null +++ b/ext/date/tests/gmstrftime_variation11.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking month related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +-- Testing gmstrftime() function with Abbreviated month name format %h -- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation12.phpt b/ext/date/tests/gmstrftime_variation12.phpt new file mode 100644 index 000000000..2c25af6e2 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation12.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking month related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +-- Testing gmstrftime() function with Abbreviated month name format %h -- +string(%d) "%s" +string(3) "Aug" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation13.phpt b/ext/date/tests/gmstrftime_variation13.phpt new file mode 100644 index 000000000..42f33f01e --- /dev/null +++ b/ext/date/tests/gmstrftime_variation13.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking date related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%C", + 'Month Date Year' => "%D", + 'Year with century' => "%G", + 'Year without century' => "%g", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Century number-- +bool(false) +bool(false) + +--Month Date Year-- +bool(false) +bool(false) + +--Year with century-- +bool(false) +bool(false) + +--Year without century-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation14.phpt b/ext/date/tests/gmstrftime_variation14.phpt new file mode 100644 index 000000000..880b4330c --- /dev/null +++ b/ext/date/tests/gmstrftime_variation14.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking date related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%C", + 'Month Date Year' => "%D", + 'Year with century' => "%G", + 'Year without century' => "%g", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Century number-- +string(%d) "%d" +string(2) "20" + +--Month Date Year-- +string(%d) "%d/%d/%d" +string(8) "08/08/08" + +--Year with century-- +string(%d) "%d" +string(4) "2008" + +--Year without century-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation15.phpt b/ext/date/tests/gmstrftime_variation15.phpt new file mode 100644 index 000000000..c0df36478 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation15.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking time related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%r", + 'Time in 24 hour notation' => "%R", + 'Current time %H:%M:%S format' => "%T", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Time in a.m/p.m notation-- +bool(false) +bool(false) + +--Time in 24 hour notation-- +bool(false) +bool(false) + +--Current time %H:%M:%S format-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation16.phpt b/ext/date/tests/gmstrftime_variation16.phpt new file mode 100644 index 000000000..fd9f809ea --- /dev/null +++ b/ext/date/tests/gmstrftime_variation16.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking time related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%r", + 'Time in 24 hour notation' => "%R", + 'Current time %H:%M:%S format' => "%T", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Time in a.m/p.m notation-- +string(%d) "%d:%d:%d %s" +string(11) "02:08:08 PM" + +--Time in 24 hour notation-- +string(%d) "%d:%d" +string(5) "14:08" + +--Current time %H:%M:%S format-- +string(%d) "%d:%d:%d" +string(8) "14:08:08" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation17.phpt b/ext/date/tests/gmstrftime_variation17.phpt new file mode 100644 index 000000000..e3070a514 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation17.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking day related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +-- Testing gmstrftime() function with Day of the month as decimal single digit format -- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation18.phpt b/ext/date/tests/gmstrftime_variation18.phpt new file mode 100644 index 000000000..b8563dcd2 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation18.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking day related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +-- Testing gmstrftime() function with Day of the month as decimal single digit format -- +string(2) "%s" +string(2) " 8" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation19.phpt b/ext/date/tests/gmstrftime_variation19.phpt new file mode 100644 index 000000000..3131e01ca --- /dev/null +++ b/ext/date/tests/gmstrftime_variation19.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking newline and tab formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%n", + 'Tab character' => "%t" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Newline character-- +bool(false) +bool(false) + +--Tab character-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation2.phpt b/ext/date/tests/gmstrftime_variation2.phpt new file mode 100644 index 000000000..ee2cecb46 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation2.phpt @@ -0,0 +1,202 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing unexpected values to second argument 'timestamp'. +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($format, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--float 10.5-- +string(20) "Jan 01 1970 00:00:10" + +--float -10.5-- +string(20) "Dec 31 1969 23:59:50" + +--float 12.3456789000e10-- +string(20) "Mar 26 1935 04:50:16" + +--float .5-- +string(20) "Jan 01 1970 00:00:00" + +--empty array-- + +Warning: gmstrftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: gmstrftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: gmstrftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: gmstrftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(20) "Jan 01 1970 00:00:00" + +--lowercase null-- +string(20) "Jan 01 1970 00:00:00" + +--lowercase true-- +string(20) "Jan 01 1970 00:00:01" + +--lowercase false-- +string(20) "Jan 01 1970 00:00:00" + +--uppercase TRUE-- +string(20) "Jan 01 1970 00:00:01" + +--uppercase FALSE-- +string(20) "Jan 01 1970 00:00:00" + +--empty string DQ-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: gmstrftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: gmstrftime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: gmstrftime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +string(20) "Jan 01 1970 00:00:00" + +--unset var-- +string(20) "Jan 01 1970 00:00:00" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation20.phpt b/ext/date/tests/gmstrftime_variation20.phpt new file mode 100644 index 000000000..a8898d8ec --- /dev/null +++ b/ext/date/tests/gmstrftime_variation20.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking newline and tab formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%n", + 'Tab character' => "%t" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing gmstrftime\(\) : usage variation \*\*\* + +--Newline character-- +string\(1\) " +" +string\(1\) " +" + +--Tab character-- +string\(1\) "\s" +string\(1\) "\s" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation21.phpt b/ext/date/tests/gmstrftime_variation21.phpt new file mode 100644 index 000000000..fb53cb695 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation21.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking Preferred date and time representation on Windows. +--SKIPIF-- + +--FILE-- + "%c", + 'Preferred date representation' => "%x", + 'Preferred time representation' => "%X", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Preferred date and time representation-- +string(%d) "%d/%d/%d %d:%d:%d" +string(17) "08/08/08 08:08:08" + +--Preferred date representation-- +string(%d) "%d/%d/%d" +string(8) "08/08/08" + +--Preferred time representation-- +string(%d) "%d:%d:%d" +string(8) "08:08:08" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation22.phpt b/ext/date/tests/gmstrftime_variation22.phpt new file mode 100644 index 000000000..213fa5c74 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation22.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking Preferred date and time representation other than on Windows +--SKIPIF-- + +--FILE-- + "%c", + 'Preferred date representation' => "%x", + 'Preferred time representation' => "%X", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Preferred date and time representation-- +string(%d) "%s %d %s %d %d:%d:%d %s GMT" +string(31) "Fri 08 Aug 2008 08:08:08 AM GMT" + +--Preferred date representation-- +string(%d) "%d/%d/%d" +string(10) "08/08/2008" + +--Preferred time representation-- +string(%d) "%d:%d:%d %s" +string(11) "08:08:08 AM" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation3.phpt b/ext/date/tests/gmstrftime_variation3.phpt new file mode 100644 index 000000000..bc05c7b4c --- /dev/null +++ b/ext/date/tests/gmstrftime_variation3.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing week related format strings to format argument. +--FILE-- + "%a", + 'Full weekday name' => "%A", + 'Week number of the year' => "%U", + 'Week number of the year in decimal number' => "%W", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Abbreviated weekday name-- +string(%d) "%s" +string(3) "Fri" + +--Full weekday name-- +string(%d) "%s" +string(6) "Friday" + +--Week number of the year-- +string(%d) "%d" +string(2) "31" + +--Week number of the year in decimal number-- +string(%d) "%d" +string(2) "31" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation4.phpt b/ext/date/tests/gmstrftime_variation4.phpt new file mode 100644 index 000000000..619e633a9 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation4.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing month related format strings to format argument. +--FILE-- + "%b", + 'Full month name' => "%B", + 'Month as decimal' => "%m", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Abbreviated month name-- +string(%d) "%s" +string(3) "Aug" + +--Full month name-- +string(%d) "%s" +string(6) "August" + +--Month as decimal-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation5.phpt b/ext/date/tests/gmstrftime_variation5.phpt new file mode 100644 index 000000000..95e3bd239 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation5.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing date related format strings to format argument. +--FILE-- + "%y", + 'Year as decimal number including the century' => "%Y", + 'Time zone offset' => "%Z", + 'Time zone offset' => "%z", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Year as decimal number without a century-- +string(%d) "%d" +string(2) "08" + +--Year as decimal number including the century-- +string(%d) "%d" +string(4) "2008" + +--Time zone offset-- +string(%s) "%s" +string(%s) "%s" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation6.phpt b/ext/date/tests/gmstrftime_variation6.phpt new file mode 100644 index 000000000..92dd1ede3 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation6.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing time related format strings to format argument. +--FILE-- + "%H", + 'Hour as decimal by 12-hour format' => "%I", + 'Minute as decimal number' => "%M", + 'AM/PM format for a time' => "%p", + 'Second as decimal number' => "%S", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Hour as decimal by 24-hour format-- +string(2) "%d" +string(2) "08" + +--Hour as decimal by 12-hour format-- +string(2) "%d" +string(2) "08" + +--Minute as decimal number-- +string(%d) "%d" +string(2) "08" + +--AM/PM format for a time-- +string(2) "%s" +string(2) "AM" + +--Second as decimal number-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation7.phpt b/ext/date/tests/gmstrftime_variation7.phpt new file mode 100644 index 000000000..dd0584b70 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation7.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing day related format strings to format argument. +--FILE-- + "%d", + 'Day of the year as a decimal number' => "%j", + 'Day of the week as a decimal number' => "%w" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--Day of the month as a decimal number-- +string(%d) "%d" +string(2) "08" + +--Day of the year as a decimal number-- +string(%d) "%d" +string(3) "221" + +--Day of the week as a decimal number-- +string(%d) "%d" +string(1) "5" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation8.phpt b/ext/date/tests/gmstrftime_variation8.phpt new file mode 100644 index 000000000..59057aa17 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation8.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test gmstrftime() function : usage variation - Passing literal related strings to format argument. +--FILE-- + "%%", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--A literal % character-- +string(1) "%" +string(1) "%" +===DONE=== diff --git a/ext/date/tests/gmstrftime_variation9.phpt b/ext/date/tests/gmstrftime_variation9.phpt new file mode 100644 index 000000000..c9c93fc10 --- /dev/null +++ b/ext/date/tests/gmstrftime_variation9.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test gmstrftime() function : usage variation - Checking week related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%V", + 'Weekday as decimal' => "%u", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gmstrftime($value) ); + var_dump( gmstrftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing gmstrftime() : usage variation *** + +--The ISO 8601:1988 week number-- +bool(false) +bool(false) + +--Weekday as decimal-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/idate_basic.phpt b/ext/date/tests/idate_basic.phpt new file mode 100644 index 000000000..944f29f5b --- /dev/null +++ b/ext/date/tests/idate_basic.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test idate() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing idate() : basic functionality *** +int(%d) +===DONE=== diff --git a/ext/date/tests/idate_variation1.phpt b/ext/date/tests/idate_variation1.phpt new file mode 100644 index 000000000..c0231a6c0 --- /dev/null +++ b/ext/date/tests/idate_variation1.phpt @@ -0,0 +1,301 @@ +--TEST-- +Test idate() function : usage variation - Passing unexpected values to first argument 'format'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( idate($value) ); + var_dump( idate($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing idate() : usage variation *** + +--int 0-- + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +--int 1-- + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +--int 12345-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--int -12345-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--float 10.5-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--float -10.5-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--float 12.3456789000e10-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--float -12.3456789000e10-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--float .5-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--empty array-- + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: idate() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--uppercase NULL-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--lowercase null-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--lowercase true-- + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +--lowercase false-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--uppercase TRUE-- + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +Warning: idate(): Unrecognized date format token. in %s on line %d +bool(false) + +--uppercase FALSE-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--empty string DQ-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: idate() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +Warning: idate() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +--undefined var-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +--unset var-- + +Warning: idate(): idate format is one char in %s on line %d +bool(false) + +Warning: idate(): idate format is one char in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/idate_variation2.phpt b/ext/date/tests/idate_variation2.phpt new file mode 100644 index 000000000..7dd761d51 --- /dev/null +++ b/ext/date/tests/idate_variation2.phpt @@ -0,0 +1,191 @@ +--TEST-- +Test idate() function : usage variation - Passing unexpected values to second optional argument 'timestamp'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( idate($format, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing idate() : usage variation *** + +--float 10.5-- +int(1970) + +--float -10.5-- +int(1970) + +--float .5-- +int(1970) + +--empty array-- + +Warning: idate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: idate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: idate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: idate() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +int(1970) + +--lowercase null-- +int(1970) + +--lowercase true-- +int(1970) + +--lowercase false-- +int(1970) + +--uppercase TRUE-- +int(1970) + +--uppercase FALSE-- +int(1970) + +--empty string DQ-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: idate() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: idate() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: idate() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +int(1970) + +--unset var-- +int(1970) +===DONE=== diff --git a/ext/date/tests/idate_variation3.phpt b/ext/date/tests/idate_variation3.phpt new file mode 100644 index 000000000..1a2ee1ffd --- /dev/null +++ b/ext/date/tests/idate_variation3.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test idate() function : usage variation - Passing higher positive and negetive float values to timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing idate\(\) : usage variation \*\*\* + +-- Testing idate\(\) function with float 12.3456789000e10 to timestamp -- +int\((1935|5882)\) + +-- Testing idate\(\) function with float -12.3456789000e10 to timestamp -- +int\((2004|1901|-1943)\) +===DONE=== diff --git a/ext/date/tests/idate_variation4.phpt b/ext/date/tests/idate_variation4.phpt new file mode 100644 index 000000000..6aa1735df --- /dev/null +++ b/ext/date/tests/idate_variation4.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test idate() function : usage variation - Passing supported Date format characters to format argument. +--FILE-- + 'd', + 'Leap Year' =>'L', + 'Month number' => 'm', + 'Days in the month' => 't', + 'Day of the week' => 'w', + 'ISO-8601 week number' => 'W', + 'Year (1 or 2 digits)' => 'y', + 'Year 4 digits' => 'Y', + 'Day of the year' => 'z', +); + +// loop through each element of the array for timestamp +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( idate($value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing idate() : usage variation *** + +--Day of the month-- +int(%d) + +--Leap Year-- +int(%d) + +--Month number-- +int(%d) + +--Days in the month-- +int(%d) + +--Day of the week-- +int(%d) + +--ISO-8601 week number-- +int(%d) + +--Year (1 or 2 digits)-- +int(%d) + +--Year 4 digits-- +int(%d) + +--Day of the year-- +int(%d) +===DONE=== diff --git a/ext/date/tests/idate_variation5.phpt b/ext/date/tests/idate_variation5.phpt new file mode 100644 index 000000000..e70509c59 --- /dev/null +++ b/ext/date/tests/idate_variation5.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test idate() function : usage variation - Passing supported Time format characters to format argument. +--FILE-- + 'B', + '12 hour format' => 'h', + '24 hour format' => 'H', + 'Minutes' => 'i', + 'DST Activated' => 'I', + 'Seconds' => 's', + 'Seconds since Unix Epoch' => 'U', + 'Time zone offset' => 'Z' +); + +// loop through each element of the array for timestamp +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( idate($value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing idate() : usage variation *** + +--Internet Time-- +int(%d) + +--12 hour format-- +int(%d) + +--24 hour format-- +int(%d) + +--Minutes-- +int(%d) + +--DST Activated-- +int(%d) + +--Seconds-- +int(%d) + +--Seconds since Unix Epoch-- +int(%d) + +--Time zone offset-- +int(%d) +===DONE=== diff --git a/ext/date/tests/idate_variation6.phpt b/ext/date/tests/idate_variation6.phpt new file mode 100644 index 000000000..161a80d51 --- /dev/null +++ b/ext/date/tests/idate_variation6.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test idate() function : usage variation - Checking return of year(1 or 2 digits) format starting with zero and nonzero. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing idate() : usage variation *** + +-- Testing idate() function for 2 digit year having no zero as starting number -- +int(70) + +-- Testing idate() function for 2 digit year having zero as starting number -- +int(1) +===DONE=== diff --git a/ext/date/tests/localtime_basic.phpt b/ext/date/tests/localtime_basic.phpt new file mode 100644 index 000000000..fcfd636fb --- /dev/null +++ b/ext/date/tests/localtime_basic.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test localtime() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing localtime() : basic functionality *** +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + [0]=> + int(%d) + [1]=> + int(%d) + [2]=> + int(%d) + [3]=> + int(%d) + [4]=> + int(%d) + [5]=> + int(%d) + [6]=> + int(%d) + [7]=> + int(%d) + [8]=> + int(%d) +} +===DONE=== diff --git a/ext/date/tests/localtime_variation1.phpt b/ext/date/tests/localtime_variation1.phpt new file mode 100644 index 000000000..472b32b60 --- /dev/null +++ b/ext/date/tests/localtime_variation1.phpt @@ -0,0 +1,658 @@ +--TEST-- +Test localtime() function : usage variation - Passing unexpected values to first argument 'timestamp'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( localtime($value) ); + var_dump( localtime($value, $is_associative) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing localtime() : usage variation *** + +--float 10.5-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float -10.5-- +array(9) { + [0]=> + int(50) + [1]=> + int(59) + [2]=> + int(23) + [3]=> + int(31) + [4]=> + int(11) + [5]=> + int(69) + [6]=> + int(3) + [7]=> + int(364) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(50) + ["tm_min"]=> + int(59) + ["tm_hour"]=> + int(23) + ["tm_mday"]=> + int(31) + ["tm_mon"]=> + int(11) + ["tm_year"]=> + int(69) + ["tm_wday"]=> + int(3) + ["tm_yday"]=> + int(364) + ["tm_isdst"]=> + int(0) +} + +--float .5-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--empty array-- + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--lowercase null-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--lowercase true-- +array(9) { + [0]=> + int(1) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(1) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--lowercase false-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--uppercase TRUE-- +array(9) { + [0]=> + int(1) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(1) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--uppercase FALSE-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--empty string DQ-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: localtime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: localtime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +Warning: localtime() expects parameter 1 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--unset var-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/localtime_variation2.phpt b/ext/date/tests/localtime_variation2.phpt new file mode 100644 index 000000000..a2048206a --- /dev/null +++ b/ext/date/tests/localtime_variation2.phpt @@ -0,0 +1,643 @@ +--TEST-- +Test localtime() function : usage variation - Passing unexpected values to second argument 'associative_array'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for associative_array + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( localtime($timestamp, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing localtime() : usage variation *** + +--int 0-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--int 1-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--int 12345-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--int -12345-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float 10.5-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float -10.5-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float 12.3456789000e10-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float -12.3456789000e10-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--float .5-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--empty array-- + +Warning: localtime() expects parameter 2 to be boolean, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: localtime() expects parameter 2 to be boolean, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: localtime() expects parameter 2 to be boolean, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: localtime() expects parameter 2 to be boolean, array given in %s on line %d +bool(false) + +--uppercase NULL-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--lowercase null-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--lowercase true-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--lowercase false-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--uppercase TRUE-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--uppercase FALSE-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--empty string DQ-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--empty string SQ-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--string DQ-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--string SQ-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--mixed case string-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--heredoc-- +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--instance of classWithToString-- + +Warning: localtime() expects parameter 2 to be boolean, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: localtime() expects parameter 2 to be boolean, object given in %s on line %d +bool(false) + +--undefined var-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} + +--unset var-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/localtime_variation3.phpt b/ext/date/tests/localtime_variation3.phpt new file mode 100644 index 000000000..d941e3891 --- /dev/null +++ b/ext/date/tests/localtime_variation3.phpt @@ -0,0 +1,116 @@ +--TEST-- +Test localtime() function : usage variation - Passing higher positive and negetive float values to timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing localtime\(\) : usage variation \*\*\* + +-- Testing localtime\(\) function with 'float 12.3456789000e10' to timestamp -- +array\(9\) { + \[0\]=> + int\((16|0)\) + \[1\]=> + int\((50|30)\) + \[2\]=> + int\((4|0)\) + \[3\]=> + int\((26|11)\) + \[4\]=> + int\(2\) + \[5\]=> + int\((35|3982)\) + \[6\]=> + int\((2|6)\) + \[7\]=> + int\((84|69)\) + \[8\]=> + int\(0\) +} +array\(9\) { + \["tm_sec"\]=> + int\((16|0)\) + \["tm_min"\]=> + int\((50|30)\) + \["tm_hour"\]=> + int\((4|0)\) + \["tm_mday"\]=> + int\((26|11)\) + \["tm_mon"\]=> + int\(2\) + \["tm_year"\]=> + int\((35|3982)\) + \["tm_wday"\]=> + int\((2|6)\) + \["tm_yday"\]=> + int\((84|69)\) + \["tm_isdst"\]=> + int\(0\) +} + +-- Testing localtime\(\) function with 'float -12.3456789000e10' to timestamp -- +array\(9\) { + \[0\]=> + int\((44|52|0)\) + \[1\]=> + int\((9|45|30)\) + \[2\]=> + int\((19|20|23)\) + \[3\]=> + int\((8|13|22)\) + \[4\]=> + int\((9|11)\) + \[5\]=> + int\((104|1|-3843)\) + \[6\]=> + int\((5|-5)\) + \[7\]=> + int\((281|346|294)\) + \[8\]=> + int\(0\) +} +array\(9\) { + \["tm_sec"\]=> + int\((44|52|0)\) + \["tm_min"\]=> + int\((9|45|30)\) + \["tm_hour"\]=> + int\((19|20|23)\) + \["tm_mday"\]=> + int\((8|13|22)\) + \["tm_mon"\]=> + int\((9|11)\) + \["tm_year"\]=> + int\((104|1|-3843)\) + \["tm_wday"\]=> + int\((5|-5)\) + \["tm_yday"\]=> + int\((281|346|294)\) + \["tm_isdst"\]=> + int\(0\) +} +===DONE=== diff --git a/ext/date/tests/localtime_variation4.phpt b/ext/date/tests/localtime_variation4.phpt new file mode 100644 index 000000000..2796c22d5 --- /dev/null +++ b/ext/date/tests/localtime_variation4.phpt @@ -0,0 +1,162 @@ +--TEST-- +Test localtime() function : usage variation - Passing octal values to timestamp. +--FILE-- + 00, + 'Octal 10' => 012, + 'Octal -10' => -012 +); + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( localtime($value) ); + var_dump( localtime($value, $is_associative) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing localtime() : usage variation *** + +--Octal 0-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--Octal 10-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--Octal -10-- +array(9) { + [0]=> + int(50) + [1]=> + int(59) + [2]=> + int(23) + [3]=> + int(31) + [4]=> + int(11) + [5]=> + int(69) + [6]=> + int(3) + [7]=> + int(364) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(50) + ["tm_min"]=> + int(59) + ["tm_hour"]=> + int(23) + ["tm_mday"]=> + int(31) + ["tm_mon"]=> + int(11) + ["tm_year"]=> + int(69) + ["tm_wday"]=> + int(3) + ["tm_yday"]=> + int(364) + ["tm_isdst"]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/localtime_variation5.phpt b/ext/date/tests/localtime_variation5.phpt new file mode 100644 index 000000000..883e34887 --- /dev/null +++ b/ext/date/tests/localtime_variation5.phpt @@ -0,0 +1,162 @@ +--TEST-- +Test localtime() function : usage variation - Passing hexa decimal values to timestamp. +--FILE-- + 0x0, + 'Hexa-decimal 10' => 0xA, + 'Hexa-decimal -10' => -0XA +); + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( localtime($value) ); + var_dump( localtime($value, $is_associative) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing localtime() : usage variation *** + +--Hexa-decimal 0-- +array(9) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--Hexa-decimal 10-- +array(9) { + [0]=> + int(10) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(0) + [5]=> + int(70) + [6]=> + int(4) + [7]=> + int(0) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(10) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(1) + ["tm_mon"]=> + int(0) + ["tm_year"]=> + int(70) + ["tm_wday"]=> + int(4) + ["tm_yday"]=> + int(0) + ["tm_isdst"]=> + int(0) +} + +--Hexa-decimal -10-- +array(9) { + [0]=> + int(50) + [1]=> + int(59) + [2]=> + int(23) + [3]=> + int(31) + [4]=> + int(11) + [5]=> + int(69) + [6]=> + int(3) + [7]=> + int(364) + [8]=> + int(0) +} +array(9) { + ["tm_sec"]=> + int(50) + ["tm_min"]=> + int(59) + ["tm_hour"]=> + int(23) + ["tm_mday"]=> + int(31) + ["tm_mon"]=> + int(11) + ["tm_year"]=> + int(69) + ["tm_wday"]=> + int(3) + ["tm_yday"]=> + int(364) + ["tm_isdst"]=> + int(0) +} +===DONE=== diff --git a/ext/date/tests/microtime_basic.phpt b/ext/date/tests/microtime_basic.phpt new file mode 100644 index 000000000..88c495229 --- /dev/null +++ b/ext/date/tests/microtime_basic.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test return type and value for expected input microtime() +--FILE-- + +===DONE=== +--EXPECTF-- +string(%d) "%s %s" +float(%s) +string(%d) "%s %s" +===DONE=== diff --git a/ext/date/tests/microtime_error.phpt b/ext/date/tests/microtime_error.phpt new file mode 100644 index 000000000..400df6177 --- /dev/null +++ b/ext/date/tests/microtime_error.phpt @@ -0,0 +1,72 @@ +--TEST-- +Test wrong number of arguments for microtime() +--FILE-- +'v', array(0)), + new stdClass, + 1); +foreach ($bad_args as $bad_arg) { + echo "\n--> bad arg: "; + var_dump($bad_arg); + var_dump(microtime($bad_arg)); +} + +?> +===DONE=== +--EXPECTF-- + +-- Too many arguments -- + +Warning: microtime() expects at most 1 parameter, 2 given in %s on line 11 +NULL + +-- Bad Arg types -- + +--> bad arg: NULL +string(%d) "%s %s" + +--> bad arg: float(1.5) +float(%s) + +--> bad arg: string(5) "hello" +float(%s) + +--> bad arg: array(2) { + ["k"]=> + string(1) "v" + [0]=> + array(1) { + [0]=> + int(0) + } +} + +Warning: microtime() expects parameter 1 to be boolean, array given in %s on line 25 +NULL + +--> bad arg: object(stdClass)#%d (0) { +} + +Warning: microtime() expects parameter 1 to be boolean, object given in %s on line 25 +NULL + +--> bad arg: int(1) +float(%s) +===DONE=== diff --git a/ext/date/tests/mktime-3-64bit.phpt b/ext/date/tests/mktime-3-64bit.phpt index bb3fb2df7..a3649cd14 100644 --- a/ext/date/tests/mktime-3-64bit.phpt +++ b/ext/date/tests/mktime-3-64bit.phpt @@ -7,7 +7,7 @@ error_reporting=2047 --FILE-- +===Done=== --EXPECT-- America/Toronto Y: 0 - January 2000-01-01T01:01:01-0500 @@ -32,7 +33,7 @@ Y: 70 - January 1970-01-01T01:01:01-0500 Y: 71 - January 1971-01-01T01:01:01-0500 Y: 99 - January 1999-01-01T01:01:01-0500 Y: 100 - January 2000-01-01T01:01:01-0500 -Y: 105 - January 2005-01-01T01:01:01-0500 +Y: 105 - out of range Y: 1900 - out of range Y: 1901 - out of range Y: 1902 - January 1902-01-01T01:01:01-0500 @@ -47,10 +48,12 @@ Y: 70 - January 1970-01-01T01:01:01+0100 Y: 71 - January 1971-01-01T01:01:01+0100 Y: 99 - January 1999-01-01T01:01:01+0100 Y: 100 - January 2000-01-01T01:01:01+0100 -Y: 105 - January 2005-01-01T01:01:01+0100 +Y: 105 - out of range Y: 1900 - out of range Y: 1901 - out of range Y: 1902 - January 1902-01-01T01:01:01+0100 Y: 1999 - January 1999-01-01T01:01:01+0100 Y: 2000 - January 2000-01-01T01:01:01+0100 Y: 2001 - January 2001-01-01T01:01:01+0100 + +===Done=== \ No newline at end of file diff --git a/ext/date/tests/strftime_basic.phpt b/ext/date/tests/strftime_basic.phpt new file mode 100644 index 000000000..07f22af82 --- /dev/null +++ b/ext/date/tests/strftime_basic.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test strftime() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : basic functionality *** +string(20) "Aug 08 2008 08:08:08" +string(%d) "%s %d %d %d:%d:%d" +===DONE=== diff --git a/ext/date/tests/strftime_error.phpt b/ext/date/tests/strftime_error.phpt new file mode 100644 index 000000000..19663798e --- /dev/null +++ b/ext/date/tests/strftime_error.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test strftime() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : error conditions *** + +-- Testing strftime() function with more than expected no. of arguments -- + +Warning: strftime() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation1.phpt b/ext/date/tests/strftime_variation1.phpt new file mode 100644 index 000000000..4e2b21730 --- /dev/null +++ b/ext/date/tests/strftime_variation1.phpt @@ -0,0 +1,222 @@ +--TEST-- +Test strftime() function : usage variation - Passing unexpected values to first argument 'format'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for format + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--int 0-- +string(1) "0" +string(1) "0" + +--int 1-- +string(1) "1" +string(1) "1" + +--int 12345-- +string(5) "12345" +string(5) "12345" + +--int -12345-- +string(6) "-12345" +string(6) "-12345" + +--float 10.5-- +string(4) "10.5" +string(4) "10.5" + +--float -10.5-- +string(5) "-10.5" +string(5) "-10.5" + +--float 12.3456789000e10-- +string(12) "123456789000" +string(12) "123456789000" + +--float -12.3456789000e10-- +string(13) "-123456789000" +string(13) "-123456789000" + +--float .5-- +string(3) "0.5" +string(3) "0.5" + +--empty array-- + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: strftime() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +--uppercase NULL-- +bool(false) +bool(false) + +--lowercase null-- +bool(false) +bool(false) + +--lowercase true-- +string(1) "1" +string(1) "1" + +--lowercase false-- +bool(false) +bool(false) + +--uppercase TRUE-- +string(1) "1" +string(1) "1" + +--uppercase FALSE-- +bool(false) +bool(false) + +--empty string DQ-- +bool(false) +bool(false) + +--empty string SQ-- +bool(false) +bool(false) + +--instance of classWithToString-- +string(14) "Class A object" +string(14) "Class A object" + +--instance of classWithoutToString-- + +Warning: strftime() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +Warning: strftime() expects parameter 1 to be string, object given in %s on line %d +bool(false) + +--undefined var-- +bool(false) +bool(false) + +--unset var-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation10.phpt b/ext/date/tests/strftime_variation10.phpt new file mode 100644 index 000000000..7d2a1b8fc --- /dev/null +++ b/ext/date/tests/strftime_variation10.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strftime() function : usage variation - Checking week related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%V", + 'Weekday as decimal' => "%u", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--The ISO 8601:1988 week number-- +string(%d) "%d" +string(2) "32" + +--Weekday as decimal-- +string(%d) "%d" +string(1) "5" +===DONE=== diff --git a/ext/date/tests/strftime_variation11.phpt b/ext/date/tests/strftime_variation11.phpt new file mode 100644 index 000000000..a063f0ad2 --- /dev/null +++ b/ext/date/tests/strftime_variation11.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test strftime() function : usage variation - Checking month related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +-- Testing strftime() function with Abbreviated month name format %h -- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation12.phpt b/ext/date/tests/strftime_variation12.phpt new file mode 100644 index 000000000..b798f428f --- /dev/null +++ b/ext/date/tests/strftime_variation12.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test strftime() function : usage variation - Checking month related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +-- Testing strftime() function with Abbreviated month name format %h -- +string(%d) "%s" +string(3) "Aug" +===DONE=== diff --git a/ext/date/tests/strftime_variation13.phpt b/ext/date/tests/strftime_variation13.phpt new file mode 100644 index 000000000..58ad283ff --- /dev/null +++ b/ext/date/tests/strftime_variation13.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test strftime() function : usage variation - Checking date related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%C", + 'Month Date Year' => "%D", + 'Year with century' => "%G", + 'Year without century' => "%g", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Century number-- +bool(false) +bool(false) + +--Month Date Year-- +bool(false) +bool(false) + +--Year with century-- +bool(false) +bool(false) + +--Year without century-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation14.phpt b/ext/date/tests/strftime_variation14.phpt new file mode 100644 index 000000000..7ccb7d283 --- /dev/null +++ b/ext/date/tests/strftime_variation14.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test strftime() function : usage variation - Checking date related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%C", + 'Month Date Year' => "%D", + 'Year with century' => "%G", + 'Year without century' => "%g", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Century number-- +string(%d) "%d" +string(2) "20" + +--Month Date Year-- +string(%d) "%d/%d/%d" +string(8) "08/08/08" + +--Year with century-- +string(%d) "%d" +string(4) "2008" + +--Year without century-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/strftime_variation15.phpt b/ext/date/tests/strftime_variation15.phpt new file mode 100644 index 000000000..5b2946bf5 --- /dev/null +++ b/ext/date/tests/strftime_variation15.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test strftime() function : usage variation - Checking time related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%r", + 'Time in 24 hour notation' => "%R", + 'Current time %H:%M:%S format' => "%T", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Time in a.m/p.m notation-- +bool(false) +bool(false) + +--Time in 24 hour notation-- +bool(false) +bool(false) + +--Current time %H:%M:%S format-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation16.phpt b/ext/date/tests/strftime_variation16.phpt new file mode 100644 index 000000000..5103b3add --- /dev/null +++ b/ext/date/tests/strftime_variation16.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test strftime() function : usage variation - Checking time related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%r", + 'Time in 24 hour notation' => "%R", + 'Current time %H:%M:%S format' => "%T", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Time in a.m/p.m notation-- +string(%d) "%d:%d:%d %s" +string(11) "08:08:08 AM" + +--Time in 24 hour notation-- +string(%d) "%d:%d" +string(5) "08:08" + +--Current time %H:%M:%S format-- +string(%d) "%d:%d:%d" +string(8) "08:08:08" +===DONE=== diff --git a/ext/date/tests/strftime_variation17.phpt b/ext/date/tests/strftime_variation17.phpt new file mode 100644 index 000000000..90b3269e8 --- /dev/null +++ b/ext/date/tests/strftime_variation17.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test strftime() function : usage variation - Checking day related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +-- Testing strftime() function with Day of the month as decimal single digit format -- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation18.phpt b/ext/date/tests/strftime_variation18.phpt new file mode 100644 index 000000000..4340325df --- /dev/null +++ b/ext/date/tests/strftime_variation18.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test strftime() function : usage variation - Checking day related formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +-- Testing strftime() function with Day of the month as decimal single digit format -- +string(%d) "%s" +string(2) " 8" +===DONE=== diff --git a/ext/date/tests/strftime_variation19.phpt b/ext/date/tests/strftime_variation19.phpt new file mode 100644 index 000000000..b41607719 --- /dev/null +++ b/ext/date/tests/strftime_variation19.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strftime() function : usage variation - Checking newline and tab formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%n", + 'Tab character' => "%t" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Newline character-- +bool(false) +bool(false) + +--Tab character-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strftime_variation2.phpt b/ext/date/tests/strftime_variation2.phpt new file mode 100644 index 000000000..b02423495 --- /dev/null +++ b/ext/date/tests/strftime_variation2.phpt @@ -0,0 +1,191 @@ +--TEST-- +Test strftime() function : usage variation - Passing unexpected values to second argument 'timestamp'. +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($format, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--float 10.5-- +string(20) "Jan 01 1970 05:30:10" + +--float -10.5-- +string(20) "Jan 01 1970 05:29:50" + +--float .5-- +string(20) "Jan 01 1970 05:30:00" + +--empty array-- + +Warning: strftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--int indexed array-- + +Warning: strftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--associative array-- + +Warning: strftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--nested arrays-- + +Warning: strftime() expects parameter 2 to be long, array given in %s on line %d +bool(false) + +--uppercase NULL-- +string(20) "Jan 01 1970 05:30:00" + +--lowercase null-- +string(20) "Jan 01 1970 05:30:00" + +--lowercase true-- +string(20) "Jan 01 1970 05:30:01" + +--lowercase false-- +string(20) "Jan 01 1970 05:30:00" + +--uppercase TRUE-- +string(20) "Jan 01 1970 05:30:01" + +--uppercase FALSE-- +string(20) "Jan 01 1970 05:30:00" + +--empty string DQ-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string DQ-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--string SQ-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--mixed case string-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--heredoc-- + +Warning: strftime() expects parameter 2 to be long, string given in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: strftime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: strftime() expects parameter 2 to be long, object given in %s on line %d +bool(false) + +--undefined var-- +string(20) "Jan 01 1970 05:30:00" + +--unset var-- +string(20) "Jan 01 1970 05:30:00" +===DONE=== diff --git a/ext/date/tests/strftime_variation20.phpt b/ext/date/tests/strftime_variation20.phpt new file mode 100644 index 000000000..336c6d2af --- /dev/null +++ b/ext/date/tests/strftime_variation20.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test strftime() function : usage variation - Checking newline and tab formats which are supported other than on Windows. +--SKIPIF-- + +--FILE-- + "%n", + 'Tab character' => "%t" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing strftime\(\) : usage variation \*\*\* + +--Newline character-- +string\(1\) " +" +string\(1\) " +" + +--Tab character-- +string\(1\) "\s" +string\(1\) "\s" +===DONE=== diff --git a/ext/date/tests/strftime_variation21.phpt b/ext/date/tests/strftime_variation21.phpt new file mode 100644 index 000000000..f6aed15ef --- /dev/null +++ b/ext/date/tests/strftime_variation21.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test strftime() function : usage variation - Checking Preferred date and time representation on Windows. +--SKIPIF-- + +--FILE-- + "%c", + 'Preferred date representation' => "%x", + 'Preferred time representation' => "%X", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Preferred date and time representation-- +string(%d) "%d/%d/%d %d:%d:%d" +string(17) "08/08/08 08:08:08" + +--Preferred date representation-- +string(%d) "%d/%d/%d" +string(8) "08/08/08" + +--Preferred time representation-- +string(%d) "%d:%d:%d" +string(8) "08:08:08" +===DONE=== diff --git a/ext/date/tests/strftime_variation22.phpt b/ext/date/tests/strftime_variation22.phpt new file mode 100644 index 000000000..8ea259caf --- /dev/null +++ b/ext/date/tests/strftime_variation22.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test strftime() function : usage variation - Checking Preferred date and time representation other than on Windows. +--SKIPIF-- + +--FILE-- + "%c", + 'Preferred date representation' => "%x", + 'Preferred time representation' => "%X", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Preferred date and time representation-- +string(%d) "%s %d %s %d %d:%d:%d %s %s" +string(31) "Fri 08 Aug 2008 08:08:08 AM IST" + +--Preferred date representation-- +string(%d) "%d/%d/%d" +string(10) "08/08/2008" + +--Preferred time representation-- +string(%d) "%d:%d:%d %s" +string(11) "08:08:08 AM" +===DONE=== diff --git a/ext/date/tests/strftime_variation23.phpt b/ext/date/tests/strftime_variation23.phpt new file mode 100644 index 000000000..b7cf8d788 --- /dev/null +++ b/ext/date/tests/strftime_variation23.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test strftime() function : usage variation - Checking large positive and negative float values to timestamp. +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing strftime\(\) : usage variation \*\*\* + +-- Testing strftime\(\) function with float 12.3456789000e10 to timestamp -- +string\(\d*\)\s"Mar\s(26|11)\s(1935|5882)\s(04|00):(50|30):(16|00)" + +-- Testing strftime\(\) function with float -12.3456789000e10 to timestamp -- +string\(\d*\)\s"(Oct|Dec)\s(08|13|22)\s(2004|1901|-1943)\s(19|20|23):(09|45|30):(44|52|00)" +===DONE=== diff --git a/ext/date/tests/strftime_variation3.phpt b/ext/date/tests/strftime_variation3.phpt new file mode 100644 index 000000000..342cb7692 --- /dev/null +++ b/ext/date/tests/strftime_variation3.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test strftime() function : usage variation - Passing week related format strings to format argument. +--FILE-- + "%a", + 'Full weekday name' => "%A", + 'Week number of the year' => "%U", + 'Week number of the year in decimal number' => "%W", +); +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Abbreviated weekday name-- +string(%d) "%s" +string(3) "Fri" + +--Full weekday name-- +string(%d) "%s" +string(6) "Friday" + +--Week number of the year-- +string(%d) "%d" +string(2) "31" + +--Week number of the year in decimal number-- +string(%d) "%d" +string(2) "31" +===DONE=== diff --git a/ext/date/tests/strftime_variation4.phpt b/ext/date/tests/strftime_variation4.phpt new file mode 100644 index 000000000..6236dd9e7 --- /dev/null +++ b/ext/date/tests/strftime_variation4.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test strftime() function : usage variation - Passing month related format strings to format argument. +--FILE-- + "%b", + 'Full month name' => "%B", + 'Month as decimal' => "%m", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Abbreviated month name-- +string(%d) "%s" +string(3) "Aug" + +--Full month name-- +string(%d) "%s" +string(6) "August" + +--Month as decimal-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/strftime_variation5.phpt b/ext/date/tests/strftime_variation5.phpt new file mode 100644 index 000000000..90f4e37ba --- /dev/null +++ b/ext/date/tests/strftime_variation5.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strftime() function : usage variation - Passing date related format strings to format argument. +--FILE-- + "%y", + 'Year as decimal number including the century' => "%Y", + 'Time zone offset' => "%Z", + 'Time zone offset' => "%z", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Year as decimal number without a century-- +string(%d) "%d" +string(2) "08" + +--Year as decimal number including the century-- +string(%d) "%d" +string(4) "2008" + +--Time zone offset-- +string(%d) "%s" +string(%d) "%s" +===DONE=== diff --git a/ext/date/tests/strftime_variation6.phpt b/ext/date/tests/strftime_variation6.phpt new file mode 100644 index 000000000..6713a198e --- /dev/null +++ b/ext/date/tests/strftime_variation6.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test strftime() function : usage variation - Passing time related format strings to format argument. +--FILE-- + "%H", + 'Hour as decimal by 12-hour format' => "%I", + 'Minute as decimal number' => "%M", + 'AM/PM format for a time' => "%p", + 'Second as decimal number' => "%S", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Hour as decimal by 24-hour format-- +string(%d) "%d" +string(2) "18" + +--Hour as decimal by 12-hour format-- +string(%d) "%d" +string(2) "06" + +--Minute as decimal number-- +string(%d) "%d" +string(2) "08" + +--AM/PM format for a time-- +string(%d) "%s" +string(2) "PM" + +--Second as decimal number-- +string(%d) "%d" +string(2) "08" +===DONE=== diff --git a/ext/date/tests/strftime_variation7.phpt b/ext/date/tests/strftime_variation7.phpt new file mode 100644 index 000000000..67fd416ac --- /dev/null +++ b/ext/date/tests/strftime_variation7.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strftime() function : usage variation - Passing day related format strings to format argument. +--FILE-- + "%d", + 'Day of the year as a decimal number' => "%j", + 'Day of the week as a decimal number' => "%w" +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--Day of the month as a decimal number-- +string(%d) "%d" +string(2) "08" + +--Day of the year as a decimal number-- +string(%d) "%d" +string(3) "221" + +--Day of the week as a decimal number-- +string(%d) "%d" +string(1) "5" +===DONE=== diff --git a/ext/date/tests/strftime_variation8.phpt b/ext/date/tests/strftime_variation8.phpt new file mode 100644 index 000000000..af8089f98 --- /dev/null +++ b/ext/date/tests/strftime_variation8.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test strftime() function : usage variation - Passing literal related strings to format argument. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +-- Testing strftime() function with a literal % character to format -- +string(1) "%" +string(1) "%" +===DONE=== diff --git a/ext/date/tests/strftime_variation9.phpt b/ext/date/tests/strftime_variation9.phpt new file mode 100644 index 000000000..23aa92d98 --- /dev/null +++ b/ext/date/tests/strftime_variation9.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strftime() function : usage variation - Checking week related formats which are not supported on Windows. +--SKIPIF-- + +--FILE-- + "%V", + 'Weekday as decimal' => "%u", +); + +// loop through each element of the array for timestamp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( strftime($value) ); + var_dump( strftime($value, $timestamp) ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing strftime() : usage variation *** + +--The ISO 8601:1988 week number-- +bool(false) +bool(false) + +--Weekday as decimal-- +bool(false) +bool(false) +===DONE=== diff --git a/ext/date/tests/strtotime_basic.phpt b/ext/date/tests/strtotime_basic.phpt new file mode 100644 index 000000000..15caa2f53 --- /dev/null +++ b/ext/date/tests/strtotime_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +strtotime() function - a test to show the difference in behaviour between 'first' and '1', "second" and "2"... +--INI-- +date.timezone="UTC" +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +string(10) "2008-12-01" +string(10) "2008-12-08" +string(10) "2008-12-15" +string(10) "2008-12-08" +string(10) "2008-12-15" +string(10) "2008-12-22" diff --git a/ext/date/tests/time_basic.phpt b/ext/date/tests/time_basic.phpt new file mode 100644 index 000000000..ad788f907 --- /dev/null +++ b/ext/date/tests/time_basic.phpt @@ -0,0 +1,16 @@ +--TEST-- +Test return type and value for expected input time() +--FILE-- + +===DONE=== +--EXPECTF-- +int(%d) +===DONE=== diff --git a/ext/date/tests/time_error.phpt b/ext/date/tests/time_error.phpt new file mode 100644 index 000000000..3792570cf --- /dev/null +++ b/ext/date/tests/time_error.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test wrong number of arguments for time() +--FILE-- + +===DONE=== +--EXPECTF-- + +-- Too many arguments -- +int(%d) +===DONE=== diff --git a/ext/dba/dba.c b/ext/dba/dba.c index ec3bf5e71..e33d7f9f5 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba.c,v 1.111.2.4.2.6 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba.c,v 1.111.2.4.2.8 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -360,7 +360,7 @@ static dba_handler handler[] = { DBA_HND(db3, DBA_LOCK_ALL) /* No lock in lib */ #endif #if DBA_DB4 - DBA_HND(db4, DBA_LOCK_EXT) /* Locking done in library itself */ + DBA_HND(db4, DBA_LOCK_ALL) /* No lock in lib */ #endif #if DBA_INIFILE DBA_HND(inifile, DBA_STREAM_OPEN|DBA_LOCK_ALL|DBA_CAST_AS_FD) /* No lock in lib */ diff --git a/ext/dba/dba_cdb.c b/ext/dba/dba_cdb.c index c8d2eaa3d..60bb38603 100644 --- a/ext/dba/dba_cdb.c +++ b/ext/dba/dba_cdb.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_cdb.c,v 1.32.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_cdb.c,v 1.32.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_db1.c b/ext/dba/dba_db1.c index 91d408da0..35e28c9d2 100755 --- a/ext/dba/dba_db1.c +++ b/ext/dba/dba_db1.c @@ -1,197 +1,197 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | - +----------------------------------------------------------------------+ - | This 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: Shen Cheng-Da | - +----------------------------------------------------------------------+ - */ - -/* $Id: dba_db1.c,v 1.3.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" - -#if DBA_DB1 -#include "php_db1.h" - -#ifdef DB1_INCLUDE_FILE -#include DB1_INCLUDE_FILE -#endif - -#include -#include -#include - -#define DB1_DATA dba_db1_data *dba = info->dbf -#define DB1_GKEY DBT gkey; gkey.data = (char *) key; gkey.size = keylen - -typedef struct { - DB *dbp; -} dba_db1_data; - -DBA_OPEN_FUNC(db1) -{ - dba_db1_data *dba; - DB *db; - - int gmode; - int filemode = 0644; - - if (info->argc > 0) { - convert_to_long_ex(info->argv[0]); - filemode = Z_LVAL_PP(info->argv[0]); - } - - gmode = 0; - switch (info->mode) { - case DBA_READER: - gmode = O_RDONLY; - break; - case DBA_WRITER: - gmode = O_RDWR; - break; - case DBA_CREAT: - gmode = O_RDWR | O_CREAT; - break; - case DBA_TRUNC: - gmode = O_RDWR | O_CREAT | O_TRUNC; - break; - default: - return FAILURE; /* not possible */ - } - - db = dbopen((char *)info->path, gmode, filemode, DB_HASH, NULL); - - if (db == NULL) { - return FAILURE; - } - - dba = pemalloc(sizeof(*dba), info->flags&DBA_PERSISTENT); - dba->dbp = db; - - info->dbf = dba; - - return SUCCESS; -} - -DBA_CLOSE_FUNC(db1) -{ - DB1_DATA; - dba->dbp->close(dba->dbp); - pefree(info->dbf, info->flags&DBA_PERSISTENT); -} - -DBA_FETCH_FUNC(db1) -{ - DBT gval; - DB1_DATA; - DB1_GKEY; - - memset(&gval, 0, sizeof(gval)); - if (dba->dbp->get(dba->dbp, &gkey, &gval, 0) == RET_SUCCESS) { - if (newlen) *newlen = gval.size; - return estrndup(gval.data, gval.size); - } - return NULL; -} - -DBA_UPDATE_FUNC(db1) -{ - DBT gval; - DB1_DATA; - DB1_GKEY; - - gval.data = (char *) val; - gval.size = vallen; - - return dba->dbp->put(dba->dbp, &gkey, &gval, mode == 1 ? R_NOOVERWRITE : 0) != RET_SUCCESS ? FAILURE : SUCCESS; -} - -DBA_EXISTS_FUNC(db1) -{ - DBT gval; - DB1_DATA; - DB1_GKEY; - - return dba->dbp->get(dba->dbp, &gkey, &gval, 0) != RET_SUCCESS ? FAILURE : SUCCESS; -} - -DBA_DELETE_FUNC(db1) -{ - DB1_DATA; - DB1_GKEY; - - return dba->dbp->del(dba->dbp, &gkey, 0) != RET_SUCCESS ? FAILURE : SUCCESS; -} - -DBA_FIRSTKEY_FUNC(db1) -{ - DBT gkey; - DBT gval; - DB1_DATA; - - memset(&gkey, 0, sizeof(gkey)); - memset(&gval, 0, sizeof(gval)); - - if (dba->dbp->seq(dba->dbp, &gkey, &gval, R_FIRST) == RET_SUCCESS) { - if (newlen) *newlen = gkey.size; - return estrndup(gkey.data, gkey.size); - } - return NULL; -} - -DBA_NEXTKEY_FUNC(db1) -{ - DBT gkey; - DBT gval; - DB1_DATA; - - memset(&gkey, 0, sizeof(gkey)); - memset(&gval, 0, sizeof(gval)); - - if (dba->dbp->seq(dba->dbp, &gkey, &gval, R_NEXT) == RET_SUCCESS) { - if (newlen) *newlen = gkey.size; - return estrndup(gkey.data, gkey.size); - } - return NULL; -} - -DBA_OPTIMIZE_FUNC(db1) -{ - /* dummy */ - return SUCCESS; -} - -DBA_SYNC_FUNC(db1) -{ - return SUCCESS; -} - -DBA_INFO_FUNC(db1) -{ - return estrdup(DB1_VERSION); -} - -#endif - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 fdm=marker - * vim<600: sw=4 ts=4 - */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2009 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Shen Cheng-Da | + +----------------------------------------------------------------------+ + */ + +/* $Id: dba_db1.c,v 1.3.2.1.2.4 2008/12/31 11:17:36 sebastian Exp $ */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" + +#if DBA_DB1 +#include "php_db1.h" + +#ifdef DB1_INCLUDE_FILE +#include DB1_INCLUDE_FILE +#endif + +#include +#include +#include + +#define DB1_DATA dba_db1_data *dba = info->dbf +#define DB1_GKEY DBT gkey; gkey.data = (char *) key; gkey.size = keylen + +typedef struct { + DB *dbp; +} dba_db1_data; + +DBA_OPEN_FUNC(db1) +{ + dba_db1_data *dba; + DB *db; + + int gmode; + int filemode = 0644; + + if (info->argc > 0) { + convert_to_long_ex(info->argv[0]); + filemode = Z_LVAL_PP(info->argv[0]); + } + + gmode = 0; + switch (info->mode) { + case DBA_READER: + gmode = O_RDONLY; + break; + case DBA_WRITER: + gmode = O_RDWR; + break; + case DBA_CREAT: + gmode = O_RDWR | O_CREAT; + break; + case DBA_TRUNC: + gmode = O_RDWR | O_CREAT | O_TRUNC; + break; + default: + return FAILURE; /* not possible */ + } + + db = dbopen((char *)info->path, gmode, filemode, DB_HASH, NULL); + + if (db == NULL) { + return FAILURE; + } + + dba = pemalloc(sizeof(*dba), info->flags&DBA_PERSISTENT); + dba->dbp = db; + + info->dbf = dba; + + return SUCCESS; +} + +DBA_CLOSE_FUNC(db1) +{ + DB1_DATA; + dba->dbp->close(dba->dbp); + pefree(info->dbf, info->flags&DBA_PERSISTENT); +} + +DBA_FETCH_FUNC(db1) +{ + DBT gval; + DB1_DATA; + DB1_GKEY; + + memset(&gval, 0, sizeof(gval)); + if (dba->dbp->get(dba->dbp, &gkey, &gval, 0) == RET_SUCCESS) { + if (newlen) *newlen = gval.size; + return estrndup(gval.data, gval.size); + } + return NULL; +} + +DBA_UPDATE_FUNC(db1) +{ + DBT gval; + DB1_DATA; + DB1_GKEY; + + gval.data = (char *) val; + gval.size = vallen; + + return dba->dbp->put(dba->dbp, &gkey, &gval, mode == 1 ? R_NOOVERWRITE : 0) != RET_SUCCESS ? FAILURE : SUCCESS; +} + +DBA_EXISTS_FUNC(db1) +{ + DBT gval; + DB1_DATA; + DB1_GKEY; + + return dba->dbp->get(dba->dbp, &gkey, &gval, 0) != RET_SUCCESS ? FAILURE : SUCCESS; +} + +DBA_DELETE_FUNC(db1) +{ + DB1_DATA; + DB1_GKEY; + + return dba->dbp->del(dba->dbp, &gkey, 0) != RET_SUCCESS ? FAILURE : SUCCESS; +} + +DBA_FIRSTKEY_FUNC(db1) +{ + DBT gkey; + DBT gval; + DB1_DATA; + + memset(&gkey, 0, sizeof(gkey)); + memset(&gval, 0, sizeof(gval)); + + if (dba->dbp->seq(dba->dbp, &gkey, &gval, R_FIRST) == RET_SUCCESS) { + if (newlen) *newlen = gkey.size; + return estrndup(gkey.data, gkey.size); + } + return NULL; +} + +DBA_NEXTKEY_FUNC(db1) +{ + DBT gkey; + DBT gval; + DB1_DATA; + + memset(&gkey, 0, sizeof(gkey)); + memset(&gval, 0, sizeof(gval)); + + if (dba->dbp->seq(dba->dbp, &gkey, &gval, R_NEXT) == RET_SUCCESS) { + if (newlen) *newlen = gkey.size; + return estrndup(gkey.data, gkey.size); + } + return NULL; +} + +DBA_OPTIMIZE_FUNC(db1) +{ + /* dummy */ + return SUCCESS; +} + +DBA_SYNC_FUNC(db1) +{ + return SUCCESS; +} + +DBA_INFO_FUNC(db1) +{ + return estrdup(DB1_VERSION); +} + +#endif + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: sw=4 ts=4 fdm=marker + * vim<600: sw=4 ts=4 + */ diff --git a/ext/dba/dba_db2.c b/ext/dba/dba_db2.c index 79d835d01..56d145149 100644 --- a/ext/dba/dba_db2.c +++ b/ext/dba/dba_db2.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db2.c,v 1.39.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_db2.c,v 1.39.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c index 5fbcdf851..0209cb8ca 100644 --- a/ext/dba/dba_db3.c +++ b/ext/dba/dba_db3.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db3.c,v 1.33.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_db3.c,v 1.33.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c index b2bdec8e8..9bb3e9726 100644 --- a/ext/dba/dba_db4.c +++ b/ext/dba/dba_db4.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db4.c,v 1.15.2.3.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_db4.c,v 1.15.2.3.2.4 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -36,7 +36,11 @@ #include #endif -static void php_dba_db4_errcall_fcn(const char *errpfx, char *msg) +static void php_dba_db4_errcall_fcn( +#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3) + const DB_ENV *dbenv, +#endif + const char *errpfx, const char *msg) { TSRMLS_FETCH(); @@ -81,7 +85,6 @@ DBA_OPEN_FUNC(db4) return FAILURE; /* not possible */ } - gmode |= DB_INIT_LOCK; if (info->flags & DBA_PERSISTENT) { gmode |= DB_THREAD; } @@ -91,10 +94,6 @@ DBA_OPEN_FUNC(db4) filemode = Z_LVAL_PP(info->argv[0]); } -#ifdef DB_FCNTL_LOCKING - gmode |= DB_FCNTL_LOCKING; -#endif - if ((err=db_create(&dbp, NULL, 0)) == 0) { dbp->set_errcall(dbp, php_dba_db4_errcall_fcn); if ( diff --git a/ext/dba/dba_dbm.c b/ext/dba/dba_dbm.c index a7896be85..27e196b90 100644 --- a/ext/dba/dba_dbm.c +++ b/ext/dba/dba_dbm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_dbm.c,v 1.29.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_dbm.c,v 1.29.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_flatfile.c b/ext/dba/dba_flatfile.c index 30f8bf4ac..f57d1e4c4 100644 --- a/ext/dba/dba_flatfile.c +++ b/ext/dba/dba_flatfile.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_flatfile.c,v 1.19.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_flatfile.c,v 1.19.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_gdbm.c b/ext/dba/dba_gdbm.c index de915f950..0a821b1f8 100644 --- a/ext/dba/dba_gdbm.c +++ b/ext/dba/dba_gdbm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_gdbm.c,v 1.23.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_gdbm.c,v 1.23.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_inifile.c b/ext/dba/dba_inifile.c index 291258283..6fa9a80ad 100644 --- a/ext/dba/dba_inifile.c +++ b/ext/dba/dba_inifile.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_inifile.c,v 1.5.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_inifile.c,v 1.5.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_ndbm.c b/ext/dba/dba_ndbm.c index 8414385f6..8062d67c2 100644 --- a/ext/dba/dba_ndbm.c +++ b/ext/dba/dba_ndbm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_ndbm.c,v 1.19.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_ndbm.c,v 1.19.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/dba_qdbm.c b/ext/dba/dba_qdbm.c index da9a0bd4a..4cfcbbfcd 100755 --- a/ext/dba/dba_qdbm.c +++ b/ext/dba/dba_qdbm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_qdbm.c,v 1.4.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dba_qdbm.c,v 1.4.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dba/libcdb/cdb.c b/ext/dba/libcdb/cdb.c index d84214b1c..597ab02b8 100644 --- a/ext/dba/libcdb/cdb.c +++ b/ext/dba/libcdb/cdb.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb.c,v 1.10.2.1.2.4 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: cdb.c,v 1.10.2.1.2.5 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -189,6 +189,6 @@ int cdb_find(struct cdb *c, char *key, unsigned int len TSRMLS_DC) /* {{{ cdb_version */ char *cdb_version() { - return "0.75, $Revision: 1.10.2.1.2.4 $"; + return "0.75, $Revision: 1.10.2.1.2.5 $"; } /* }}} */ diff --git a/ext/dba/libcdb/cdb.h b/ext/dba/libcdb/cdb.h index 38af71e28..e5a828104 100644 --- a/ext/dba/libcdb/cdb.h +++ b/ext/dba/libcdb/cdb.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb.h,v 1.7.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: cdb.h,v 1.7.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ diff --git a/ext/dba/libcdb/cdb_make.c b/ext/dba/libcdb/cdb_make.c index c68451367..79a15c1cf 100644 --- a/ext/dba/libcdb/cdb_make.c +++ b/ext/dba/libcdb/cdb_make.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb_make.c,v 1.9.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: cdb_make.c,v 1.9.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -240,5 +240,5 @@ int cdb_make_finish(struct cdb_make *c TSRMLS_DC) /* {{{ cdb_make_version */ char *cdb_make_version() { - return "0.75, $Revision: 1.9.2.1.2.2 $"; + return "0.75, $Revision: 1.9.2.1.2.3 $"; } diff --git a/ext/dba/libcdb/cdb_make.h b/ext/dba/libcdb/cdb_make.h index b93028181..d121ea85a 100644 --- a/ext/dba/libcdb/cdb_make.h +++ b/ext/dba/libcdb/cdb_make.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb_make.h,v 1.7.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: cdb_make.h,v 1.7.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ diff --git a/ext/dba/libcdb/uint32.c b/ext/dba/libcdb/uint32.c index 955edbdd0..06dcc40a6 100644 --- a/ext/dba/libcdb/uint32.c +++ b/ext/dba/libcdb/uint32.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: uint32.c,v 1.6.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: uint32.c,v 1.6.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ diff --git a/ext/dba/libcdb/uint32.h b/ext/dba/libcdb/uint32.h index 35591e49e..8dcdb2b35 100644 --- a/ext/dba/libcdb/uint32.h +++ b/ext/dba/libcdb/uint32.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: uint32.h,v 1.6.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: uint32.h,v 1.6.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ diff --git a/ext/dba/libflatfile/flatfile.c b/ext/dba/libflatfile/flatfile.c index 7d8b3ff9f..0e7d1c8c4 100644 --- a/ext/dba/libflatfile/flatfile.c +++ b/ext/dba/libflatfile/flatfile.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.c,v 1.14.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: flatfile.c,v 1.14.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -307,7 +307,7 @@ datum flatfile_nextkey(flatfile *dba TSRMLS_DC) { /* {{{ flatfile_version */ char *flatfile_version() { - return "1.0, $Revision: 1.14.2.1.2.2 $"; + return "1.0, $Revision: 1.14.2.1.2.3 $"; } /* }}} */ diff --git a/ext/dba/libflatfile/flatfile.h b/ext/dba/libflatfile/flatfile.h index 3ec25a396..4ad468427 100644 --- a/ext/dba/libflatfile/flatfile.h +++ b/ext/dba/libflatfile/flatfile.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.h,v 1.11.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: flatfile.h,v 1.11.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef PHP_LIB_FLATFILE_H #define PHP_LIB_FLATFILE_H diff --git a/ext/dba/libinifile/inifile.c b/ext/dba/libinifile/inifile.c index c87025314..080124ff7 100644 --- a/ext/dba/libinifile/inifile.c +++ b/ext/dba/libinifile/inifile.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: inifile.c,v 1.14.2.1.2.4 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: inifile.c,v 1.14.2.1.2.6 2008/12/31 11:17:36 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -43,7 +43,7 @@ /* {{{ inifile_version */ char *inifile_version() { - return "1.0, $Revision: 1.14.2.1.2.4 $"; + return "1.0, $Revision: 1.14.2.1.2.6 $"; } /* }}} */ @@ -508,7 +508,9 @@ static int inifile_delete_replace_append(inifile *dba, const key_type *key, cons /* 5 */ if (ret == SUCCESS) { - ret = inifile_truncate(dba, append ? pos_grp_next : pos_grp_start TSRMLS_CC); /* writes error on fail */ + if (!value || (key->name && strlen(key->name))) { + ret = inifile_truncate(dba, append ? pos_grp_next : pos_grp_start TSRMLS_CC); /* writes error on fail */ + } } if (ret == SUCCESS) { diff --git a/ext/dba/libinifile/inifile.h b/ext/dba/libinifile/inifile.h index f50806acb..34268209c 100644 --- a/ext/dba/libinifile/inifile.h +++ b/ext/dba/libinifile/inifile.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: inifile.h,v 1.5.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: inifile.h,v 1.5.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef PHP_LIB_INIFILE_H #define PHP_LIB_INIFILE_H diff --git a/ext/dba/php_dba.h b/ext/dba/php_dba.h index f7fd95d41..2440cba40 100644 --- a/ext/dba/php_dba.h +++ b/ext/dba/php_dba.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dba.h,v 1.29.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: php_dba.h,v 1.29.2.1.2.3 2008/12/31 11:17:36 sebastian Exp $ */ #ifndef PHP_DBA_H #define PHP_DBA_H diff --git a/ext/dba/tests/dba_db4.phpt b/ext/dba/tests/dba_db4.phpt index 252797bf4..fcf089a1e 100644 --- a/ext/dba/tests/dba_db4.phpt +++ b/ext/dba/tests/dba_db4.phpt @@ -9,7 +9,6 @@ DBA DB4 handler test ===DONE=== @@ -18,7 +17,22 @@ database handler: db4 3NYNYY Content String 2 Content 2 replaced -Read during write: allowed +Read during write: not allowed +Content 2 replaced 2nd time +The 6th value +array(3) { + ["key number 6"]=> + string(13) "The 6th value" + ["key2"]=> + string(27) "Content 2 replaced 2nd time" + ["key5"]=> + string(23) "The last content string" +} +--NO-LOCK-- +3NYNYY +Content String 2 +Content 2 replaced +Read during write: not allowed Content 2 replaced 2nd time The 6th value array(3) { diff --git a/ext/dom/attr.c b/ext/dom/attr.c index a77c8e9ac..ea4538330 100644 --- a/ext/dom/attr.c +++ b/ext/dom/attr.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: attr.c,v 1.18.2.2.2.4 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: attr.c,v 1.18.2.2.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/cdatasection.c b/ext/dom/cdatasection.c index d153026e3..0e1116994 100644 --- a/ext/dom/cdatasection.c +++ b/ext/dom/cdatasection.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdatasection.c,v 1.11.2.1.2.3 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: cdatasection.c,v 1.11.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -73,7 +73,7 @@ PHP_METHOD(domcdatasection, __construct) intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern != NULL) { - oldnode = (xmlNodePtr)intern->ptr; + oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode TSRMLS_CC); } diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c index 20b5a3980..153533756 100644 --- a/ext/dom/characterdata.c +++ b/ext/dom/characterdata.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: characterdata.c,v 1.15.2.1.2.4 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: characterdata.c,v 1.15.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/comment.c b/ext/dom/comment.c index 94d720352..2e7271ab0 100644 --- a/ext/dom/comment.c +++ b/ext/dom/comment.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: comment.c,v 1.11.2.1.2.3 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: comment.c,v 1.11.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -73,7 +73,7 @@ PHP_METHOD(domcomment, __construct) intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern != NULL) { - oldnode = (xmlNodePtr)intern->ptr; + oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode TSRMLS_CC); } diff --git a/ext/dom/document.c b/ext/dom/document.c index c5d504d2f..f699ac7f6 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: document.c,v 1.68.2.3.2.8 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: document.c,v 1.68.2.3.2.11 2009/01/26 19:11:19 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -153,7 +153,7 @@ ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_document_savexml, 0, 0, 0) - ZEND_ARG_OBJ_INFO(0, node, DOMNode, 0) + ZEND_ARG_OBJ_INFO(0, node, DOMNode, 1) ZEND_END_ARG_INFO(); static @@ -1687,7 +1687,7 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int optio EG(error_reporting) = old_error_reporting; } /* If loading from memory, set the base reference uri for the document */ - if (ret->URL == NULL && ctxt->directory != NULL) { + if (ret && ret->URL == NULL && ctxt->directory != NULL) { ret->URL = xmlStrdup(ctxt->directory); } } else { diff --git a/ext/dom/documentfragment.c b/ext/dom/documentfragment.c index feaa8b52a..88b30e1c0 100644 --- a/ext/dom/documentfragment.c +++ b/ext/dom/documentfragment.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: documentfragment.c,v 1.15.2.1.2.3 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: documentfragment.c,v 1.15.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -76,7 +76,7 @@ PHP_METHOD(domdocumentfragment, __construct) intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern != NULL) { - oldnode = (xmlNodePtr)intern->ptr; + oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode TSRMLS_CC); } diff --git a/ext/dom/documenttype.c b/ext/dom/documenttype.c index db4fa4833..18365f1bc 100644 --- a/ext/dom/documenttype.c +++ b/ext/dom/documenttype.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: documenttype.c,v 1.15.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: documenttype.c,v 1.15.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/dom_ce.h b/ext/dom/dom_ce.h index 14c832863..4d0c12d90 100644 --- a/ext/dom/dom_ce.h +++ b/ext/dom/dom_ce.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dom_ce.h,v 1.8.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dom_ce.h,v 1.8.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef DOM_CE_H #define DOM_CE_H diff --git a/ext/dom/dom_fe.h b/ext/dom/dom_fe.h index df791c8a5..f603bb39c 100644 --- a/ext/dom/dom_fe.h +++ b/ext/dom/dom_fe.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dom_fe.h,v 1.14.2.1.2.5 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dom_fe.h,v 1.14.2.1.2.6 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef DOM_FE_H #define DOM_FE_H diff --git a/ext/dom/dom_iterators.c b/ext/dom/dom_iterators.c index ef660cf4f..a56c83536 100644 --- a/ext/dom/dom_iterators.c +++ b/ext/dom/dom_iterators.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dom_iterators.c,v 1.9.2.3.2.6 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dom_iterators.c,v 1.9.2.3.2.7 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/dom_properties.h b/ext/dom/dom_properties.h index 27ad5c1bd..6064bdc4b 100644 --- a/ext/dom/dom_properties.h +++ b/ext/dom/dom_properties.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dom_properties.h,v 1.7.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: dom_properties.h,v 1.7.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef DOM_PROPERTIES_H #define DOM_PROPERTIES_H diff --git a/ext/dom/domconfiguration.c b/ext/dom/domconfiguration.c index 21e14dd4b..98a81c762 100644 --- a/ext/dom/domconfiguration.c +++ b/ext/dom/domconfiguration.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domconfiguration.c,v 1.5.2.1.2.3 2008/02/04 15:23:10 sebastian Exp $ */ +/* $Id: domconfiguration.c,v 1.5.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -32,7 +32,7 @@ static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_configuration_set_parameter, 0, 0, 2) ZEND_ARG_INFO(0, name) - ZEND_ARG_OBJ_INFO(0, value, DOMUserData, 0) + ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO(); static @@ -43,7 +43,7 @@ ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_configuration_can_set_parameter, 0, 0, 0) ZEND_ARG_INFO(0, name) - ZEND_ARG_OBJ_INFO(0, value, DOMUserData, 0) + ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO(); /* }}} */ diff --git a/ext/dom/domerror.c b/ext/dom/domerror.c index 4fae3eeb7..940c427e4 100644 --- a/ext/dom/domerror.c +++ b/ext/dom/domerror.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domerror.c,v 1.6.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: domerror.c,v 1.6.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domerrorhandler.c b/ext/dom/domerrorhandler.c index 493aa38f9..4da18ff2a 100644 --- a/ext/dom/domerrorhandler.c +++ b/ext/dom/domerrorhandler.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domerrorhandler.c,v 1.5.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: domerrorhandler.c,v 1.5.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domexception.c b/ext/dom/domexception.c index 0bd87ece2..56ee632f2 100644 --- a/ext/dom/domexception.c +++ b/ext/dom/domexception.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domexception.c,v 1.11.2.1.2.2 2007/12/31 07:20:05 sebastian Exp $ */ +/* $Id: domexception.c,v 1.11.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domimplementation.c b/ext/dom/domimplementation.c index 890a5abab..7a62b725e 100644 --- a/ext/dom/domimplementation.c +++ b/ext/dom/domimplementation.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domimplementation.c,v 1.15.2.2.2.4 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: domimplementation.c,v 1.15.2.2.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domimplementationlist.c b/ext/dom/domimplementationlist.c index d65e2beb6..d49298200 100644 --- a/ext/dom/domimplementationlist.c +++ b/ext/dom/domimplementationlist.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domimplementationlist.c,v 1.6.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: domimplementationlist.c,v 1.6.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domimplementationsource.c b/ext/dom/domimplementationsource.c index 3bc4d2b9c..d9cba4a23 100644 --- a/ext/dom/domimplementationsource.c +++ b/ext/dom/domimplementationsource.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domimplementationsource.c,v 1.5.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: domimplementationsource.c,v 1.5.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domlocator.c b/ext/dom/domlocator.c index fd915a9d1..d80f13cbd 100644 --- a/ext/dom/domlocator.c +++ b/ext/dom/domlocator.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domlocator.c,v 1.6.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: domlocator.c,v 1.6.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/domstringlist.c b/ext/dom/domstringlist.c index c902bbaf9..31810d962 100644 --- a/ext/dom/domstringlist.c +++ b/ext/dom/domstringlist.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: domstringlist.c,v 1.6.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: domstringlist.c,v 1.6.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/element.c b/ext/dom/element.c index 5f6614de7..8b754a4d4 100644 --- a/ext/dom/element.c +++ b/ext/dom/element.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: element.c,v 1.36.2.4.2.10 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: element.c,v 1.36.2.4.2.12 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -585,6 +585,10 @@ PHP_FUNCTION(dom_element_set_attribute_node) xmlUnlinkNode((xmlNodePtr) existattrp); } + if (attrp->parent != NULL) { + xmlUnlinkNode((xmlNodePtr) attrp); + } + if (attrp->doc == NULL && nodep->doc != NULL) { attrobj->document = intern->document; php_libxml_increment_doc_ref((php_libxml_node_object *)attrobj, NULL TSRMLS_CC); @@ -998,6 +1002,10 @@ PHP_FUNCTION(dom_element_set_attribute_node_ns) xmlUnlinkNode((xmlNodePtr) existattrp); } + if (attrp->parent != NULL) { + xmlUnlinkNode((xmlNodePtr) attrp); + } + if (attrp->doc == NULL && nodep->doc != NULL) { attrobj->document = intern->document; php_libxml_increment_doc_ref((php_libxml_node_object *)attrobj, NULL TSRMLS_CC); diff --git a/ext/dom/entity.c b/ext/dom/entity.c index 8781367ca..363d6d42a 100644 --- a/ext/dom/entity.c +++ b/ext/dom/entity.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: entity.c,v 1.9.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: entity.c,v 1.9.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/entityreference.c b/ext/dom/entityreference.c index 740a29ebd..b01bcbf7a 100644 --- a/ext/dom/entityreference.c +++ b/ext/dom/entityreference.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: entityreference.c,v 1.12.2.1.2.4 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: entityreference.c,v 1.12.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/namednodemap.c b/ext/dom/namednodemap.c index 75885e101..2f83607a2 100644 --- a/ext/dom/namednodemap.c +++ b/ext/dom/namednodemap.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: namednodemap.c,v 1.15.2.2.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: namednodemap.c,v 1.15.2.2.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/namelist.c b/ext/dom/namelist.c index 93b4778ec..c0c82b602 100644 --- a/ext/dom/namelist.c +++ b/ext/dom/namelist.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: namelist.c,v 1.7.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: namelist.c,v 1.7.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/node.c b/ext/dom/node.c index d02f20a14..138c59dec 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: node.c,v 1.37.2.3.2.11 2008/01/30 06:48:20 sebastian Exp $ */ +/* $Id: node.c,v 1.37.2.3.2.13 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -112,7 +112,7 @@ ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_set_user_data, 0, 0, 3) ZEND_ARG_INFO(0, key) - ZEND_ARG_OBJ_INFO(0, data, DOMUserData, 0) + ZEND_ARG_INFO(0, data) ZEND_ARG_INFO(0, handler) ZEND_END_ARG_INFO(); diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c index fbd6bfd1c..ecea228dc 100644 --- a/ext/dom/nodelist.c +++ b/ext/dom/nodelist.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: nodelist.c,v 1.17.2.2.2.4 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: nodelist.c,v 1.17.2.2.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/notation.c b/ext/dom/notation.c index 5009bfbe4..e30f5a875 100644 --- a/ext/dom/notation.c +++ b/ext/dom/notation.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: notation.c,v 1.9.2.2.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: notation.c,v 1.9.2.2.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index f994fc08f..37d4dc2a7 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.73.2.12.2.13 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_dom.c,v 1.73.2.12.2.15 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -186,7 +186,7 @@ int dom_set_doc_classmap(php_libxml_ref_obj *document, zend_class_entry *basece, if (ce) { return zend_hash_update(doc_props->classmap, basece->name, basece->name_length + 1, &ce, sizeof(ce), NULL); } else { - return zend_hash_del(doc_props->classmap, basece->name, basece->name_length + 1); + zend_hash_del(doc_props->classmap, basece->name, basece->name_length + 1); } } return SUCCESS; diff --git a/ext/dom/php_dom.h b/ext/dom/php_dom.h index 6f82067ad..61f11f3bb 100644 --- a/ext/dom/php_dom.h +++ b/ext/dom/php_dom.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.h,v 1.28.2.1.2.5 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_dom.h,v 1.28.2.1.2.6 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef PHP_DOM_H #define PHP_DOM_H diff --git a/ext/dom/processinginstruction.c b/ext/dom/processinginstruction.c index cbfb29861..67354d829 100644 --- a/ext/dom/processinginstruction.c +++ b/ext/dom/processinginstruction.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: processinginstruction.c,v 1.17.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: processinginstruction.c,v 1.17.2.1.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -81,7 +81,7 @@ PHP_METHOD(domprocessinginstruction, __construct) intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern != NULL) { - oldnode = (xmlNodePtr)intern->ptr; + oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode TSRMLS_CC); } diff --git a/ext/dom/string_extend.c b/ext/dom/string_extend.c index 60a522f1b..af0a1db27 100644 --- a/ext/dom/string_extend.c +++ b/ext/dom/string_extend.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: string_extend.c,v 1.5.2.1.2.3 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: string_extend.c,v 1.5.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/tests/DOMCharacterData_appendData_basic.phpt b/ext/dom/tests/DOMCharacterData_appendData_basic.phpt new file mode 100644 index 000000000..ee590de80 --- /dev/null +++ b/ext/dom/tests/DOMCharacterData_appendData_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +DOMCharacterData::appendData basic functionality test +--CREDITS-- +Mike Sullivan +#TestFest 2008 (London) +--FILE-- +createElement('root'); +$document->appendChild($root); + +$cdata = $document->createElement('cdata'); +$root->appendChild($cdata); + +$cdatanode = $document->createCDATASection(''); +$cdata->appendChild($cdatanode); +$cdatanode->appendData('data'); +echo "CDATA Length (one append): " . $cdatanode->length . "\n"; + +$cdatanode->appendData('><&"'); +echo "CDATA Length (two appends): " . $cdatanode->length . "\n"; + +echo "CDATA Content: " . $cdatanode->data . "\n"; + +echo "\n" . $document->saveXML(); + +?> +--EXPECT-- +CDATA Length (one append): 4 +CDATA Length (two appends): 8 +CDATA Content: data><&" + + +<&"]]> \ No newline at end of file diff --git a/ext/dom/tests/DOMComment_appendData_basic.phpt b/ext/dom/tests/DOMComment_appendData_basic.phpt new file mode 100644 index 000000000..c756f1665 --- /dev/null +++ b/ext/dom/tests/DOMComment_appendData_basic.phpt @@ -0,0 +1,21 @@ +--TEST-- +Test adding data to a DOMComment +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +$comment->appendData('-more-data'); +$dom->appendChild($comment); +$dom->saveXML(); +echo $dom->saveXML(); + +?> +--EXPECTF-- + + \ No newline at end of file diff --git a/ext/dom/tests/DOMComment_appendData_basic_Sullivan.phpt b/ext/dom/tests/DOMComment_appendData_basic_Sullivan.phpt new file mode 100644 index 000000000..ae06d8a87 --- /dev/null +++ b/ext/dom/tests/DOMComment_appendData_basic_Sullivan.phpt @@ -0,0 +1,37 @@ +--TEST-- +DOMComment::appendData basic functionality test +--CREDITS-- +Mike Sullivan +#TestFest 2008 (London) +--SKIPIF-- + +--FILE-- +createElement('root'); +$document->appendChild($root); + +$comment = $document->createElement('comment'); +$root->appendChild($comment); + +$commentnode = $document->createComment(''); +$comment->appendChild($commentnode); +$commentnode->appendData('data'); +echo "Comment Length (one append): " . $commentnode->length . "\n"; + +$commentnode->appendData('><&"'); +echo "Comment Length (two appends): " . $commentnode->length . "\n"; + +echo "Comment Content: " . $commentnode->data . "\n"; + +echo "\n" . $document->saveXML(); + +?> +--EXPECT-- +Comment Length (one append): 4 +Comment Length (two appends): 8 +Comment Content: data><&" + + + \ No newline at end of file diff --git a/ext/dom/tests/DOMComment_insertData_basic.phpt b/ext/dom/tests/DOMComment_insertData_basic.phpt new file mode 100644 index 000000000..5a4857d67 --- /dev/null +++ b/ext/dom/tests/DOMComment_insertData_basic.phpt @@ -0,0 +1,21 @@ +--TEST-- +Test inserting data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +$comment->insertData(4,'-inserted'); +$dom->appendChild($comment); +echo $dom->saveXML(); + +?> +--EXPECTF-- + + diff --git a/ext/dom/tests/DOMComment_insertData_error1.phpt b/ext/dom/tests/DOMComment_insertData_error1.phpt new file mode 100644 index 000000000..56922ac51 --- /dev/null +++ b/ext/dom/tests/DOMComment_insertData_error1.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test inserting data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +try { + $comment->insertData(-1,'-inserted'); +} catch (DOMException $e ) { + if ($e->getMessage() == 'Index Size Error'){ + echo "Throws DOMException for -ve offset\n"; + } +} + +?> +--EXPECTF-- +Throws DOMException for -ve offset diff --git a/ext/dom/tests/DOMComment_insertData_error2.phpt b/ext/dom/tests/DOMComment_insertData_error2.phpt new file mode 100644 index 000000000..d2affa89e --- /dev/null +++ b/ext/dom/tests/DOMComment_insertData_error2.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test inserting data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +try { + $comment->insertData(999,'-inserted'); +} catch (DOMException $e ) { + if ($e->getMessage() == 'Index Size Error'){ + echo "Throws DOMException for offset too large\n"; + } +} + +?> +--EXPECTF-- +Throws DOMException for offset too large \ No newline at end of file diff --git a/ext/dom/tests/DOMComment_replaceData_basic.phpt b/ext/dom/tests/DOMComment_replaceData_basic.phpt new file mode 100644 index 000000000..2963cb1e0 --- /dev/null +++ b/ext/dom/tests/DOMComment_replaceData_basic.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test replacing data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +$comment->replaceData(4,1,'replaced'); +$dom->appendChild($comment); +echo $dom->saveXML(); + +// Replaces rest of string if count is greater than length of existing string +$dom = new DomDocument(); +$comment = $dom->createComment('test-comment'); +$comment->replaceData(0,50,'replaced'); +$dom->appendChild($comment); +echo $dom->saveXML(); + +?> +--EXPECTF-- + + + + diff --git a/ext/dom/tests/DOMComment_replaceData_error1.phpt b/ext/dom/tests/DOMComment_replaceData_error1.phpt new file mode 100644 index 000000000..4ae4cb61d --- /dev/null +++ b/ext/dom/tests/DOMComment_replaceData_error1.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test replacing data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +try { + $comment->replaceData(-1,4,'-inserted'); +} catch (DOMException $e ) { + if ($e->getMessage() == 'Index Size Error'){ + echo "Throws DOMException for -ve offest\n"; + } +} + +?> +--EXPECTF-- +Throws DOMException for -ve offest diff --git a/ext/dom/tests/DOMComment_replaceData_error2.phpt b/ext/dom/tests/DOMComment_replaceData_error2.phpt new file mode 100644 index 000000000..89614f975 --- /dev/null +++ b/ext/dom/tests/DOMComment_replaceData_error2.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test replacing data into a DOMComment basic test +--CREDITS-- +Andrew Larssen +London TestFest 2008 +--SKIPIF-- + +--FILE-- +createComment('test-comment'); +try { + $comment->replaceData(999,4,'-inserted'); +} catch (DOMException $e ) { + if ($e->getMessage() == 'Index Size Error'){ + echo "Throws DOMException for offest too large\n"; + } +} + +?> +--EXPECTF-- +Throws DOMException for offest too large \ No newline at end of file diff --git a/ext/dom/tests/DOMDocumentFragment_appendXML_hasChildNodes_basic.phpt b/ext/dom/tests/DOMDocumentFragment_appendXML_hasChildNodes_basic.phpt new file mode 100644 index 000000000..c82a73b52 --- /dev/null +++ b/ext/dom/tests/DOMDocumentFragment_appendXML_hasChildNodes_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Testing DOMDocumentFragment::appendXML and DOMDocumentFragment::hasChildNodes +--SKIPIF-- + +--FILE-- +createDocumentFragment(); +if ($fragment->hasChildNodes()) { + echo "has child nodes\n"; +} else { + echo "has no child nodes\n"; +} +$fragment->appendXML('bar'); +if ($fragment->hasChildNodes()) { + echo "has child nodes\n"; +} else { + echo "has no child nodes\n"; +} +--EXPECT-- +has no child nodes +has child nodes diff --git a/ext/dom/tests/DOMDocument_createAttribute_basic.phpt b/ext/dom/tests/DOMDocument_createAttribute_basic.phpt new file mode 100644 index 000000000..4dd181b3f --- /dev/null +++ b/ext/dom/tests/DOMDocument_createAttribute_basic.phpt @@ -0,0 +1,26 @@ +--TEST-- +DomDocument::createAttribute() - basic test for DomDocument::createAttribute() +--CREDITS-- +Muhammad Khalid Adnan +# TestFest 2008 +--SKIPIF-- + +--FILE-- +createElement("para"); +$newnode = $doc->appendChild($node); + +// A pass case. +$test_attribute = $doc->createAttribute("hahaha"); +$node->appendChild($test_attribute); + +echo $doc->saveXML(); + +?> +--EXPECT-- + + + diff --git a/ext/dom/tests/DOMDocument_createAttribute_error.phpt b/ext/dom/tests/DOMDocument_createAttribute_error.phpt new file mode 100644 index 000000000..bf71d554a --- /dev/null +++ b/ext/dom/tests/DOMDocument_createAttribute_error.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test DOMDocument::createAttribute() for expected expection thrown when wrong parameter passed +--SKIPIF-- + +--FILE-- +createAttribute(0); +} +catch(DOMException $e) { + $code = $e->getCode(); + if(DOM_INVALID_CHARACTER_ERR === $code) { + echo "PASS"; + } + else { + echo 'Wrong exception code'; + } +} +catch(Exception $e) { + echo 'Wrong exception thrown'; +} + +?> +--EXPECTF-- +PASS diff --git a/ext/dom/tests/DOMDocument_createAttribute_error1.phpt b/ext/dom/tests/DOMDocument_createAttribute_error1.phpt new file mode 100644 index 000000000..745873aca --- /dev/null +++ b/ext/dom/tests/DOMDocument_createAttribute_error1.phpt @@ -0,0 +1,29 @@ +--TEST-- +DomDocument::createAttribute() - error test for DomDocument::createAttribute() +--CREDITS-- +Muhammad Khalid Adnan +# TestFest 2008 +--SKIPIF-- + +--FILE-- +createElement("para"); +$newnode = $doc->appendChild($node); + +try { + $failed_test_attribute = $doc->createAttribute("ha haha"); + $node->appendChild($failed_test_attribute); + + echo $doc->saveXML(); +} +catch (DOMException $e) { + echo 'Test failed!', PHP_EOL; +} + +?> +--EXPECT-- +Test failed! + diff --git a/ext/dom/tests/DOMDocument_createAttribute_variation.phpt b/ext/dom/tests/DOMDocument_createAttribute_variation.phpt new file mode 100644 index 000000000..ff81343cc --- /dev/null +++ b/ext/dom/tests/DOMDocument_createAttribute_variation.phpt @@ -0,0 +1,14 @@ +--TEST-- +Test DOMDocument::createAttribute() for expected return value +--SKIPIF-- + +--FILE-- +createAttribute('string'); +echo get_class($attr); + +?> +--EXPECTF-- +DOMAttr diff --git a/ext/dom/tests/DOMDocument_createProcessingInstruction_basic.phpt b/ext/dom/tests/DOMDocument_createProcessingInstruction_basic.phpt new file mode 100644 index 000000000..9f45f125d --- /dev/null +++ b/ext/dom/tests/DOMDocument_createProcessingInstruction_basic.phpt @@ -0,0 +1,30 @@ +--TEST-- +DomDocument::createProcessingInstruction() - basic test for DomDocument::createProcessingInstruction() +--CREDITS-- +Muhammad Khalid Adnan +# TestFest 2008 +--SKIPIF-- + +--FILE-- +createElement("para"); +$newnode = $doc->appendChild($node); + +$test_proc_inst0 = + $doc->createProcessingInstruction( "blablabla" ); +$node->appendChild($test_proc_inst0); + +$test_proc_inst1 = + $doc->createProcessingInstruction( "blablabla", "datadata" ); +$node->appendChild($test_proc_inst1); + +echo $doc->saveXML(); + +?> +--EXPECT-- + + + diff --git a/ext/dom/tests/DOMDocument_createProcessingInstruction_error.phpt b/ext/dom/tests/DOMDocument_createProcessingInstruction_error.phpt new file mode 100644 index 000000000..a0c12b1fe --- /dev/null +++ b/ext/dom/tests/DOMDocument_createProcessingInstruction_error.phpt @@ -0,0 +1,31 @@ +--TEST-- +DomDocument::createProcessingInstruction() - error test for DomDocument::createProcessingInstruction() +--CREDITS-- +Muhammad Khalid Adnan +# TestFest 2008 +--SKIPIF-- + +--FILE-- +createElement("para"); +$newnode = $doc->appendChild($node); + +try { + $test_proc_inst = + $doc->createProcessingInstruction( "bla bla bla" ); + $node->appendChild($test_proc_inst); + + echo $doc->saveXML(); +} +catch (DOMException $e) +{ + echo 'Test failed!', PHP_EOL; +} + +?> +--EXPECT-- +Test failed! + diff --git a/ext/dom/tests/DOMDocument_loadHTML_basic.phpt b/ext/dom/tests/DOMDocument_loadHTML_basic.phpt new file mode 100644 index 000000000..616d1d837 --- /dev/null +++ b/ext/dom/tests/DOMDocument_loadHTML_basic.phpt @@ -0,0 +1,18 @@ +--TEST-- +DOMDocument::loadHTML +--CREDITS-- +Frank Cassedanne franck@ouarz.net +#London TestFest 2008 +--SKIPIF-- + +--FILE-- +loadHTML("

Test

"); +echo $doc->saveHTML(); +?> +--EXPECTF-- + +

Test

diff --git a/ext/dom/tests/DOMDocument_save_basic.phpt b/ext/dom/tests/DOMDocument_save_basic.phpt new file mode 100644 index 000000000..c7d1ead24 --- /dev/null +++ b/ext/dom/tests/DOMDocument_save_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +DOMDocument::save Test basic function of save method +--SKIPIF-- + +--FILE-- +formatOutput = true; + +$root = $doc->createElement('book'); + +$root = $doc->appendChild($root); + +$title = $doc->createElement('title'); +$title = $root->appendChild($title); + +$text = $doc->createTextNode('This is the title'); +$text = $title->appendChild($text); + +$temp_filename = dirname(__FILE__)."/DomDocument_save_basic.tmp"; + +echo 'Wrote: ' . $doc->save($temp_filename) . ' bytes'; // Wrote: 72 bytes +?> +--CLEAN-- + +--EXPECTF-- +Wrote: 72 bytes + diff --git a/ext/dom/tests/DOMElement_hasAttributes_basic.phpt b/ext/dom/tests/DOMElement_hasAttributes_basic.phpt new file mode 100644 index 000000000..36c4f5873 --- /dev/null +++ b/ext/dom/tests/DOMElement_hasAttributes_basic.phpt @@ -0,0 +1,51 @@ +--TEST-- +DOMNode: hasAttributes() +--SKIPIF-- + +--CREDITS-- +James Lewis +#TestFest 2008 +--FILE-- +loadXML($xmlstr); +if(!$dom) { + echo "Error while parsing the document\n"; + exit; +} + +$element = $dom->documentElement; + +echo "Verify that we have a DOMElement object:\n"; +var_dump($element); + +echo "\nElement should have attributes:\n"; +var_dump($element->hasAttributes()); + +$nodelist=$dom->getElementsByTagName('tbody') ; +$element = $nodelist->item(0); + +echo "\nVerify that we have a DOMElement object:\n"; +var_dump($element); + +echo "\nElement should have no attributes:\n"; +var_dump($element->hasAttributes()) + + +?> +--EXPECTF-- +Verify that we have a DOMElement object: +object(DOMElement)#%d (0) { +} + +Element should have attributes: +bool(true) + +Verify that we have a DOMElement object: +object(DOMElement)#%d (0) { +} + +Element should have no attributes: +bool(false) diff --git a/ext/dom/tests/DOMNode_cloneNode_basic.phpt b/ext/dom/tests/DOMNode_cloneNode_basic.phpt new file mode 100644 index 000000000..16b8533f7 --- /dev/null +++ b/ext/dom/tests/DOMNode_cloneNode_basic.phpt @@ -0,0 +1,111 @@ +--TEST-- +DOM cloneNode : Basic Functionality +--SKIPIF-- + +--CREDITS-- +Simon Hughes +--FILE-- + + + + + c1n1 + c1n2 + + + + + c2n1 + c2n2 + + + +EOXML; + +function dumpcourse($current) { + $title = ($current->nodeType != XML_TEXT_NODE && $current->hasAttribute('title')) ? $current->getAttribute('title'):"no title"; + echo "Course: $title:";var_dump($current); + echo "~";var_dump($current->textContent); +} + +$dom = new DOMDocument(); +$dom->loadXML($xml); +$root = $dom->documentElement; + +// strip all text nodes from this tree +$children = $root->childNodes; +$len = $children->length; +for ($index = $children->length - 1; $index >=0; $index--) { + $current = $children->item($index); + if ($current->nodeType == XML_TEXT_NODE) { + $noderemoved = $root->removeChild($current); + } +} + +echo "Start cloneNode test\n"; +$first_course = $children->item(0); +$cloned_first_course_default = $first_course->cloneNode(); +$first_course->setAttribute('title', 'new title1'); + +$cloned_first_course_true = $first_course->cloneNode(true); +$first_course->setAttribute('title', 'new title2'); + +$cloned_first_course_false = $first_course->cloneNode(false); +$first_course->setAttribute('title', 'new title3'); + +$cloned_first_course_default->setAttribute('title', 'new title default'); +$cloned_first_course_true->setAttribute('title', 'new title true'); +$cloned_first_course_false->setAttribute('title', 'new title false'); + +$root->appendChild($cloned_first_course_default); +$root->appendChild($cloned_first_course_true); +$root->appendChild($cloned_first_course_false); + +$children = $root->childNodes; +for ($index = 0; $index < $children->length; $index++) { + echo "node $index\n"; + dumpcourse($children->item($index)); +} + +--EXPECTF-- +Start cloneNode test +node 0 +Course: new title3:object(DOMElement)#6 (0) { +} +~string(24) " + + c1n1 + c1n2 + + " +node 1 +Course: two:object(DOMElement)#3 (0) { +} +~string(24) " + + c2n1 + c2n2 + + " +node 2 +Course: new title default:object(DOMElement)#4 (0) { +} +~string(0) "" +node 3 +Course: new title true:object(DOMElement)#7 (0) { +} +~string(24) " + + c1n1 + c1n2 + + " +node 4 +Course: new title false:object(DOMElement)#8 (0) { +} +~string(0) "" \ No newline at end of file diff --git a/ext/dom/tests/DOMNode_hasChildNodes_basic.phpt b/ext/dom/tests/DOMNode_hasChildNodes_basic.phpt new file mode 100644 index 000000000..3a6f6b421 --- /dev/null +++ b/ext/dom/tests/DOMNode_hasChildNodes_basic.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test whether a node has child nodes: hasChildNodes() +--SKIPIF-- + +--FILE-- + + * This is the title + * + * Check for child nodes of the , and This is the title + * +*/ + +$doc = new DOMDocument(); + +$root = $doc->createElement('book'); +$doc->appendChild($root); + +$title = $doc->createElement('title'); +$root->appendChild($title); + +$text = $doc->createTextNode('This is the title'); +$title->appendChild($text); + +echo "Root has child nodes: "; +var_dump($root->hasChildNodes()); + +echo "Title has child nodes: "; +var_dump($title->hasChildNodes()); + +echo "Text has child nodes: "; +var_dump($text->hasChildNodes()); + +?> +--EXPECTF-- +Root has child nodes: bool(true) +Title has child nodes: bool(true) +Text has child nodes: bool(false) \ No newline at end of file diff --git a/ext/dom/tests/DOMNode_issamenode_basic.phpt b/ext/dom/tests/DOMNode_issamenode_basic.phpt new file mode 100644 index 000000000..e008340ea --- /dev/null +++ b/ext/dom/tests/DOMNode_issamenode_basic.phpt @@ -0,0 +1,37 @@ +--TEST-- +DOMNode: isSameNode() +--CREDITS-- +James Lewis <james@s-1.com> +#TestFest 2008 +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +require_once("dom_test.inc"); + +$dom = new DOMDocument; +$dom->loadXML($xmlstr); +if(!$dom) { + echo "Error while parsing the document\n"; + exit; +} + +$node = $dom->documentElement; +if($node->isSameNode($node)) + echo "EXPECTING SAME NODE, PASSED\n" ; +else + echo "EXPECTING SAME NODE, FAILED\n" ; + +$nodelist=$dom->getElementsByTagName('tbody') ; + +if($nodelist->item(0)->isSameNode($node)) + echo "EXPECTING NOT SAME NODE, FAILED\n" ; +else + echo "EXPECTING NOT SAME NODE, PASSED\n" ; + +?> +===DONE=== +--EXPECT-- +EXPECTING SAME NODE, PASSED +EXPECTING NOT SAME NODE, PASSED +===DONE=== diff --git a/ext/dom/tests/DOMNode_normalize_basic.phpt b/ext/dom/tests/DOMNode_normalize_basic.phpt new file mode 100644 index 000000000..e413fb033 --- /dev/null +++ b/ext/dom/tests/DOMNode_normalize_basic.phpt @@ -0,0 +1,64 @@ +--TEST-- +DOMNode::normalize() +--SKIPIF-- +<?php +include('skipif.inc'); +?> +--FILE-- +<?php + +/* Create an XML document + * with structure + * <book> + * <author></author> + * <title>This is the title + * + * Calculate the number of title text nodes (1). + * Add another text node to title. Calculate the number of title text nodes (2). + * Normalize author. Calculate the number of title text nodes (2). + * Normalize title. Calculate the number of title text nodes (1). +*/ + +$doc = new DOMDocument(); + +$root = $doc->createElement('book'); +$doc->appendChild($root); + +$title = $doc->createElement('title'); +$root->appendChild($title); + +$author = $doc->createElement('author'); +$root->appendChild($author); + +$text = $doc->createTextNode('This is the first title'); +$title->appendChild($text); + +echo "Number of child nodes of title = "; +var_dump($title->childNodes->length); + +// add a second text node to title +$text = $doc->createTextNode('This is the second title'); +$title->appendChild($text); + +echo "Number of child nodes of title after adding second title = "; +var_dump($title->childNodes->length); + +// should do nothing +$author->normalize(); + +echo "Number of child nodes of title after normalizing author = "; +var_dump($title->childNodes->length); + + +// should concatenate first and second title text nodes +$title->normalize(); + +echo "Number of child nodes of title after normalizing title = "; +var_dump($title->childNodes->length); + +?> +--EXPECTF-- +Number of child nodes of title = int(1) +Number of child nodes of title after adding second title = int(2) +Number of child nodes of title after normalizing author = int(2) +Number of child nodes of title after normalizing title = int(1) \ No newline at end of file diff --git a/ext/dom/tests/DOMNode_removeChild_basic.phpt b/ext/dom/tests/DOMNode_removeChild_basic.phpt new file mode 100644 index 000000000..8609e58be --- /dev/null +++ b/ext/dom/tests/DOMNode_removeChild_basic.phpt @@ -0,0 +1,113 @@ +--TEST-- +DOM removeChild : Basic Functionality +--SKIPIF-- + +--CREDITS-- +Simon Hughes +--FILE-- + + + + + c1n1 + c1n2 + + + + + c2n1 + c2n2 + + + +EOXML; + +function dumpcourse($current) { + $title = ($current->nodeType != XML_TEXT_NODE && $current->hasAttribute('title')) ? $current->getAttribute('title'):"no title"; + echo "Course: $title:";var_dump($current); + echo "~";var_dump($current->textContent); +} + +$dom = new DOMDocument(); +$dom->loadXML($xml); +$root = $dom->documentElement; + +$children = $root->childNodes; +$len = $children->length; +echo "orignal has $len nodes\n"; +for ($index = $children->length - 1; $index >=0; $index--) { + echo "node $index\n"; + $current = $children->item($index); + dumpcourse($current); + if ($current->nodeType == XML_TEXT_NODE) { + $noderemoved = $root->removeChild($current); + } +} +$children = $root->childNodes; +$len = $children->length; +echo "after text removed it now has $len nodes\n"; +for ($index = 0; $index < $children->length; $index++) { + echo "node $index\n"; + $current = $children->item($index); + dumpcourse($current); +} + +--EXPECTF-- +orignal has 5 nodes +node 4 +Course: no title:object(DOMText)#4 (0) { +} +~string(1) " +" +node 3 +Course: two:object(DOMElement)#5 (0) { +} +~string(24) " + + c2n1 + c2n2 + + " +node 2 +Course: no title:object(DOMText)#6 (0) { +} +~string(2) " + " +node 1 +Course: one:object(DOMElement)#4 (0) { +} +~string(24) " + + c1n1 + c1n2 + + " +node 0 +Course: no title:object(DOMText)#5 (0) { +} +~string(2) " + " +after text removed it now has 2 nodes +node 0 +Course: one:object(DOMElement)#3 (0) { +} +~string(24) " + + c1n1 + c1n2 + + " +node 1 +Course: two:object(DOMElement)#4 (0) { +} +~string(24) " + + c2n1 + c2n2 + + " \ No newline at end of file diff --git a/ext/dom/tests/DOMNode_replaceChild_basic.phpt b/ext/dom/tests/DOMNode_replaceChild_basic.phpt new file mode 100644 index 000000000..49fc05501 --- /dev/null +++ b/ext/dom/tests/DOMNode_replaceChild_basic.phpt @@ -0,0 +1,44 @@ +--TEST-- +Replacing a child node +--SKIPIF-- + +--CREDITS-- +Matt Raines +#London TestFest 2008 +--FILE-- +loadXML(' +'); + +// Replaces the child node oldChild with newChild in the list of children, and +// returns the oldChild node. +$parent = $document->getElementsByTagName('foo')->item(0); +$new_child = $document->createElement('qux'); +$old_child = $parent->replaceChild($new_child, $parent->firstChild); +echo "New child replaces old child:\n" . $document->saveXML(); +echo "Old child is returned:\n" . $old_child->tagName . "\n"; + +// If the newChild is already in the tree, it is first removed. +$parent = $document->getElementsByTagName('spam')->item(0); +$parent->replaceChild($new_child, $parent->firstChild); +echo "Existing child is removed from tree:\n" . $document->saveXML(); + +// Children are inserted in the correct order. +$new_child = $document->getElementsByTagName('spam')->item(0); +$parent = $document->getElementsByTagName('foo')->item(0); +$parent->replaceChild($new_child, $parent->firstChild); +echo "Children are inserted in order:\n" . $document->saveXML(); +?> +--EXPECT-- +New child replaces old child: + + +Old child is returned: +bar +Existing child is removed from tree: + + +Children are inserted in order: + + diff --git a/ext/dom/tests/DOMText_appendData_basic.phpt b/ext/dom/tests/DOMText_appendData_basic.phpt new file mode 100644 index 000000000..6a28a9ae4 --- /dev/null +++ b/ext/dom/tests/DOMText_appendData_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +DOMText::appendData basic functionality test +--CREDITS-- +Mike Sullivan +#TestFest 2008 (London) +--FILE-- +createElement('root'); +$document->appendChild($root); + +$text = $document->createElement('text'); +$root->appendChild($text); + +$textnode = $document->createTextNode(''); +$text->appendChild($textnode); +$textnode->appendData('data'); +echo "Text Length (one append): " . $textnode->length . "\n"; + +$textnode->appendData('><&"'); +echo "Text Length (two appends): " . $textnode->length . "\n"; + +echo "Text Content: " . $textnode->data . "\n"; + +echo "\n" . $document->saveXML(); + +?> +--EXPECT-- +Text Length (one append): 4 +Text Length (two appends): 8 +Text Content: data><&" + + +data><&" \ No newline at end of file diff --git a/ext/dom/tests/bug34276.phpt b/ext/dom/tests/bug34276.phpt index fd265e58e..6959d90a9 100644 --- a/ext/dom/tests/bug34276.phpt +++ b/ext/dom/tests/bug34276.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #34276 setAttributeNS and default namespace +Bug #34276 (setAttributeNS and default namespace) --SKIPIF-- --FILE-- diff --git a/ext/dom/tests/bug35342.phpt b/ext/dom/tests/bug35342.phpt index 3248c7339..f93c06233 100644 --- a/ext/dom/tests/bug35342.phpt +++ b/ext/dom/tests/bug35342.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #35342 isset(DOMNodeList->length) returns false +Bug #35342 (isset(DOMNodeList->length) returns false) --SKIPIF-- --FILE-- diff --git a/ext/dom/tests/bug42082.phpt b/ext/dom/tests/bug42082.phpt index 3e20a6b13..86f32dd8d 100644 --- a/ext/dom/tests/bug42082.phpt +++ b/ext/dom/tests/bug42082.phpt @@ -8,7 +8,7 @@ $nodes = $xpath->query('*'); var_dump($nodes); var_dump($nodes->length); $length = $nodes->length; -var_dump(empty($nodes->length), empty($lenght)); +var_dump(empty($nodes->length), empty($length)); $doc->loadXML(""); var_dump($doc->firstChild->nodeValue, empty($doc->firstChild->nodeValue), isset($doc->firstChild->nodeValue)); @@ -24,4 +24,4 @@ string(0) "" bool(true) bool(true) bool(false) -bool(false) +bool(false) \ No newline at end of file diff --git a/ext/dom/tests/bug45251.phpt b/ext/dom/tests/bug45251.phpt new file mode 100644 index 000000000..652e3b253 --- /dev/null +++ b/ext/dom/tests/bug45251.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #45251 (double free or corruption with setAttributeNode()) +--SKIPIF-- + +--FILE-- +loadXml(<< + + + +EOF +); + +$xpath = new DOMXPath($doc); + +$bbb = $xpath->query('bbb', $doc->documentElement)->item(0); + +$ccc = $doc->createElement('ccc'); +foreach ($bbb->attributes as $attr) +{ + $ccc->setAttributeNode($attr); +} + +echo $attr->parentNode->localName; + +?> +--EXPECT-- +ccc diff --git a/ext/dom/tests/bug46335.phpt b/ext/dom/tests/bug46335.phpt new file mode 100644 index 000000000..bea4ae9e7 --- /dev/null +++ b/ext/dom/tests/bug46335.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #46335 (DOMText::splitText doesn't handle multibyte characters). +--SKIPIF-- + +--FILE-- +createTextNode($textascii); +$dom->appendChild($node); + +print "Text: $node->textContent\n"; + +$matched = $node->splitText($start); +$matched->splitText($length); +print "splitText (ASCII): $matched->textContent\n"; + +$node = $dom->createTextNode($text); +$dom->appendChild($node); + +print "Text: $node->textContent\n"; + +$matched = $node->splitText($start); +$matched->splitText($length); +print "splitText (UTF-8): $matched->textContent\n"; +?> +--EXPECT-- +Text: This is an "example" of using DOM splitText +splitText (ASCII): DOM +Text: This is an ‘example’ of using DOM splitText +splitText (UTF-8): DOM diff --git a/ext/dom/tests/dom_comment_basic.phpt b/ext/dom/tests/dom_comment_basic.phpt new file mode 100644 index 000000000..cb029ed04 --- /dev/null +++ b/ext/dom/tests/dom_comment_basic.phpt @@ -0,0 +1,46 @@ +--TEST-- +DOM Comment : Basic Functionality +--SKIPIF-- + +--FILE-- + + + + +EOXML; + +$dom = new DOMDocument(); +$dom->loadXML($xml); +$root = $dom->documentElement; +var_dump($root->hasChildNodes()); +$children = $root->childNodes; + +for ($index = 0; $index < $children->length; $index++) { + echo "--- child $index ---\n"; + $current = $children->item($index); + var_dump($current); + var_dump($current->textContent); +} + +--EXPECTF-- +bool(true) +--- child 0 --- +object(DOMText)#%d (0) { +} +string(2) " + " +--- child 1 --- +object(DOMComment)#%d (0) { +} +string(14) " Hello World! " +--- child 2 --- +object(DOMText)#%d (0) { +} +string(1) " +" + diff --git a/ext/dom/tests/dom_comment_variation.phpt b/ext/dom/tests/dom_comment_variation.phpt new file mode 100644 index 000000000..bef0ef1b1 --- /dev/null +++ b/ext/dom/tests/dom_comment_variation.phpt @@ -0,0 +1,33 @@ +--TEST-- +DOM Comment : Variation +--SKIPIF-- + +--FILE-- + +EOXML; + +$dom = new DOMDocument(); +$dom->loadXML($xml); +$root = $dom->documentElement; +var_dump($root->hasChildNodes()); +$children = $root->childNodes; + +for ($index = 0; $index < $children->length; $index++) { + echo "--- child $index ---\n"; + $current = $children->item($index); + var_dump($current); + var_dump($current->textContent); +} + +--EXPECTF-- +bool(true) +--- child 0 --- +object(DOMComment)#%d (0) { +} +string(14) " Hello World! " + diff --git a/ext/dom/text.c b/ext/dom/text.c index 82f871d4e..b0acfa014 100644 --- a/ext/dom/text.c +++ b/ext/dom/text.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: text.c,v 1.23.2.1.2.6 2008/02/04 15:23:11 sebastian Exp $ */ +/* $Id: text.c,v 1.23.2.1.2.9 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -91,7 +91,7 @@ PHP_METHOD(domtext, __construct) intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern != NULL) { - oldnode = (xmlNodePtr)intern->ptr; + oldnode = dom_object_get_node(intern); if (oldnode != NULL) { php_libxml_node_free_resource(oldnode TSRMLS_CC); } @@ -172,19 +172,19 @@ PHP_FUNCTION(dom_text_split_text) if (cur == NULL) { RETURN_FALSE; } - length = xmlStrlen(cur); + length = xmlUTF8Strlen(cur); if (offset > length || offset < 0) { xmlFree(cur); RETURN_FALSE; } - first = xmlStrndup(cur, offset); - second = xmlStrdup(cur + offset); + first = xmlUTF8Strndup(cur, offset); + second = xmlUTF8Strsub(cur, offset, length - offset); xmlFree(cur); - xmlNodeSetContentLen(node, first, offset); + xmlNodeSetContent(node, first); nnode = xmlNewDocText(node->doc, second); xmlFree(first); diff --git a/ext/dom/typeinfo.c b/ext/dom/typeinfo.c index 0dd169329..8753be925 100644 --- a/ext/dom/typeinfo.c +++ b/ext/dom/typeinfo.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: typeinfo.c,v 1.6.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: typeinfo.c,v 1.6.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/userdatahandler.c b/ext/dom/userdatahandler.c index 3a43fd6cb..a2655c743 100644 --- a/ext/dom/userdatahandler.c +++ b/ext/dom/userdatahandler.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: userdatahandler.c,v 1.6.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: userdatahandler.c,v 1.6.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h index a96861697..3578763a8 100644 --- a/ext/dom/xml_common.h +++ b/ext/dom/xml_common.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xml_common.h,v 1.23.2.1.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: xml_common.h,v 1.23.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef PHP_XML_COMMON_H #define PHP_XML_COMMON_H diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c index 9910e4e25..76561fef6 100644 --- a/ext/dom/xpath.c +++ b/ext/dom/xpath.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xpath.c,v 1.26.2.1.2.3 2008/01/29 15:55:29 sebastian Exp $ */ +/* $Id: xpath.c,v 1.26.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/exif/exif.c b/ext/exif/exif.c index c347f6b12..69ee59614 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: exif.c,v 1.173.2.5.2.25 2008/03/12 17:33:14 iliaa Exp $ */ +/* $Id: exif.c,v 1.173.2.5.2.27 2008/12/31 11:17:37 sebastian Exp $ */ /* ToDos * @@ -142,7 +142,7 @@ zend_function_entry exif_functions[] = { }; /* }}} */ -#define EXIF_VERSION "1.4 $Id: exif.c,v 1.173.2.5.2.25 2008/03/12 17:33:14 iliaa Exp $" +#define EXIF_VERSION "1.4 $Id: exif.c,v 1.173.2.5.2.27 2008/12/31 11:17:37 sebastian Exp $" /* {{{ PHP_MINFO_FUNCTION */ @@ -2862,11 +2862,9 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha /* 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) { - /* - // 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. - */ + /* 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 (value_ptr < dir_entry) { /* we can read this if offset_val > 0 */ @@ -2884,13 +2882,11 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha value_ptr = safe_emalloc(byte_count, 1, 0); outside = value_ptr; } else { - /* - // in most cases we only access a small range so - // it is faster to use a static buffer there - // BUT it offers also the possibility to have - // pointers read without the need to free them - // explicitley before returning. - */ + /* In most cases we only access a small range so + * it is faster to use a static buffer there + * BUT it offers also the possibility to have + * pointers read without the need to free them + * explicitley before returning. */ memset(&cbuf, 0, sizeof(cbuf)); value_ptr = cbuf; } diff --git a/ext/exif/php_exif.h b/ext/exif/php_exif.h index c020dfe3b..3939572b2 100644 --- a/ext/exif/php_exif.h +++ b/ext/exif/php_exif.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_exif.h,v 1.14.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_exif.h,v 1.14.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #if HAVE_EXIF extern zend_module_entry exif_module_entry; diff --git a/ext/exif/tests/exif007.phpt b/ext/exif/tests/exif007.phpt new file mode 100644 index 000000000..8e82fe5ab --- /dev/null +++ b/ext/exif/tests/exif007.phpt @@ -0,0 +1,39 @@ +--TEST-- +Check for exif_read_data, baseline JPEG with no IFD, EXIF, GPS or Interoperability data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(7) { + ["FileName"]=> + string(12) "image007.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(0) "" + ["COMPUTED"]=> + array(4) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + } +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif008.phpt b/ext/exif/tests/exif008.phpt new file mode 100644 index 000000000..01da06e01 --- /dev/null +++ b/ext/exif/tests/exif008.phpt @@ -0,0 +1,65 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(16) { + ["FileName"]=> + string(12) "image008.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(13) "ANY_TAG, IFD0" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["XResolution"]=> + string(4) "72/1" + ["YResolution"]=> + string(4) "72/1" + ["ResolutionUnit"]=> + int(2) + ["DateTime"]=> + string(19) "2008:06:19 01:47:53" + ["Artist"]=> + string(12) "Eric Stewart" + ["Copyright"]=> + string(12) "Eric Stewart" +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif009.phpt b/ext/exif/tests/exif009.phpt new file mode 100644 index 000000000..e2025e4f8 --- /dev/null +++ b/ext/exif/tests/exif009.phpt @@ -0,0 +1,65 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(16) { + ["FileName"]=> + string(12) "image009.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(13) "ANY_TAG, IFD0" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["XResolution"]=> + string(4) "72/1" + ["YResolution"]=> + string(4) "72/1" + ["ResolutionUnit"]=> + int(2) + ["DateTime"]=> + string(19) "2008:06:19 01:47:53" + ["Artist"]=> + string(12) "Eric Stewart" + ["Copyright"]=> + string(12) "Eric Stewart" +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif010.phpt b/ext/exif/tests/exif010.phpt new file mode 100644 index 000000000..45a2617b8 --- /dev/null +++ b/ext/exif/tests/exif010.phpt @@ -0,0 +1,91 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD and EXIF data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(28) { + ["FileName"]=> + string(12) "image010.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(19) "ANY_TAG, IFD0, EXIF" + ["COMPUTED"]=> + array(9) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["ApertureFNumber"]=> + string(5) "f/8.0" + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["XResolution"]=> + string(4) "72/1" + ["YResolution"]=> + string(4) "72/1" + ["ResolutionUnit"]=> + int(2) + ["DateTime"]=> + string(19) "2008:06:19 01:47:53" + ["Artist"]=> + string(12) "Eric Stewart" + ["Copyright"]=> + string(12) "Eric Stewart" + ["Exif_IFD_Pointer"]=> + int(246) + ["ExposureTime"]=> + string(5) "1/125" + ["FNumber"]=> + string(3) "8/1" + ["ISOSpeedRatings"]=> + int(80) + ["DateTimeOriginal"]=> + string(19) "2008:06:19 01:47:53" + ["DateTimeDigitized"]=> + string(19) "2008:06:19 01:47:53" + ["MeteringMode"]=> + int(5) + ["LightSource"]=> + int(4) + ["Flash"]=> + int(7) + ["FocalLength"]=> + string(4) "29/5" + ["ExifImageWidth"]=> + int(1) + ["ExifImageLength"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif011.phpt b/ext/exif/tests/exif011.phpt new file mode 100644 index 000000000..adaf24640 --- /dev/null +++ b/ext/exif/tests/exif011.phpt @@ -0,0 +1,91 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD and EXIF data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(28) { + ["FileName"]=> + string(12) "image011.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(19) "ANY_TAG, IFD0, EXIF" + ["COMPUTED"]=> + array(9) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["ApertureFNumber"]=> + string(5) "f/8.0" + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["XResolution"]=> + string(4) "72/1" + ["YResolution"]=> + string(4) "72/1" + ["ResolutionUnit"]=> + int(2) + ["DateTime"]=> + string(19) "2008:06:19 01:47:53" + ["Artist"]=> + string(12) "Eric Stewart" + ["Copyright"]=> + string(12) "Eric Stewart" + ["Exif_IFD_Pointer"]=> + int(246) + ["ExposureTime"]=> + string(5) "1/125" + ["FNumber"]=> + string(3) "8/1" + ["ISOSpeedRatings"]=> + int(80) + ["DateTimeOriginal"]=> + string(19) "2008:06:19 01:47:53" + ["DateTimeDigitized"]=> + string(19) "2008:06:19 01:47:53" + ["MeteringMode"]=> + int(5) + ["LightSource"]=> + int(4) + ["Flash"]=> + int(7) + ["FocalLength"]=> + string(4) "29/5" + ["ExifImageWidth"]=> + int(1) + ["ExifImageLength"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif012.phpt b/ext/exif/tests/exif012.phpt new file mode 100644 index 000000000..8e8b01aef Binary files /dev/null and b/ext/exif/tests/exif012.phpt differ diff --git a/ext/exif/tests/exif013.phpt b/ext/exif/tests/exif013.phpt new file mode 100644 index 000000000..88dc88175 Binary files /dev/null and b/ext/exif/tests/exif013.phpt differ diff --git a/ext/exif/tests/exif014.phpt b/ext/exif/tests/exif014.phpt new file mode 100644 index 000000000..4a4df12d9 Binary files /dev/null and b/ext/exif/tests/exif014.phpt differ diff --git a/ext/exif/tests/exif015.phpt b/ext/exif/tests/exif015.phpt new file mode 100644 index 000000000..c38ef4ee9 Binary files /dev/null and b/ext/exif/tests/exif015.phpt differ diff --git a/ext/exif/tests/exif016.phpt b/ext/exif/tests/exif016.phpt new file mode 100644 index 000000000..266801bf0 --- /dev/null +++ b/ext/exif/tests/exif016.phpt @@ -0,0 +1,1622 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(26) { + ["FileName"]=> + string(13) "image016.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(7) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(13) "ANY_TAG, IFD0" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(1870) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif017.phpt b/ext/exif/tests/exif017.phpt new file mode 100644 index 000000000..36c3965ee --- /dev/null +++ b/ext/exif/tests/exif017.phpt @@ -0,0 +1,1622 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(26) { + ["FileName"]=> + string(13) "image017.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(8) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(13) "ANY_TAG, IFD0" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(1870) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif018.phpt b/ext/exif/tests/exif018.phpt new file mode 100644 index 000000000..a4ca53cb9 --- /dev/null +++ b/ext/exif/tests/exif018.phpt @@ -0,0 +1,1646 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD and EXIF data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(37) { + ["FileName"]=> + string(13) "image018.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(7) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(19) "ANY_TAG, IFD0, EXIF" + ["COMPUTED"]=> + array(9) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["ApertureFNumber"]=> + string(5) "f/8.0" + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(2084) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["ExposureTime"]=> + string(5) "1/125" + ["FNumber"]=> + string(3) "8/1" + ["ISOSpeedRatings"]=> + int(80) + ["DateTimeOriginal"]=> + string(19) "2008:06:19 01:47:53" + ["DateTimeDigitized"]=> + string(19) "2008:06:19 01:47:53" + ["MeteringMode"]=> + int(5) + ["LightSource"]=> + int(4) + ["Flash"]=> + int(7) + ["FocalLength"]=> + string(4) "29/5" + ["ExifImageWidth"]=> + int(1) + ["ExifImageLength"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif020.phpt b/ext/exif/tests/exif020.phpt new file mode 100644 index 000000000..c6bb13c32 --- /dev/null +++ b/ext/exif/tests/exif020.phpt @@ -0,0 +1,1659 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD and GPS data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(34) { + ["FileName"]=> + string(13) "image020.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(7) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(18) "ANY_TAG, IFD0, GPS" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(2064) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["GPSVersion"]=> + string(4) "" + ["GPSLatitudeRef"]=> + string(1) "N" + ["GPSLatitude"]=> + array(3) { + [0]=> + string(4) "33/1" + [1]=> + string(4) "37/1" + [2]=> + string(3) "0/1" + } + ["GPSLongitudeRef"]=> + string(1) "W" + ["GPSLongitude"]=> + array(3) { + [0]=> + string(4) "84/1" + [1]=> + string(3) "7/1" + [2]=> + string(3) "0/1" + } + ["GPSAltitudeRef"]=> + string(1) "" + ["GPSAltitude"]=> + string(5) "295/1" + ["GPSTimeStamp"]=> + array(3) { + [0]=> + string(3) "1/1" + [1]=> + string(4) "47/1" + [2]=> + string(4) "53/1" + } +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif021.phpt b/ext/exif/tests/exif021.phpt new file mode 100644 index 000000000..2cf446b00 --- /dev/null +++ b/ext/exif/tests/exif021.phpt @@ -0,0 +1,1659 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD and GPS data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(34) { + ["FileName"]=> + string(13) "image021.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(8) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(18) "ANY_TAG, IFD0, GPS" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(2064) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["GPSVersion"]=> + string(4) "" + ["GPSLatitudeRef"]=> + string(1) "N" + ["GPSLatitude"]=> + array(3) { + [0]=> + string(4) "33/1" + [1]=> + string(4) "37/1" + [2]=> + string(3) "0/1" + } + ["GPSLongitudeRef"]=> + string(1) "W" + ["GPSLongitude"]=> + array(3) { + [0]=> + string(4) "84/1" + [1]=> + string(3) "7/1" + [2]=> + string(3) "0/1" + } + ["GPSAltitudeRef"]=> + string(1) "" + ["GPSAltitude"]=> + string(5) "295/1" + ["GPSTimeStamp"]=> + array(3) { + [0]=> + string(3) "1/1" + [1]=> + string(4) "47/1" + [2]=> + string(4) "53/1" + } +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif022.phpt b/ext/exif/tests/exif022.phpt new file mode 100644 index 000000000..f523d88bc --- /dev/null +++ b/ext/exif/tests/exif022.phpt @@ -0,0 +1,1683 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD, EXIF and GPS data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(45) { + ["FileName"]=> + string(13) "image022.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(7) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(24) "ANY_TAG, IFD0, EXIF, GPS" + ["COMPUTED"]=> + array(9) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["ApertureFNumber"]=> + string(5) "f/8.0" + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(2278) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["ExposureTime"]=> + string(5) "1/125" + ["FNumber"]=> + string(3) "8/1" + ["ISOSpeedRatings"]=> + int(80) + ["DateTimeOriginal"]=> + string(19) "2008:06:19 01:47:53" + ["DateTimeDigitized"]=> + string(19) "2008:06:19 01:47:53" + ["MeteringMode"]=> + int(5) + ["LightSource"]=> + int(4) + ["Flash"]=> + int(7) + ["FocalLength"]=> + string(4) "29/5" + ["ExifImageWidth"]=> + int(1) + ["ExifImageLength"]=> + int(1) + ["GPSVersion"]=> + string(4) "" + ["GPSLatitudeRef"]=> + string(1) "N" + ["GPSLatitude"]=> + array(3) { + [0]=> + string(4) "33/1" + [1]=> + string(4) "37/1" + [2]=> + string(3) "0/1" + } + ["GPSLongitudeRef"]=> + string(1) "W" + ["GPSLongitude"]=> + array(3) { + [0]=> + string(4) "84/1" + [1]=> + string(3) "7/1" + [2]=> + string(3) "0/1" + } + ["GPSAltitudeRef"]=> + string(1) "" + ["GPSAltitude"]=> + string(5) "295/1" + ["GPSTimeStamp"]=> + array(3) { + [0]=> + string(3) "1/1" + [1]=> + string(4) "47/1" + [2]=> + string(4) "53/1" + } +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif023.phpt b/ext/exif/tests/exif023.phpt new file mode 100644 index 000000000..5940d9714 --- /dev/null +++ b/ext/exif/tests/exif023.phpt @@ -0,0 +1,1683 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD, EXIF and GPS data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(45) { + ["FileName"]=> + string(13) "image023.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(8) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(24) "ANY_TAG, IFD0, EXIF, GPS" + ["COMPUTED"]=> + array(9) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["ApertureFNumber"]=> + string(5) "f/8.0" + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(2278) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["ExposureTime"]=> + string(5) "1/125" + ["FNumber"]=> + string(3) "8/1" + ["ISOSpeedRatings"]=> + int(80) + ["DateTimeOriginal"]=> + string(19) "2008:06:19 01:47:53" + ["DateTimeDigitized"]=> + string(19) "2008:06:19 01:47:53" + ["MeteringMode"]=> + int(5) + ["LightSource"]=> + int(4) + ["Flash"]=> + int(7) + ["FocalLength"]=> + string(4) "29/5" + ["ExifImageWidth"]=> + int(1) + ["ExifImageLength"]=> + int(1) + ["GPSVersion"]=> + string(4) "" + ["GPSLatitudeRef"]=> + string(1) "N" + ["GPSLatitude"]=> + array(3) { + [0]=> + string(4) "33/1" + [1]=> + string(4) "37/1" + [2]=> + string(3) "0/1" + } + ["GPSLongitudeRef"]=> + string(1) "W" + ["GPSLongitude"]=> + array(3) { + [0]=> + string(4) "84/1" + [1]=> + string(3) "7/1" + [2]=> + string(3) "0/1" + } + ["GPSAltitudeRef"]=> + string(1) "" + ["GPSAltitude"]=> + string(5) "295/1" + ["GPSTimeStamp"]=> + array(3) { + [0]=> + string(3) "1/1" + [1]=> + string(4) "47/1" + [2]=> + string(4) "53/1" + } +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif024.phpt b/ext/exif/tests/exif024.phpt new file mode 100644 index 000000000..4839d1cb3 --- /dev/null +++ b/ext/exif/tests/exif024.phpt @@ -0,0 +1,55 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD0, EXIF, INTEROP data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(14) { + ["FileName"]=> + string(12) "image024.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(28) "ANY_TAG, IFD0, EXIF, INTEROP" + ["COMPUTED"]=> + array(5) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + } + ["Exif_IFD_Pointer"]=> + int(26) + ["InteroperabilityOffset"]=> + int(44) + ["InterOperabilityIndex"]=> + string(3) "R98" + ["InterOperabilityVersion"]=> + string(4) "0100" + ["RelatedFileFormat"]=> + string(12) "image024.jpg" + ["RelatedImageWidth"]=> + int(1) + ["RelatedImageHeight"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif025.phpt b/ext/exif/tests/exif025.phpt new file mode 100644 index 000000000..683dc7e3e --- /dev/null +++ b/ext/exif/tests/exif025.phpt @@ -0,0 +1,55 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD0, EXIF, INTEROP data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(14) { + ["FileName"]=> + string(12) "image025.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(28) "ANY_TAG, IFD0, EXIF, INTEROP" + ["COMPUTED"]=> + array(5) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + } + ["Exif_IFD_Pointer"]=> + int(26) + ["InteroperabilityOffset"]=> + int(44) + ["InterOperabilityIndex"]=> + string(3) "R98" + ["InterOperabilityVersion"]=> + string(4) "0100" + ["RelatedFileFormat"]=> + string(12) "image025.jpg" + ["RelatedImageWidth"]=> + int(1) + ["RelatedImageHeight"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif026.phpt b/ext/exif/tests/exif026.phpt new file mode 100644 index 000000000..7de796801 --- /dev/null +++ b/ext/exif/tests/exif026.phpt @@ -0,0 +1,1632 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD0, EXIF, INTEROP data in Intel byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(31) { + ["FileName"]=> + string(13) "image026.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(7) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(28) "ANY_TAG, IFD0, EXIF, INTEROP" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(0) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(1980) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["InterOperabilityIndex"]=> + string(3) "R98" + ["InterOperabilityVersion"]=> + string(4) "0100" + ["RelatedFileFormat"]=> + string(13) "image026.tiff" + ["RelatedImageWidth"]=> + int(1) + ["RelatedImageHeight"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif027.phpt b/ext/exif/tests/exif027.phpt new file mode 100644 index 000000000..f527c37bf --- /dev/null +++ b/ext/exif/tests/exif027.phpt @@ -0,0 +1,1632 @@ +--TEST-- +Check for exif_read_data, TIFF with IFD0, EXIF, INTEROP data in Motorola byte-order. +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(31) { + ["FileName"]=> + string(13) "image027.tiff" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(8) + ["MimeType"]=> + string(10) "image/tiff" + ["SectionsFound"]=> + string(28) "ANY_TAG, IFD0, EXIF, INTEROP" + ["COMPUTED"]=> + array(8) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + ["Copyright"]=> + string(24) "Eric Stewart, Hex Editor" + ["Copyright.Photographer"]=> + string(12) "Eric Stewart" + ["Copyright.Editor"]=> + string(10) "Hex Editor" + } + ["ImageWidth"]=> + int(1) + ["ImageLength"]=> + int(1) + ["BitsPerSample"]=> + int(8) + ["Compression"]=> + int(5) + ["PhotometricInterpretation"]=> + int(3) + ["ImageDescription"]=> + string(15) "My description." + ["Make"]=> + string(11) "OpenShutter" + ["Model"]=> + string(8) "OS 1.0.0" + ["StripOffsets"]=> + int(1980) + ["SamplesPerPixel"]=> + int(1) + ["RowsPerStrip"]=> + int(8) + ["StripByteCounts"]=> + int(4) + ["XResolution"]=> + string(17) "381681664/2097152" + ["YResolution"]=> + string(17) "381681664/2097152" + ["PlanarConfiguration"]=> + int(1) + ["ResolutionUnit"]=> + int(2) + ["Artist"]=> + string(12) "Eric Stewart" + ["ColorMap"]=> + array(768) { + [0]=> + int(0) + [1]=> + int(65280) + [2]=> + int(32512) + [3]=> + int(49152) + [4]=> + int(99) + [5]=> + int(115) + [6]=> + int(116) + [7]=> + int(101) + [8]=> + int(119) + [9]=> + int(97) + [10]=> + int(114) + [11]=> + int(116) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(0) + [98]=> + int(0) + [99]=> + int(0) + [100]=> + int(0) + [101]=> + int(0) + [102]=> + int(0) + [103]=> + int(0) + [104]=> + int(0) + [105]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(0) + [110]=> + int(0) + [111]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(0) + [115]=> + int(0) + [116]=> + int(0) + [117]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(1) + [256]=> + int(0) + [257]=> + int(65280) + [258]=> + int(32512) + [259]=> + int(49152) + [260]=> + int(0) + [261]=> + int(0) + [262]=> + int(0) + [263]=> + int(0) + [264]=> + int(0) + [265]=> + int(0) + [266]=> + int(0) + [267]=> + int(0) + [268]=> + int(0) + [269]=> + int(0) + [270]=> + int(0) + [271]=> + int(0) + [272]=> + int(11945) + [273]=> + int(1914) + [274]=> + int(0) + [275]=> + int(24609) + [276]=> + int(1088) + [277]=> + int(960) + [278]=> + int(0) + [279]=> + int(0) + [280]=> + int(20000) + [281]=> + int(8414) + [282]=> + int(65436) + [283]=> + int(0) + [284]=> + int(47655) + [285]=> + int(8) + [286]=> + int(37936) + [287]=> + int(8406) + [288]=> + int(0) + [289]=> + int(0) + [290]=> + int(0) + [291]=> + int(0) + [292]=> + int(0) + [293]=> + int(0) + [294]=> + int(0) + [295]=> + int(0) + [296]=> + int(0) + [297]=> + int(64652) + [298]=> + int(50264) + [299]=> + int(0) + [300]=> + int(0) + [301]=> + int(64887) + [302]=> + int(50264) + [303]=> + int(0) + [304]=> + int(25714) + [305]=> + int(26220) + [306]=> + int(17235) + [307]=> + int(19777) + [308]=> + int(65535) + [309]=> + int(65535) + [310]=> + int(65535) + [311]=> + int(65535) + [312]=> + int(65535) + [313]=> + int(65535) + [314]=> + int(65535) + [315]=> + int(65535) + [316]=> + int(501) + [317]=> + int(0) + [318]=> + int(20) + [319]=> + int(0) + [320]=> + int(0) + [321]=> + int(0) + [322]=> + int(16877) + [323]=> + int(0) + [324]=> + int(3) + [325]=> + int(0) + [326]=> + int(0) + [327]=> + int(0) + [328]=> + int(0) + [329]=> + int(0) + [330]=> + int(0) + [331]=> + int(0) + [332]=> + int(65535) + [333]=> + int(65535) + [334]=> + int(65535) + [335]=> + int(65535) + [336]=> + int(65535) + [337]=> + int(65535) + [338]=> + int(65535) + [339]=> + int(65535) + [340]=> + int(0) + [341]=> + int(0) + [342]=> + int(52840) + [343]=> + int(2025) + [344]=> + int(16) + [345]=> + int(57377) + [346]=> + int(1024) + [347]=> + int(960) + [348]=> + int(0) + [349]=> + int(0) + [350]=> + int(27136) + [351]=> + int(8414) + [352]=> + int(65436) + [353]=> + int(0) + [354]=> + int(47655) + [355]=> + int(8) + [356]=> + int(62400) + [357]=> + int(8407) + [358]=> + int(0) + [359]=> + int(0) + [360]=> + int(0) + [361]=> + int(0) + [362]=> + int(0) + [363]=> + int(0) + [364]=> + int(0) + [365]=> + int(0) + [366]=> + int(0) + [367]=> + int(64857) + [368]=> + int(50264) + [369]=> + int(0) + [370]=> + int(0) + [371]=> + int(64892) + [372]=> + int(50264) + [373]=> + int(0) + [374]=> + int(25714) + [375]=> + int(26220) + [376]=> + int(17235) + [377]=> + int(19777) + [378]=> + int(65535) + [379]=> + int(65535) + [380]=> + int(65535) + [381]=> + int(65535) + [382]=> + int(65535) + [383]=> + int(65535) + [384]=> + int(65535) + [385]=> + int(65535) + [386]=> + int(501) + [387]=> + int(0) + [388]=> + int(20) + [389]=> + int(0) + [390]=> + int(0) + [391]=> + int(0) + [392]=> + int(16877) + [393]=> + int(0) + [394]=> + int(3) + [395]=> + int(0) + [396]=> + int(0) + [397]=> + int(0) + [398]=> + int(0) + [399]=> + int(0) + [400]=> + int(0) + [401]=> + int(0) + [402]=> + int(65535) + [403]=> + int(65535) + [404]=> + int(65535) + [405]=> + int(65535) + [406]=> + int(65535) + [407]=> + int(65535) + [408]=> + int(65535) + [409]=> + int(65535) + [410]=> + int(0) + [411]=> + int(0) + [412]=> + int(53440) + [413]=> + int(2025) + [414]=> + int(16) + [415]=> + int(57377) + [416]=> + int(1024) + [417]=> + int(960) + [418]=> + int(0) + [419]=> + int(0) + [420]=> + int(41120) + [421]=> + int(9024) + [422]=> + int(65436) + [423]=> + int(0) + [424]=> + int(47655) + [425]=> + int(8) + [426]=> + int(24480) + [427]=> + int(8404) + [428]=> + int(0) + [429]=> + int(0) + [430]=> + int(0) + [431]=> + int(0) + [432]=> + int(0) + [433]=> + int(0) + [434]=> + int(0) + [435]=> + int(0) + [436]=> + int(0) + [437]=> + int(21315) + [438]=> + int(50294) + [439]=> + int(0) + [440]=> + int(0) + [441]=> + int(53635) + [442]=> + int(50294) + [443]=> + int(0) + [444]=> + int(25714) + [445]=> + int(26220) + [446]=> + int(17235) + [447]=> + int(19777) + [448]=> + int(65535) + [449]=> + int(65535) + [450]=> + int(65535) + [451]=> + int(65535) + [452]=> + int(65535) + [453]=> + int(65535) + [454]=> + int(65535) + [455]=> + int(65535) + [456]=> + int(501) + [457]=> + int(0) + [458]=> + int(20) + [459]=> + int(0) + [460]=> + int(0) + [461]=> + int(0) + [462]=> + int(16877) + [463]=> + int(0) + [464]=> + int(3) + [465]=> + int(0) + [466]=> + int(0) + [467]=> + int(0) + [468]=> + int(0) + [469]=> + int(0) + [470]=> + int(0) + [471]=> + int(0) + [472]=> + int(65535) + [473]=> + int(65535) + [474]=> + int(65535) + [475]=> + int(65535) + [476]=> + int(65535) + [477]=> + int(65535) + [478]=> + int(65535) + [479]=> + int(65535) + [480]=> + int(0) + [481]=> + int(0) + [482]=> + int(54028) + [483]=> + int(2772) + [484]=> + int(16) + [485]=> + int(57377) + [486]=> + int(1024) + [487]=> + int(960) + [488]=> + int(0) + [489]=> + int(0) + [490]=> + int(42384) + [491]=> + int(8408) + [492]=> + int(65436) + [493]=> + int(0) + [494]=> + int(47655) + [495]=> + int(8) + [496]=> + int(1136) + [497]=> + int(8348) + [498]=> + int(0) + [499]=> + int(0) + [500]=> + int(0) + [501]=> + int(0) + [502]=> + int(0) + [503]=> + int(0) + [504]=> + int(0) + [505]=> + int(0) + [506]=> + int(0) + [507]=> + int(12326) + [508]=> + int(50261) + [509]=> + int(0) + [510]=> + int(0) + [511]=> + int(12326) + [512]=> + int(0) + [513]=> + int(65280) + [514]=> + int(32512) + [515]=> + int(49152) + [516]=> + int(0) + [517]=> + int(0) + [518]=> + int(22663) + [519]=> + int(2) + [520]=> + int(0) + [521]=> + int(0) + [522]=> + int(24576) + [523]=> + int(2) + [524]=> + int(0) + [525]=> + int(0) + [526]=> + int(501) + [527]=> + int(0) + [528]=> + int(20) + [529]=> + int(0) + [530]=> + int(0) + [531]=> + int(0) + [532]=> + int(33188) + [533]=> + int(0) + [534]=> + int(0) + [535]=> + int(0) + [536]=> + int(0) + [537]=> + int(0) + [538]=> + int(0) + [539]=> + int(0) + [540]=> + int(0) + [541]=> + int(0) + [542]=> + int(0) + [543]=> + int(0) + [544]=> + int(0) + [545]=> + int(0) + [546]=> + int(0) + [547]=> + int(0) + [548]=> + int(0) + [549]=> + int(0) + [550]=> + int(0) + [551]=> + int(0) + [552]=> + int(51766) + [553]=> + int(1946) + [554]=> + int(0) + [555]=> + int(24609) + [556]=> + int(1088) + [557]=> + int(960) + [558]=> + int(0) + [559]=> + int(0) + [560]=> + int(0) + [561]=> + int(0) + [562]=> + int(25116) + [563]=> + int(2012) + [564]=> + int(0) + [565]=> + int(0) + [566]=> + int(0) + [567]=> + int(0) + [568]=> + int(0) + [569]=> + int(0) + [570]=> + int(0) + [571]=> + int(0) + [572]=> + int(0) + [573]=> + int(0) + [574]=> + int(0) + [575]=> + int(0) + [576]=> + int(0) + [577]=> + int(0) + [578]=> + int(0) + [579]=> + int(0) + [580]=> + int(0) + [581]=> + int(0) + [582]=> + int(0) + [583]=> + int(0) + [584]=> + int(0) + [585]=> + int(0) + [586]=> + int(0) + [587]=> + int(0) + [588]=> + int(0) + [589]=> + int(0) + [590]=> + int(0) + [591]=> + int(0) + [592]=> + int(0) + [593]=> + int(0) + [594]=> + int(0) + [595]=> + int(0) + [596]=> + int(0) + [597]=> + int(0) + [598]=> + int(0) + [599]=> + int(0) + [600]=> + int(0) + [601]=> + int(0) + [602]=> + int(0) + [603]=> + int(0) + [604]=> + int(0) + [605]=> + int(0) + [606]=> + int(0) + [607]=> + int(0) + [608]=> + int(0) + [609]=> + int(0) + [610]=> + int(0) + [611]=> + int(0) + [612]=> + int(0) + [613]=> + int(0) + [614]=> + int(0) + [615]=> + int(0) + [616]=> + int(0) + [617]=> + int(0) + [618]=> + int(0) + [619]=> + int(0) + [620]=> + int(0) + [621]=> + int(0) + [622]=> + int(0) + [623]=> + int(0) + [624]=> + int(0) + [625]=> + int(0) + [626]=> + int(0) + [627]=> + int(0) + [628]=> + int(0) + [629]=> + int(0) + [630]=> + int(0) + [631]=> + int(0) + [632]=> + int(0) + [633]=> + int(0) + [634]=> + int(0) + [635]=> + int(0) + [636]=> + int(0) + [637]=> + int(0) + [638]=> + int(0) + [639]=> + int(0) + [640]=> + int(0) + [641]=> + int(0) + [642]=> + int(0) + [643]=> + int(0) + [644]=> + int(0) + [645]=> + int(0) + [646]=> + int(0) + [647]=> + int(0) + [648]=> + int(0) + [649]=> + int(0) + [650]=> + int(0) + [651]=> + int(0) + [652]=> + int(0) + [653]=> + int(0) + [654]=> + int(0) + [655]=> + int(0) + [656]=> + int(0) + [657]=> + int(0) + [658]=> + int(0) + [659]=> + int(0) + [660]=> + int(0) + [661]=> + int(0) + [662]=> + int(0) + [663]=> + int(0) + [664]=> + int(0) + [665]=> + int(0) + [666]=> + int(0) + [667]=> + int(0) + [668]=> + int(0) + [669]=> + int(0) + [670]=> + int(0) + [671]=> + int(0) + [672]=> + int(0) + [673]=> + int(0) + [674]=> + int(0) + [675]=> + int(0) + [676]=> + int(0) + [677]=> + int(0) + [678]=> + int(0) + [679]=> + int(0) + [680]=> + int(0) + [681]=> + int(0) + [682]=> + int(0) + [683]=> + int(0) + [684]=> + int(0) + [685]=> + int(0) + [686]=> + int(0) + [687]=> + int(0) + [688]=> + int(0) + [689]=> + int(0) + [690]=> + int(0) + [691]=> + int(0) + [692]=> + int(0) + [693]=> + int(0) + [694]=> + int(0) + [695]=> + int(0) + [696]=> + int(0) + [697]=> + int(0) + [698]=> + int(0) + [699]=> + int(0) + [700]=> + int(0) + [701]=> + int(0) + [702]=> + int(0) + [703]=> + int(0) + [704]=> + int(0) + [705]=> + int(0) + [706]=> + int(0) + [707]=> + int(0) + [708]=> + int(0) + [709]=> + int(0) + [710]=> + int(0) + [711]=> + int(0) + [712]=> + int(0) + [713]=> + int(0) + [714]=> + int(0) + [715]=> + int(0) + [716]=> + int(0) + [717]=> + int(0) + [718]=> + int(0) + [719]=> + int(0) + [720]=> + int(0) + [721]=> + int(0) + [722]=> + int(0) + [723]=> + int(0) + [724]=> + int(0) + [725]=> + int(0) + [726]=> + int(0) + [727]=> + int(0) + [728]=> + int(0) + [729]=> + int(0) + [730]=> + int(0) + [731]=> + int(0) + [732]=> + int(0) + [733]=> + int(0) + [734]=> + int(0) + [735]=> + int(0) + [736]=> + int(0) + [737]=> + int(0) + [738]=> + int(0) + [739]=> + int(0) + [740]=> + int(0) + [741]=> + int(0) + [742]=> + int(0) + [743]=> + int(0) + [744]=> + int(0) + [745]=> + int(0) + [746]=> + int(0) + [747]=> + int(0) + [748]=> + int(0) + [749]=> + int(0) + [750]=> + int(0) + [751]=> + int(0) + [752]=> + int(0) + [753]=> + int(0) + [754]=> + int(0) + [755]=> + int(0) + [756]=> + int(0) + [757]=> + int(0) + [758]=> + int(0) + [759]=> + int(0) + [760]=> + int(0) + [761]=> + int(0) + [762]=> + int(0) + [763]=> + int(0) + [764]=> + int(0) + [765]=> + int(0) + [766]=> + int(0) + [767]=> + int(0) + } + ["Copyright"]=> + string(12) "Eric Stewart" + ["InterOperabilityIndex"]=> + string(3) "R98" + ["InterOperabilityVersion"]=> + string(4) "0100" + ["RelatedFileFormat"]=> + string(13) "image027.tiff" + ["RelatedImageWidth"]=> + int(1) + ["RelatedImageHeight"]=> + int(1) +} +--CREDIT-- +Eric Stewart diff --git a/ext/exif/tests/exif_imagetype_basic.phpt b/ext/exif/tests/exif_imagetype_basic.phpt new file mode 100644 index 000000000..1248d39ad --- /dev/null +++ b/ext/exif/tests/exif_imagetype_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Check for exif_imagetype default behaviour +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +===Done=== +--EXPECT-- +*** Testing exif_imagetype() : basic functionality *** +int(2) +===Done=== \ No newline at end of file diff --git a/ext/exif/tests/exif_imagetype_error.phpt b/ext/exif/tests/exif_imagetype_error.phpt new file mode 100644 index 000000000..fac6e0b9b --- /dev/null +++ b/ext/exif/tests/exif_imagetype_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test exif_imagetype() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing exif_imagetype() : error conditions *** + +-- Testing exif_imagetype() function with no arguments -- + +Warning: Wrong parameter count for exif_imagetype() in %s on line %d +NULL + +-- Testing exif_imagetype() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for exif_imagetype() in %s on line %d +NULL + +-- Testing exif_imagetype() function with an unknown file -- + +Warning: exif_imagetype(%sfoo.jpg): failed to open stream: No such file or directory in %s on line %d +bool(false) +===Done=== diff --git a/ext/exif/tests/exif_imagetype_variation1.phpt b/ext/exif/tests/exif_imagetype_variation1.phpt new file mode 100644 index 000000000..09e8b5554 --- /dev/null +++ b/ext/exif/tests/exif_imagetype_variation1.phpt @@ -0,0 +1,224 @@ +--TEST-- +Test exif_imagetype() function : usage variations - different types for filename argument +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // empty string + "", + '', + + // undefined variable + $undefined_var, + + // unset variable + $unset_var, + + // objects + new sample(), + + // resource + $file_handle, + + NULL, + null +); + + +// loop through each element of the array and check the working of exif_imagetype() +// when $filename is supplied with different values + +echo "\n--- Testing exif_imagetype() by supplying different values for 'filename' argument ---\n"; +$counter = 1; +foreach($values as $filename) { + echo "-- Iteration $counter --\n"; + var_dump( exif_imagetype($filename) ); + $counter ++; +} + +// closing the file +fclose($file_handle); + +echo "Done\n"; +?> + +?> +===Done=== +--EXPECTF-- +*** Testing exif_imagetype() : different types for filename argument *** + +Notice: Undefined variable: undefined_var in %s on line %d + +Notice: Undefined variable: unset_var in %s on line %d + +--- Testing exif_imagetype() by supplying different values for 'filename' argument --- +-- Iteration 1 -- + +Warning: exif_imagetype(0): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 2 -- + +Warning: exif_imagetype(1): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: exif_imagetype(12345): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: exif_imagetype(-2345): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: exif_imagetype(10.5): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: exif_imagetype(-10.5): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: exif_imagetype(101234567000): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 8 -- + +Warning: exif_imagetype(1.07654321E-9): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 9 -- + +Warning: exif_imagetype(0.5): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d + +Warning: exif_imagetype(Array): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d + +Warning: exif_imagetype(Array): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d + +Warning: exif_imagetype(Array): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d + +Warning: exif_imagetype(Array): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d + +Warning: exif_imagetype(Array): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 15 -- + +Warning: exif_imagetype(1): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 16 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 17 -- + +Warning: exif_imagetype(1): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 18 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 19 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 20 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 21 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 22 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 23 -- + +Warning: exif_imagetype(obj'ct): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 24 -- + +Warning: exif_imagetype(Resource id #%d): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 25 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 26 -- + +Warning: exif_imagetype(): Filename cannot be empty in %s on line %d +bool(false) +Done + +?> +===Done=== diff --git a/ext/exif/tests/exif_read_exif_data_basic.phpt b/ext/exif/tests/exif_read_exif_data_basic.phpt new file mode 100644 index 000000000..435f13752 --- /dev/null +++ b/ext/exif/tests/exif_read_exif_data_basic.phpt @@ -0,0 +1,62 @@ +--TEST-- +Check for read_exif_data default behaviour +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing read_exif_data() : basic functionality *** +Array +( + [FileName] => test2.jpg + [FileDateTime] => %d + [FileSize] => 1240 + [FileType] => 2 + [MimeType] => image/jpeg + [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, COMMENT + [COMPUTED] => Array + ( + [html] => width="1" height="1" + [Height] => 1 + [Width] => 1 + [IsColor] => 1 + [ByteOrderMotorola] => 1 + [UserComment] => Exif test image. + [UserCommentEncoding] => ASCII + [Copyright] => Photo (c) M.Boerger, Edited by M.Boerger. + [Copyright.Photographer] => Photo (c) M.Boerger + [Copyright.Editor] => Edited by M.Boerger. + [Thumbnail.FileType] => 2 + [Thumbnail.MimeType] => image/jpeg + ) + + [Copyright] => Photo (c) M.Boerger + [UserComment] => ASCII + [THUMBNAIL] => Array + ( + [JPEGInterchangeFormat] => 134 + [JPEGInterchangeFormatLength] => 523 + ) + + [COMMENT] => Array + ( + [0] => Comment #1. + [1] => Comment #2. + [2] => Comment #3end + ) + +) +===Done=== \ No newline at end of file diff --git a/ext/exif/tests/exif_tagname_basic.phpt b/ext/exif/tests/exif_tagname_basic.phpt new file mode 100644 index 000000000..e33601197 --- /dev/null +++ b/ext/exif/tests/exif_tagname_basic.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test exif_tagname() function : basic functionality +--SKIPIF-- + +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +===Done=== +--EXPECT-- +*** Testing exif_tagname() : basic functionality *** +string(16) "ImageDescription" +string(4) "Make" +string(5) "Model" +===Done=== diff --git a/ext/exif/tests/exif_tagname_error.phpt b/ext/exif/tests/exif_tagname_error.phpt new file mode 100644 index 000000000..f74495adc --- /dev/null +++ b/ext/exif/tests/exif_tagname_error.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test exif_tagname() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing exif_tagname() : error conditions *** + +-- Testing exif_tagname() function with no arguments -- + +Warning: Wrong parameter count for exif_tagname() in %s on line %d +NULL + +-- Testing exif_tagname() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for exif_tagname() in %s on line %d +NULL +===Done=== diff --git a/ext/exif/tests/exif_tagname_variation1.phpt b/ext/exif/tests/exif_tagname_variation1.phpt new file mode 100644 index 000000000..cf1fcf2c6 --- /dev/null +++ b/ext/exif/tests/exif_tagname_variation1.phpt @@ -0,0 +1,164 @@ +--TEST-- +Test exif_tagname() function : usage variations - different types for index argument +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // empty string + "", + '', + + // undefined variable + $undefined_var, + + // unset variable + $unset_var, + + // objects + new sample(), + + // resource + $file_handle, + + NULL, + null +); + + +// loop through each element of the array and check the working of exif_tagname() +// when $index arugment is supplied with different values + +echo "\n--- Testing exif_tagname() by supplying different values for 'index' argument ---\n"; +$counter = 1; +foreach($values as $index) { + echo "-- Iteration $counter --\n"; + var_dump( exif_tagname($index) ); + $counter ++; +} + +// closing the file +fclose($file_handle); + +echo "Done\n"; +?> + +?> +===Done=== +--EXPECTF-- +*** Testing exif_tagname() : different types for index argument *** + +Notice: Undefined variable: undefined_var in %s on line %d + +Notice: Undefined variable: unset_var in %s on line %d + +--- Testing exif_tagname() by supplying different values for 'index' argument --- +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- +bool(false) +-- Iteration 4 -- +bool(false) +-- Iteration 5 -- +bool(false) +-- Iteration 6 -- +bool(false) +-- Iteration 7 -- +bool(false) +-- Iteration 8 -- +bool(false) +-- Iteration 9 -- +bool(false) +-- Iteration 10 -- +bool(false) +-- Iteration 11 -- +bool(false) +-- Iteration 12 -- +bool(false) +-- Iteration 13 -- +bool(false) +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- +bool(false) +-- Iteration 20 -- +bool(false) +-- Iteration 21 -- +bool(false) +-- Iteration 22 -- +bool(false) +-- Iteration 23 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) +-- Iteration 24 -- +%s +-- Iteration 25 -- +bool(false) +-- Iteration 26 -- +bool(false) +Done + +?> +===Done=== diff --git a/ext/exif/tests/image007.jpg b/ext/exif/tests/image007.jpg new file mode 100644 index 000000000..852654075 Binary files /dev/null and b/ext/exif/tests/image007.jpg differ diff --git a/ext/exif/tests/image008.jpg b/ext/exif/tests/image008.jpg new file mode 100644 index 000000000..3e8bfe451 Binary files /dev/null and b/ext/exif/tests/image008.jpg differ diff --git a/ext/exif/tests/image009.jpg b/ext/exif/tests/image009.jpg new file mode 100644 index 000000000..8803ddccd Binary files /dev/null and b/ext/exif/tests/image009.jpg differ diff --git a/ext/exif/tests/image010.jpg b/ext/exif/tests/image010.jpg new file mode 100644 index 000000000..31ed6d678 Binary files /dev/null and b/ext/exif/tests/image010.jpg differ diff --git a/ext/exif/tests/image011.jpg b/ext/exif/tests/image011.jpg new file mode 100644 index 000000000..fcd5783ec Binary files /dev/null and b/ext/exif/tests/image011.jpg differ diff --git a/ext/exif/tests/image012.jpg b/ext/exif/tests/image012.jpg new file mode 100644 index 000000000..dd25e0618 Binary files /dev/null and b/ext/exif/tests/image012.jpg differ diff --git a/ext/exif/tests/image013.jpg b/ext/exif/tests/image013.jpg new file mode 100644 index 000000000..93ded2666 Binary files /dev/null and b/ext/exif/tests/image013.jpg differ diff --git a/ext/exif/tests/image014.jpg b/ext/exif/tests/image014.jpg new file mode 100644 index 000000000..7657a0a4c Binary files /dev/null and b/ext/exif/tests/image014.jpg differ diff --git a/ext/exif/tests/image015.jpg b/ext/exif/tests/image015.jpg new file mode 100644 index 000000000..6f52dec4d Binary files /dev/null and b/ext/exif/tests/image015.jpg differ diff --git a/ext/exif/tests/image016.tiff b/ext/exif/tests/image016.tiff new file mode 100644 index 000000000..171211393 Binary files /dev/null and b/ext/exif/tests/image016.tiff differ diff --git a/ext/exif/tests/image017.tiff b/ext/exif/tests/image017.tiff new file mode 100644 index 000000000..89800d879 Binary files /dev/null and b/ext/exif/tests/image017.tiff differ diff --git a/ext/exif/tests/image018.tiff b/ext/exif/tests/image018.tiff new file mode 100644 index 000000000..6b4492f7c Binary files /dev/null and b/ext/exif/tests/image018.tiff differ diff --git a/ext/exif/tests/image020.tiff b/ext/exif/tests/image020.tiff new file mode 100644 index 000000000..87f187821 Binary files /dev/null and b/ext/exif/tests/image020.tiff differ diff --git a/ext/exif/tests/image021.tiff b/ext/exif/tests/image021.tiff new file mode 100644 index 000000000..190f30b93 Binary files /dev/null and b/ext/exif/tests/image021.tiff differ diff --git a/ext/exif/tests/image022.tiff b/ext/exif/tests/image022.tiff new file mode 100644 index 000000000..88f437334 Binary files /dev/null and b/ext/exif/tests/image022.tiff differ diff --git a/ext/exif/tests/image023.tiff b/ext/exif/tests/image023.tiff new file mode 100644 index 000000000..dc33f6ed9 Binary files /dev/null and b/ext/exif/tests/image023.tiff differ diff --git a/ext/exif/tests/image024.jpg b/ext/exif/tests/image024.jpg new file mode 100644 index 000000000..0b5a42e89 Binary files /dev/null and b/ext/exif/tests/image024.jpg differ diff --git a/ext/exif/tests/image025.jpg b/ext/exif/tests/image025.jpg new file mode 100644 index 000000000..a5c0e17c7 Binary files /dev/null and b/ext/exif/tests/image025.jpg differ diff --git a/ext/exif/tests/image026.tiff b/ext/exif/tests/image026.tiff new file mode 100644 index 000000000..8fdafc738 Binary files /dev/null and b/ext/exif/tests/image026.tiff differ diff --git a/ext/exif/tests/image027.tiff b/ext/exif/tests/image027.tiff new file mode 100644 index 000000000..7c3a37a90 Binary files /dev/null and b/ext/exif/tests/image027.tiff differ diff --git a/ext/fbsql/php_fbsql.c b/ext/fbsql/php_fbsql.c index e919f88f4..a1b65372c 100644 --- a/ext/fbsql/php_fbsql.c +++ b/ext/fbsql/php_fbsql.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fbsql.c,v 1.114.2.3.2.7 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_fbsql.c,v 1.114.2.3.2.8 2008/12/31 11:17:37 sebastian Exp $ */ /* TODO: * diff --git a/ext/fbsql/php_fbsql.h b/ext/fbsql/php_fbsql.h index a8c82ba43..2ae77325e 100644 --- a/ext/fbsql/php_fbsql.h +++ b/ext/fbsql/php_fbsql.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fbsql.h,v 1.31.2.1.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_fbsql.h,v 1.31.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #define HAVE_FBSQL 1 diff --git a/ext/fdf/fdf.c b/ext/fdf/fdf.c index 91c4f91e7..e32b861a6 100644 --- a/ext/fdf/fdf.c +++ b/ext/fdf/fdf.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fdf.c,v 1.89.2.2.2.10 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: fdf.c,v 1.89.2.2.2.11 2008/12/31 11:17:37 sebastian Exp $ */ /* FdfTk lib 2.0 is a Complete C/C++ FDF Toolkit available from http://beta1.adobe.com/ada/acrosdk/forms.html. */ diff --git a/ext/fdf/php_fdf.h b/ext/fdf/php_fdf.h index c9161582b..50720075b 100644 --- a/ext/fdf/php_fdf.h +++ b/ext/fdf/php_fdf.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fdf.h,v 1.22.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_fdf.h,v 1.22.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef PHP_FDF_H #define PHP_FDF_H diff --git a/ext/filter/callback_filter.c b/ext/filter/callback_filter.c index 4405347d9..69d094275 100644 --- a/ext/filter/callback_filter.c +++ b/ext/filter/callback_filter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: callback_filter.c,v 1.9.2.5 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: callback_filter.c,v 1.9.2.6 2008/12/31 11:17:37 sebastian Exp $ */ #include "php_filter.h" diff --git a/ext/filter/filter.c b/ext/filter/filter.c index e26a747f9..497668cb3 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filter.c,v 1.52.2.42 2008/02/24 18:34:30 felipe Exp $ */ +/* $Id: filter.c,v 1.52.2.45 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -275,7 +275,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: 1.52.2.42 $"); + php_info_print_table_row( 2, "Revision", "$Revision: 1.52.2.45 $"); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); @@ -403,7 +403,7 @@ static unsigned int php_sapi_filter(int arg, char *var, char **val, unsigned int Z_STRLEN(new_var) = val_len; Z_TYPE(new_var) = IS_STRING; - if (!(IF_G(default_filter) == FILTER_UNSAFE_RAW)) { + if (IF_G(default_filter) != FILTER_UNSAFE_RAW) { zval *tmp_new_var = &new_var; Z_STRVAL(new_var) = estrndup(*val, val_len); INIT_PZVAL(tmp_new_var); diff --git a/ext/filter/filter_private.h b/ext/filter/filter_private.h index e8e8fcf3a..fae3cade7 100644 --- a/ext/filter/filter_private.h +++ b/ext/filter/filter_private.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filter_private.h,v 1.12.2.10 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: filter_private.h,v 1.12.2.11 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef FILTER_PRIVATE_H #define FILTER_PRIVATE_H diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 103d5a51e..1d56eda9b 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: logical_filters.c,v 1.1.2.24 2008/03/18 23:32:42 iliaa Exp $ */ +/* $Id: logical_filters.c,v 1.1.2.28 2009/02/02 23:51:58 iliaa Exp $ */ #include "php_filter.h" #include "filter_private.h" @@ -469,7 +469,7 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ { /* From http://cvs.php.net/co.php/pear/HTML_QuickForm/QuickForm/Rule/Email.php?r=1.4 */ - const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?\\.)+[A-Za-z\\-]+))$/D"; + const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?\\.?)+[A-Za-z\\-]*))$/D"; pcre *re = NULL; pcre_extra *pcre_extra = NULL; @@ -526,9 +526,10 @@ static int _php_filter_validate_ipv6(char *str, int str_len TSRMLS_DC) /* {{{ */ int compressed = 0; int blocks = 8; int n; - char *ipv4; + char *ipv4 = NULL; char *end; int ip4elm[4]; + char *s = str; if (!memchr(str, ':', str_len)) { return 0; @@ -551,23 +552,29 @@ static int _php_filter_validate_ipv6(char *str, int str_len TSRMLS_DC) /* {{{ */ blocks = 6; } - end = str + str_len; + end = ipv4 ? ipv4 : str + str_len; + while (str < end) { if (*str == ':') { if (--blocks == 0) { + if ((str+1) == end && ipv4) { + return 1; + } return 0; } if (++str >= end) { - return 0; + return (ipv4 && ipv4 == str && blocks == 3) || 0; } if (*str == ':') { if (compressed || --blocks == 0) { - return 0; + return ipv4 != NULL; } - if (++str == end) { + if (++str == end || (ipv4 && ipv4 == str)) { return 1; } compressed = 1; + } else if ((str - 1) == s) { + return 0; } } n = 0; diff --git a/ext/filter/php_filter.h b/ext/filter/php_filter.h index a1dd54a3e..3fd2ef50a 100644 --- a/ext/filter/php_filter.h +++ b/ext/filter/php_filter.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_filter.h,v 1.10.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_filter.h,v 1.10.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef PHP_FILTER_H #define PHP_FILTER_H diff --git a/ext/filter/sanitizing_filters.c b/ext/filter/sanitizing_filters.c index 132ae86f7..59b950056 100644 --- a/ext/filter/sanitizing_filters.c +++ b/ext/filter/sanitizing_filters.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sanitizing_filters.c,v 1.11.2.10 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: sanitizing_filters.c,v 1.11.2.11 2008/12/31 11:17:37 sebastian Exp $ */ #include "php_filter.h" #include "filter_private.h" diff --git a/ext/filter/tests/016.phpt b/ext/filter/tests/016.phpt index e013c550a..d7e33b800 100644 --- a/ext/filter/tests/016.phpt +++ b/ext/filter/tests/016.phpt @@ -13,7 +13,8 @@ $values = Array( 'test@com', '@', '[]()/@example.com', -'QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET', +'QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET', +'e.x.a.m.p.l.e.@example.com' ); foreach ($values as $value) { var_dump(filter_var($value, FILTER_VALIDATE_EMAIL)); @@ -27,8 +28,9 @@ string(17) "abuse@example.com" bool(false) bool(false) bool(false) -bool(false) +string(8) "test@com" bool(false) bool(false) string(57) "QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET" -Done +string(26) "e.x.a.m.p.l.e.@example.com" +Done \ No newline at end of file diff --git a/ext/filter/tests/bug42718-2.phpt b/ext/filter/tests/bug42718-2.phpt new file mode 100644 index 000000000..fd2a91d9d --- /dev/null +++ b/ext/filter/tests/bug42718-2.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #42718 - 2 (unsafe_raw filter not applied when configured as default filter) +--SKIPIF-- + +--INI-- +magic_quotes_gpc=1 +filter.default=unsafe_raw +filter.default_flags= +--GET-- +a=1%00 +--FILE-- + +--EXPECT-- +unsafe_raw + +1\0 diff --git a/ext/filter/tests/bug42718.phpt b/ext/filter/tests/bug42718.phpt new file mode 100644 index 000000000..61245ee81 --- /dev/null +++ b/ext/filter/tests/bug42718.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #42718 (unsafe_raw filter not applied when configured as default filter) +--SKIPIF-- + +--INI-- +magic_quotes_gpc=0 +filter.default=unsafe_raw +filter.default_flags=4 +--GET-- +a=1%00 +--FILE-- + +--XFAIL-- +--EXPECT-- +unsafe_raw +4 +bool(true) +1 diff --git a/ext/filter/tests/bug46973.phpt b/ext/filter/tests/bug46973.phpt new file mode 100644 index 000000000..c9c5ba430 --- /dev/null +++ b/ext/filter/tests/bug46973.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #46973 (IPv6 address filter rejects valid address) +--FILE-- + +--EXPECTF-- +string(28) "1fff::a88:85a3::172.31.128.1" +string(39) "3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344" +string(28) "1fff::a88:85a3::172.31.128.1" diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index cdc73b546..6d9b6b75b 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftp.c,v 1.112.2.4.2.10 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: ftp.c,v 1.112.2.4.2.11 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/ftp/ftp.h b/ext/ftp/ftp.h index d9f3fd197..44acde2bb 100644 --- a/ext/ftp/ftp.h +++ b/ext/ftp/ftp.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftp.h,v 1.43.2.1.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: ftp.h,v 1.43.2.1.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef FTP_H #define FTP_H diff --git a/ext/ftp/php_ftp.c b/ext/ftp/php_ftp.c index 69d947efa..8724d79fd 100644 --- a/ext/ftp/php_ftp.c +++ b/ext/ftp/php_ftp.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ftp.c,v 1.103.2.2.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_ftp.c,v 1.103.2.2.2.4 2008/12/31 11:17:37 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/ftp/php_ftp.h b/ext/ftp/php_ftp.h index 309f6780f..dfc3ae4b2 100644 --- a/ext/ftp/php_ftp.h +++ b/ext/ftp/php_ftp.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ftp.h,v 1.29.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_ftp.h,v 1.29.2.1.2.3 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef _INCLUDED_FTP_H #define _INCLUDED_FTP_H diff --git a/ext/ftp/tests/ftp_fget_basic.phpt b/ext/ftp/tests/ftp_fget_basic.phpt new file mode 100644 index 000000000..d736f8c45 --- /dev/null +++ b/ext/ftp/tests/ftp_fget_basic.phpt @@ -0,0 +1,43 @@ +--TEST-- +FTP ftp_fget file for both binary and ASCII transfer modes +--CREDITS-- +Nathaniel McHugh +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +bool(true) +For sale: baby shoes, never worn. +bool(true) +string(21) "BINARYFoo%00Bar%0D%0A" + +Warning: ftp_fget(): a warning: No such file or directory in %sftp_fget_basic.php on line %d diff --git a/ext/ftp/tests/ftp_get_basic.phpt b/ext/ftp/tests/ftp_get_basic.phpt new file mode 100644 index 000000000..23fd8d07f --- /dev/null +++ b/ext/ftp/tests/ftp_get_basic.phpt @@ -0,0 +1,40 @@ +--TEST-- +FTP ftp_get file for both binary and ASCII transfer modes +--CREDITS-- +Nathaniel McHugh +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +bool(true) +For sale: baby shoes, never worn. +bool(true) +string(21) "BINARYFoo%00Bar%0D%0A" + +Warning: ftp_get(): a warning: No such file or directory in %sftp_get_basic.php on line %d diff --git a/ext/ftp/tests/ftp_mdtm_basic.phpt b/ext/ftp/tests/ftp_mdtm_basic.phpt new file mode 100644 index 000000000..39aeb766f --- /dev/null +++ b/ext/ftp/tests/ftp_mdtm_basic.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test the File Modification Time as described in http://tools.ietf.org/html/rfc3659#section-3.1 +--CREDITS-- +Nathaniel McHugh +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +June 15 1998 10:00:45 000000 +June 15 1998 10:00:45 000000 +July 05 1998 13:23:16 000000 +int(-1) +October 05 1999 21:31:02 000000 +int(-1) diff --git a/ext/ftp/tests/server.inc b/ext/ftp/tests/server.inc index c101c7c70..76198c23d 100644 --- a/ext/ftp/tests/server.inc +++ b/ext/ftp/tests/server.inc @@ -136,7 +136,6 @@ $cwd = '/'; $num_bogus_cmds = 0; while($buf = fread($s, 4098)) { - if (!empty($bogus)) { fputs($s, "502 Command not implemented (".$num_bogus_cmds++.").\r\n"); @@ -244,7 +243,48 @@ while($buf = fread($s, 4098)) { } elseif (preg_match('/^USER /', $buf)) { user_auth($buf); - } else { + } elseif (preg_match('/^MDTM ([\w\h]+)/', $buf, $matches)) { + switch ($matches [1]){ + case "A": + fputs($s, "213 19980615100045.014\r\n"); + break; + case "B": + fputs($s, "213 19980615100045.014\r\n"); + break; + case "C": + fputs($s, "213 19980705132316\r\n"); + break; + case "19990929043300 File6": + fputs($s, "213 19991005213102\r\n"); + break; + default : + fputs($s, "550 No file named \"{$matches [1]}\"\r\n"); + break; + } + }elseif (preg_match('/^RETR ([\w\h]+)/', $buf, $matches)) { + if (!$fs = stream_socket_client("tcp://$host:$port")) { + fputs($s, "425 Can't open data connection\r\n"); + continue; + } + switch($matches[1]){ + case "a story": + fputs($s, "150 File status okay; about to open data connection.\r\n"); + fputs($fs, "For sale: baby shoes, never worn.\r\n"); + fputs($s, "226 Closing data Connection.\r\n"); + break; + case "binary data": + fputs($s, "150 File status okay; about to open data connection.\r\n"); + $transfer_type = $ascii? 'ASCII' : 'BINARY' ; + fputs($fs, $transfer_type."Foo\0Bar\r\n"); + fputs($s, "226 Closing data Connection.\r\n"); + break; + default: + fputs($s, "550 {$matches[1]}: No such file or directory \r\n"); + break; + } + fclose($fs); + } + else { fputs($s, "500 Syntax error, command unrecognized.\r\n"); dump_and_exit($buf); } diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 541ed86e9..af40a2bb0 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: gd.c,v 1.312.2.20.2.34 2008/04/04 17:39:52 felipe Exp $ */ +/* $Id: gd.c,v 1.312.2.20.2.38 2009/01/31 15:28:34 kalle Exp $ */ /* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center, Cold Spring Harbor Labs. */ @@ -966,6 +966,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_imagefilter, 0, 0, 2) ZEND_ARG_INFO(0, arg1) ZEND_ARG_INFO(0, arg2) ZEND_ARG_INFO(0, arg3) + ZEND_ARG_INFO(0, arg4) ZEND_END_ARG_INFO() static @@ -1636,6 +1637,22 @@ PHP_FUNCTION(imageloadfont) font->nchars = FLIPWORD(font->nchars); body_size = font->w * font->h * font->nchars; } + + if (overflow2(font->nchars, font->h)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header"); + efree(font); + php_stream_close(stream); + RETURN_FALSE; + } + if (overflow2(font->nchars * font->h, font->w )) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header"); + efree(font); + php_stream_close(stream); + RETURN_FALSE; + } + + + if (body_size != body_size_check) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font"); @@ -4548,7 +4565,7 @@ PHP_FUNCTION(imagepsslantfont) } /* }}} */ -/* {{{ proto array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space, int tightness, float angle, int antialias]) +/* {{{ proto array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias]]]]) Rasterize a string over an image */ PHP_FUNCTION(imagepstext) { diff --git a/ext/gd/gd_ctx.c b/ext/gd/gd_ctx.c index cd721b3f9..bf47911b8 100644 --- a/ext/gd/gd_ctx.c +++ b/ext/gd/gd_ctx.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: gd_ctx.c,v 1.22.2.5.2.4 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: gd_ctx.c,v 1.22.2.5.2.5 2008/12/31 11:17:37 sebastian Exp $ */ #include "php_gd.h" diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c index cfb50d4ef..a2677c11d 100644 --- a/ext/gd/libgd/gd.c +++ b/ext/gd/libgd/gd.c @@ -2620,6 +2620,7 @@ void gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, i green /= spixels; blue /= spixels; alpha /= spixels; + alpha += 0.5; } if ( alpha_sum != 0.0f) { if( contrib_sum != 0.0f) { @@ -3135,7 +3136,7 @@ gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignore return NULL; } - if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) { + if (!gdImageTrueColor(src) && (clrBack < 0 || clrBack>=gdImageColorsTotal(src))) { return NULL; } diff --git a/ext/gd/libgd/gd_png.c b/ext/gd/libgd/gd_png.c index a002a9521..7591dc0c6 100644 --- a/ext/gd/libgd/gd_png.c +++ b/ext/gd/libgd/gd_png.c @@ -689,7 +689,12 @@ void gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level, int basefilte */ a = gdTrueColorGetAlpha(thisPixel); /* Andrew Hull: >> 6, not >> 7! (gd 2.0.5) */ - *pOutputRow++ = 255 - ((a << 1) + (a >> 6)); + if (a == 127) { + *pOutputRow++ = 0; + } else { + *pOutputRow++ = 255 - ((a << 1) + (a >> 6)); + } + } } } diff --git a/ext/gd/libgd/xbm.c b/ext/gd/libgd/xbm.c index 6e7f473a9..23d36886f 100644 --- a/ext/gd/libgd/xbm.c +++ b/ext/gd/libgd/xbm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xbm.c,v 1.7.2.2.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: xbm.c,v 1.7.2.2.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include #include diff --git a/ext/gd/php_gd.h b/ext/gd/php_gd.h index 6c981f3ce..406252b6c 100644 --- a/ext/gd/php_gd.h +++ b/ext/gd/php_gd.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_gd.h,v 1.59.2.3.2.6 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_gd.h,v 1.59.2.3.2.7 2008/12/31 11:17:37 sebastian Exp $ */ #ifndef PHP_GD_H #define PHP_GD_H diff --git a/ext/gd/tests/gd_info_error.phpt b/ext/gd/tests/gd_info_error.phpt new file mode 100644 index 000000000..514530c21 --- /dev/null +++ b/ext/gd/tests/gd_info_error.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test gd_info() function : error conditions - with more than expected number of arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gd_info() : error conditions *** + +-- Testing gd_info() function with more than expected number of arguments -- + +Warning: Wrong parameter count for gd_info() in %s on line %d +NULL + +Warning: Wrong parameter count for gd_info() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/gd_info_variation1.phpt b/ext/gd/tests/gd_info_variation1.phpt new file mode 100644 index 000000000..5430cedc8 --- /dev/null +++ b/ext/gd/tests/gd_info_variation1.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test gd_info() function : variation - Checking all the values in returned array +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gd_info() : variation *** +array(%d) { + ["GD Version"]=> + string(%d) "%s" + ["FreeType Support"]=> + bool(%s)%A + ["T1Lib Support"]=> + bool(%s) + ["GIF Read Support"]=> + bool(%s) + ["GIF Create Support"]=> + bool(%s) + ["JPG Support"]=> + bool(%s) + ["PNG Support"]=> + bool(%s) + ["WBMP Support"]=> + bool(%s) + ["XPM Support"]=> + bool(%s) + ["XBM Support"]=> + bool(%s) + ["JIS-mapped Japanese Font Support"]=> + bool(%s) +} +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/image_type_to_mime_type_error.phpt b/ext/gd/tests/image_type_to_mime_type_error.phpt new file mode 100644 index 000000000..5ecdce77c --- /dev/null +++ b/ext/gd/tests/image_type_to_mime_type_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test image_type_to_mime_type() function : error conditions - Pass incorrect number of arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing image_type_to_mime_type() : error conditions *** + +-- Testing image_type_to_mime_type() function with Zero arguments -- + +Warning: Wrong parameter count for image_type_to_mime_type() in %s on line %d +bool(false) + +-- Testing image_type_to_mime_type() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for image_type_to_mime_type() in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/image_type_to_mime_type_variation1.phpt b/ext/gd/tests/image_type_to_mime_type_variation1.phpt new file mode 100644 index 000000000..1747524d7 --- /dev/null +++ b/ext/gd/tests/image_type_to_mime_type_variation1.phpt @@ -0,0 +1,138 @@ +--TEST-- +Test image_type_to_mime_type() function : usage variations - Pass different data types as imagetype +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new MyClass(), + + // undefined data + @$undefined_var, + + // unset data + @$unset_var, +); + +// loop through each element of the array for imagetype +$iterator = 1; +foreach($values as $value) { + echo "\n-- Iteration $iterator --\n"; + var_dump( image_type_to_mime_type($value) ); + $iterator++; +}; +?> +===DONE=== +--EXPECTF-- +*** Testing image_type_to_mime_type() : usage variations *** + +-- Iteration 1 -- +string(24) "application/octet-stream" + +-- Iteration 2 -- +string(24) "application/octet-stream" + +-- Iteration 3 -- +string(24) "application/octet-stream" + +-- Iteration 4 -- +string(24) "application/octet-stream" + +-- Iteration 5 -- +string(24) "application/octet-stream" + +-- Iteration 6 -- +string(24) "application/octet-stream" + +-- Iteration 7 -- +string(9) "image/gif" + +-- Iteration 8 -- +string(24) "application/octet-stream" + +-- Iteration 9 -- +string(24) "application/octet-stream" + +-- Iteration 10 -- +string(9) "image/gif" + +-- Iteration 11 -- +string(24) "application/octet-stream" + +-- Iteration 12 -- +string(9) "image/gif" + +-- Iteration 13 -- +string(24) "application/octet-stream" + +-- Iteration 14 -- +string(24) "application/octet-stream" + +-- Iteration 15 -- +string(24) "application/octet-stream" + +-- Iteration 16 -- +string(24) "application/octet-stream" + +-- Iteration 17 -- +string(24) "application/octet-stream" + +-- Iteration 18 -- +string(9) "image/gif" + +-- Iteration 19 -- +string(24) "application/octet-stream" + +-- Iteration 20 -- +string(24) "application/octet-stream" +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/image_type_to_mime_type_variation2.phpt b/ext/gd/tests/image_type_to_mime_type_variation2.phpt new file mode 100644 index 000000000..141bc576f --- /dev/null +++ b/ext/gd/tests/image_type_to_mime_type_variation2.phpt @@ -0,0 +1,80 @@ +--TEST-- +Test image_type_to_mime_type() function : usage variations - Pass decimal, octal, and hexadecimal values as imagetype +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing image_type_to_mime_type() : usage variations *** + +-- Iteration 1 -- +string(24) "application/octet-stream" + +-- Iteration 2 -- +string(9) "image/gif" + +-- Iteration 3 -- +string(24) "application/octet-stream" + +-- Iteration 4 -- +string(24) "application/octet-stream" + +-- Iteration 5 -- +string(10) "image/jpeg" + +-- Iteration 6 -- +string(10) "image/tiff" + +-- Iteration 7 -- +string(24) "application/octet-stream" + +-- Iteration 8 -- +string(24) "application/octet-stream" + +-- Iteration 9 -- +string(24) "application/octet-stream" + +-- Iteration 10 -- +string(9) "image/gif" + +-- Iteration 11 -- +string(24) "application/octet-stream" + +-- Iteration 12 -- +string(24) "application/octet-stream" +===DONE=== diff --git a/ext/gd/tests/image_type_to_mime_type_variation3.phpt b/ext/gd/tests/image_type_to_mime_type_variation3.phpt new file mode 100644 index 000000000..483890406 --- /dev/null +++ b/ext/gd/tests/image_type_to_mime_type_variation3.phpt @@ -0,0 +1,76 @@ +--TEST-- +Test image_type_to_mime_type() function : usage variations - Pass equivalent imagetype constant integer values +--FILE-- + +===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\(9\) "image\/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\) "application\/octet-stream" +===DONE=== diff --git a/ext/gd/tests/image_type_to_mime_type_variation4.phpt b/ext/gd/tests/image_type_to_mime_type_variation4.phpt new file mode 100644 index 000000000..90ae17b96 --- /dev/null +++ b/ext/gd/tests/image_type_to_mime_type_variation4.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test image_type_to_mime_type() function : usage variations - Passing IMAGETYPE_ICO and IMAGETYPE_SWC +--FILE-- + +===DONE=== +--EXPECTREGEX-- +\*\*\* Testing image_type_to_mime_type\(\) : usage variations \*\*\* +string\(24\) "application\/octet-stream" +string\(2[49]\) "application\/(x-shockwave-flash|octet-stream)" +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/imagecolorallocate_basic.phpt b/ext/gd/tests/imagecolorallocate_basic.phpt new file mode 100644 index 000000000..25b282148 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test imagecolorallocate() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : basic functionality *** +int(16711680) +int(65280) +int(255) +int(16777215) +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/imagecolorallocate_error.phpt b/ext/gd/tests/imagecolorallocate_error.phpt new file mode 100644 index 000000000..fa05e9147 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test imagecolorallocate() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : error conditions *** + +-- Testing imagecolorallocate() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for imagecolorallocate() in %s on line %d +NULL + +-- Testing imagecolorallocate() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for imagecolorallocate() in %s on line %d +NULL + +Warning: Wrong parameter count for imagecolorallocate() in %s on line %d +NULL +===DONE=== + + diff --git a/ext/gd/tests/imagecolorallocate_variation1.phpt b/ext/gd/tests/imagecolorallocate_variation1.phpt new file mode 100644 index 000000000..b08aecec2 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation1.phpt @@ -0,0 +1,267 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing different data types to first argument +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$values = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 10.1234567e10' => 10.1234567e10, + 'float 10.7654321E-10' => 10.7654321E-10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + "file resource" => $fp +); + +// loop through each element of the array for im +foreach($values as $key => $value) { + echo "\n-- $key --\n"; + var_dump( imagecolorallocate($value, $red, $green, $blue) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +-- int 0 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- int 1 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- int 12345 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- int -12345 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- float 10.5 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- float -10.5 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- float 10.1234567e10 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- float 10.7654321E-10 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- float .5 -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- empty array -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- int indexed array -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- associative array -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- nested arrays -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- uppercase NULL -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- lowercase null -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- lowercase true -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- lowercase false -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- uppercase TRUE -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- uppercase FALSE -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- empty string DQ -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- empty string SQ -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- string DQ -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- string SQ -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- mixed case string -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- heredoc -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- instance of classWithToString -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- instance of classWithoutToString -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- undefined var -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- unset var -- + +Warning: imagecolorallocate(): supplied argument is not a valid Image resource in %s on line %d +bool(false) + +-- file resource -- + +Warning: imagecolorallocate(): supplied resource is not a valid Image resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/gd/tests/imagecolorallocate_variation2.phpt b/ext/gd/tests/imagecolorallocate_variation2.phpt new file mode 100644 index 000000000..d8885f348 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation2.phpt @@ -0,0 +1,192 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing different data types to second argument +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$values = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 10.1234567e10' => 10.1234567e10, + 'float 10.7654321E-10' => 10.7654321E-10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + "file resource" => $fp +); +// loop through each element of the array for red +foreach($values as $key => $value) { + echo "\n--$key--\n"; + var_dump( imagecolorallocate($im, $value, $green, $blue) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +--float 10.5-- +int(657930) + +--float -10.5-- +bool(false) + +--float 10.1234567e10-- +bool(false) + +--float 10.7654321E-10-- +int(2570) + +--float .5-- +int(2570) + +--empty array-- +int(2570) + +--int indexed array-- +int(68106) + +--associative array-- +int(68106) + +--nested arrays-- +int(68106) + +--uppercase NULL-- +int(2570) + +--lowercase null-- +int(2570) + +--lowercase true-- +int(68106) + +--lowercase false-- +int(2570) + +--uppercase TRUE-- +int(68106) + +--uppercase FALSE-- +int(2570) + +--empty string DQ-- +int(2570) + +--empty string SQ-- +int(2570) + +--string DQ-- +int(2570) + +--string SQ-- +int(2570) + +--mixed case string-- +int(2570) + +--heredoc-- +int(2570) + +--instance of classWithToString-- + +Notice: Object of class classWithToString could not be converted to int in %s on line %d +int(68106) + +--instance of classWithoutToString-- + +Notice: Object of class classWithoutToString could not be converted to int in %s on line %d +int(68106) + +--undefined var-- +int(2570) + +--unset var-- +int(2570) + +--file resource-- +int(330250) +===DONE=== diff --git a/ext/gd/tests/imagecolorallocate_variation3.phpt b/ext/gd/tests/imagecolorallocate_variation3.phpt new file mode 100644 index 000000000..6bdf2596d --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation3.phpt @@ -0,0 +1,192 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing different data types to third argument +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$values = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 10.1234567e10' => 10.1234567e10, + 'float 10.7654321E-10' => 10.7654321E-10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + "file resource" => $fp +); +// loop through each element of the array for red +foreach($values as $key => $value) { + echo "\n--$key--\n"; + var_dump( imagecolorallocate($im, $red, $value, $blue) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +--float 10.5-- +int(657930) + +--float -10.5-- +int(652810) + +--float 10.1234567e10-- +int(217143306) + +--float 10.7654321E-10-- +int(655370) + +--float .5-- +int(655370) + +--empty array-- +int(655370) + +--int indexed array-- +int(655626) + +--associative array-- +int(655626) + +--nested arrays-- +int(655626) + +--uppercase NULL-- +int(655370) + +--lowercase null-- +int(655370) + +--lowercase true-- +int(655626) + +--lowercase false-- +int(655370) + +--uppercase TRUE-- +int(655626) + +--uppercase FALSE-- +int(655370) + +--empty string DQ-- +int(655370) + +--empty string SQ-- +int(655370) + +--string DQ-- +int(655370) + +--string SQ-- +int(655370) + +--mixed case string-- +int(655370) + +--heredoc-- +int(655370) + +--instance of classWithToString-- + +Notice: Object of class classWithToString could not be converted to int in %s on line %d +int(655626) + +--instance of classWithoutToString-- + +Notice: Object of class classWithoutToString could not be converted to int in %s on line %d +int(655626) + +--undefined var-- +int(655370) + +--unset var-- +int(655370) + +--file resource-- +int(656650) +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/imagecolorallocate_variation4.phpt b/ext/gd/tests/imagecolorallocate_variation4.phpt new file mode 100644 index 000000000..f170e4ad9 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation4.phpt @@ -0,0 +1,191 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing different data types to fourth argument +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$values = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 10.1234567e10' => 10.1234567e10, + 'float 10.7654321E-10' => 10.7654321E-10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + "file resource" => $fp +); +// loop through each element of the array for red +foreach($values as $key => $value) { + echo "\n--$key--\n"; + var_dump( imagecolorallocate($im, $red, $green, $value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +--float 10.5-- +int(657930) + +--float -10.5-- +int(657910) + +--float 10.1234567e10-- +bool(false) + +--float 10.7654321E-10-- +int(657920) + +--float .5-- +int(657920) + +--empty array-- +int(657920) + +--int indexed array-- +int(657921) + +--associative array-- +int(657921) + +--nested arrays-- +int(657921) + +--uppercase NULL-- +int(657920) + +--lowercase null-- +int(657920) + +--lowercase true-- +int(657921) + +--lowercase false-- +int(657920) + +--uppercase TRUE-- +int(657921) + +--uppercase FALSE-- +int(657920) + +--empty string DQ-- +int(657920) + +--empty string SQ-- +int(657920) + +--string DQ-- +int(657920) + +--string SQ-- +int(657920) + +--mixed case string-- +int(657920) + +--heredoc-- +int(657920) + +--instance of classWithToString-- + +Notice: Object of class classWithToString could not be converted to int in %s on line %d +int(657921) + +--instance of classWithoutToString-- + +Notice: Object of class classWithoutToString could not be converted to int in %s on line %d +int(657921) + +--undefined var-- +int(657920) + +--unset var-- +int(657920) + +--file resource-- +int(657925) +===DONE=== diff --git a/ext/gd/tests/imagecolorallocate_variation5.phpt b/ext/gd/tests/imagecolorallocate_variation5.phpt new file mode 100644 index 000000000..794abb3d7 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation5.phpt @@ -0,0 +1,90 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing octal and hexa-decimal values +--SKIPIF-- + +--FILE-- + 000, + "Octal 012" => 012, + "Octal -012" => -012, + "Octal 0377" => 0377, + + // hexa-decimal integer data + "Hexa-decimal 0x0" => 0x0, + "Hexa-decimal 0xA" => 0xA, + "Hexa-decimal -0xA" => -0xA, + "Hexa-decimal 0xFF" => 0xFF, +); + +// loop through each element of the array for blue +foreach($values as $key => $value) { + echo "\n--$key--\n"; + var_dump( imagecolorallocate($im, $value, $green, $blue) ); + var_dump( imagecolorallocate($im, $red, $value, $blue) ); + var_dump( imagecolorallocate($im, $red, $green, $value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +--Octal 000-- +int(2570) +int(655370) +int(657920) + +--Octal 012-- +int(657930) +int(657930) +int(657930) + +--Octal -012-- +bool(false) +int(652810) +int(657910) + +--Octal 0377-- +int(16714250) +int(720650) +int(658175) + +--Hexa-decimal 0x0-- +int(2570) +int(655370) +int(657920) + +--Hexa-decimal 0xA-- +int(657930) +int(657930) +int(657930) + +--Hexa-decimal -0xA-- +bool(false) +int(652810) +int(657910) + +--Hexa-decimal 0xFF-- +int(16714250) +int(720650) +int(658175) +===DONE=== diff --git a/ext/gd/tests/imagecolorallocate_variation6.phpt b/ext/gd/tests/imagecolorallocate_variation6.phpt new file mode 100644 index 000000000..bc939c979 --- /dev/null +++ b/ext/gd/tests/imagecolorallocate_variation6.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test imagecolorallocate() function : usage variations - passing RED, GREEN, BLUE values more than 255 +--SKIPIF-- + +--FILE-- + 256, + + // octal integer data + "Octal 0400" => 0400, + + // hexa-decimal integer data + "Hexa-decimal 0x100" => 0x100 +); + +// loop through each element of the array for blue +foreach($values as $key => $value) { + echo "\n--$key--\n"; + //Need to be created every time to get expected return value + $im_palette = imagecreate(200, 200); + $im_true_color = imagecreatetruecolor(200, 200); + var_dump( imagecolorallocate($im_palette, $value, $value, $value) ); + var_dump( imagecolorallocate($im_true_color, $value, $value, $value) ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imagecolorallocate() : usage variations *** + +--Decimal 256-- +int(0) +int(16843008) + +--Octal 0400-- +int(0) +int(16843008) + +--Hexa-decimal 0x100-- +int(0) +int(16843008) +===DONE=== diff --git a/ext/gd/tests/imagecolorstotal_basic.phpt b/ext/gd/tests/imagecolorstotal_basic.phpt new file mode 100644 index 000000000..472a10d86 --- /dev/null +++ b/ext/gd/tests/imagecolorstotal_basic.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test imagecolorstotal() function : basic functionality +--SKIPIF-- + +--FILE-- + + +===DONE=== +--EXPECTF-- +*** Testing imagecolorstotal() : basic functionality *** +Total colors in image: 128 +===DONE=== \ No newline at end of file diff --git a/ext/gd/tests/imagecolorstotal_error.phpt b/ext/gd/tests/imagecolorstotal_error.phpt new file mode 100644 index 000000000..995fa400e --- /dev/null +++ b/ext/gd/tests/imagecolorstotal_error.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test imagecolorstotal() function : error conditions - Pass incorrect number of arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imagecolorstotal() : error conditions *** + +-- Testing imagecolorstotal() function with Zero arguments -- + +Warning: Wrong parameter count for imagecolorstotal() in %s on line %d +NULL + +-- Testing imagecolorstotal() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for imagecolorstotal() in %s on line %d +NULL + +-- Testing imagecolorstotal() function with a invalid resource + +Warning: imagecolorstotal(): supplied resource is not a valid Image resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/gd/tests/imageloadfont_invalid.phpt b/ext/gd/tests/imageloadfont_invalid.phpt new file mode 100644 index 000000000..07bf150ac --- /dev/null +++ b/ext/gd/tests/imageloadfont_invalid.phpt @@ -0,0 +1,26 @@ +--TEST-- +imageloadfont() function crashes +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: imageloadfont(): gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully + in %simageloadfont_invalid.php on line %d + +Warning: imageloadfont(): Error reading font, invalid font header in %simageloadfont_invalid.php on line %d diff --git a/ext/gd/tests/imagerotate_overflow.phpt b/ext/gd/tests/imagerotate_overflow.phpt new file mode 100644 index 000000000..ade61d8f8 --- /dev/null +++ b/ext/gd/tests/imagerotate_overflow.phpt @@ -0,0 +1,32 @@ +--TEST-- +imagerotate() overflow with negative numbers +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(false) diff --git a/ext/gd/tests/php.gif b/ext/gd/tests/php.gif new file mode 100644 index 000000000..f352c7308 Binary files /dev/null and b/ext/gd/tests/php.gif differ diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c index 71bd68a7f..2bb47f763 100644 --- a/ext/gettext/gettext.c +++ b/ext/gettext/gettext.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: gettext.c,v 1.46.2.2.2.5 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: gettext.c,v 1.46.2.2.2.9 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -144,6 +144,21 @@ zend_module_entry php_gettext_module_entry = { ZEND_GET_MODULE(php_gettext) #endif +#define PHP_GETTEXT_MAX_DOMAIN_LENGTH 1024 +#define PHP_GETTEXT_MAX_MSGID_LENGTH 4096 + +#define PHP_GETTEXT_DOMAIN_LENGTH_CHECK \ + if (domain_len > PHP_GETTEXT_MAX_DOMAIN_LENGTH) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "domain passed too long"); \ + RETURN_FALSE; \ + } + +#define PHP_GETTEXT_LENGTH_CHECK(check_name, check_len) \ + if (check_len > PHP_GETTEXT_MAX_MSGID_LENGTH) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s passed too long", check_name); \ + RETURN_FALSE; \ + } + PHP_MINFO_FUNCTION(php_gettext) { php_info_print_table_start(); @@ -155,18 +170,17 @@ PHP_MINFO_FUNCTION(php_gettext) Set the textdomain to "domain". Returns the current domain */ PHP_NAMED_FUNCTION(zif_textdomain) { - zval **domain; - char *domain_name, *retval; - char *val; + char *domain, *domain_name, *retval; + int domain_len; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &domain) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &domain, &domain_len) == FAILURE) { + return; } - convert_to_string_ex(domain); - val = Z_STRVAL_PP(domain); - if (strcmp(val, "") && strcmp(val, "0")) { - domain_name = val; + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + + if (strcmp(domain, "") && strcmp(domain, "0")) { + domain_name = domain; } else { domain_name = NULL; } @@ -181,15 +195,15 @@ PHP_NAMED_FUNCTION(zif_textdomain) Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist */ PHP_NAMED_FUNCTION(zif_gettext) { - zval **msgid; - char *msgstr; + char *msgid, *msgstr; + int msgid_len; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &msgid) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &msgid, &msgid_len) == FAILURE) { + return; } - convert_to_string_ex(msgid); - msgstr = gettext(Z_STRVAL_PP(msgid)); + PHP_GETTEXT_LENGTH_CHECK("msgid", msgid_len) + msgstr = gettext(msgid); RETURN_STRING(msgstr, 1); } @@ -199,16 +213,17 @@ PHP_NAMED_FUNCTION(zif_gettext) Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist */ PHP_NAMED_FUNCTION(zif_dgettext) { - zval **domain_name, **msgid; - char *msgstr; + char *domain, *msgid, *msgstr; + int domain_len, msgid_len; - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &domain_name, &msgid) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &domain, &domain_len, &msgid, &msgid_len) == FAILURE) { + return; } - convert_to_string_ex(domain_name); - convert_to_string_ex(msgid); - msgstr = dgettext(Z_STRVAL_PP(domain_name), Z_STRVAL_PP(msgid)); + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + PHP_GETTEXT_LENGTH_CHECK("msgid", msgid_len) + + msgstr = dgettext(domain, msgid); RETURN_STRING(msgstr, 1); } @@ -218,17 +233,18 @@ PHP_NAMED_FUNCTION(zif_dgettext) Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist */ PHP_NAMED_FUNCTION(zif_dcgettext) { - zval **domain_name, **msgid, **category; - char *msgstr; + char *domain, *msgid, *msgstr; + int domain_len, msgid_len; + long category; - if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &domain_name, &msgid, &category) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl", &domain, &domain_len, &msgid, &msgid_len, &category) == FAILURE) { + return; } - convert_to_string_ex(domain_name); - convert_to_string_ex(msgid); - convert_to_long_ex(category); - msgstr = dcgettext(Z_STRVAL_PP(domain_name), Z_STRVAL_PP(msgid), Z_LVAL_PP(category)); + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + PHP_GETTEXT_LENGTH_CHECK("msgid", msgid_len) + + msgstr = dcgettext(domain, msgid, category); RETURN_STRING(msgstr, 1); } @@ -238,29 +254,30 @@ PHP_NAMED_FUNCTION(zif_dcgettext) Bind to the text domain domain_name, looking for translations in dir. Returns the current domain */ PHP_NAMED_FUNCTION(zif_bindtextdomain) { - zval **domain_name, **dir; + char *domain, *dir; + int domain_len, dir_len; char *retval, dir_name[MAXPATHLEN]; - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &domain_name, &dir) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &domain, &domain_len, &dir, &dir_len) == FAILURE) { + return; } - convert_to_string_ex(domain_name); - convert_to_string_ex(dir); - if (Z_STRVAL_PP(domain_name)[0] == '\0') { + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + + if (domain[0] == '\0') { php_error(E_WARNING, "The first parameter of bindtextdomain must not be empty"); RETURN_FALSE; } - - if (Z_STRVAL_PP(dir)[0] != '\0' && strcmp(Z_STRVAL_PP(dir), "0")) { - if (!VCWD_REALPATH(Z_STRVAL_PP(dir), dir_name)) { + + if (dir[0] != '\0' && strcmp(dir, "0")) { + if (!VCWD_REALPATH(dir, dir_name)) { RETURN_FALSE; } } else if (!VCWD_GETCWD(dir_name, MAXPATHLEN)) { RETURN_FALSE; } - retval = bindtextdomain(Z_STRVAL_PP(domain_name), dir_name); + retval = bindtextdomain(domain, dir_name); RETURN_STRING(retval, 1); } @@ -271,22 +288,20 @@ PHP_NAMED_FUNCTION(zif_bindtextdomain) Plural version of gettext() */ PHP_NAMED_FUNCTION(zif_ngettext) { - zval **msgid1, **msgid2, **count; - char *msgstr; + char *msgid1, *msgid2, *msgstr; + int msgid1_len, msgid2_len; + long count; - RETVAL_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl", &msgid1, &msgid1_len, &msgid2, &msgid2_len, &count) == FAILURE) { + return; + } - if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &msgid1, &msgid2, &count) == FAILURE) { - WRONG_PARAM_COUNT; - } else { - convert_to_string_ex(msgid1); - convert_to_string_ex(msgid2); - convert_to_long_ex(count); + PHP_GETTEXT_LENGTH_CHECK("msgid1", msgid1_len) + PHP_GETTEXT_LENGTH_CHECK("msgid2", msgid2_len) - msgstr = ngettext(Z_STRVAL_PP(msgid1), Z_STRVAL_PP(msgid2), Z_LVAL_PP(count)); - if (msgstr) { - RETVAL_STRING (msgstr, 1); - } + msgstr = ngettext(msgid1, msgid2, count); + if (msgstr) { + RETVAL_STRING(msgstr, 1); } } /* }}} */ @@ -297,24 +312,22 @@ PHP_NAMED_FUNCTION(zif_ngettext) Plural version of dgettext() */ PHP_NAMED_FUNCTION(zif_dngettext) { - zval **domain, **msgid1, **msgid2, **count; + char *domain, *msgid1, *msgid2, *msgstr = NULL; + int domain_len, msgid1_len, msgid2_len; + long count; - RETVAL_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssl", &domain, &domain_len, + &msgid1, &msgid1_len, &msgid2, &msgid2_len, &count) == FAILURE) { + return; + } - if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &domain, &msgid1, &msgid2, &count) == FAILURE) { - WRONG_PARAM_COUNT; - } else { - char *msgstr; - - convert_to_string_ex(domain); - convert_to_string_ex(msgid1); - convert_to_string_ex(msgid2); - convert_to_long_ex(count); - - msgstr = dngettext(Z_STRVAL_PP(domain), Z_STRVAL_PP(msgid1), Z_STRVAL_PP(msgid2), Z_LVAL_PP(count)); - if (msgstr) { - RETVAL_STRING(msgstr, 1); - } + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + PHP_GETTEXT_LENGTH_CHECK("msgid1", msgid1_len) + PHP_GETTEXT_LENGTH_CHECK("msgid2", msgid2_len) + + msgstr = dngettext(domain, msgid1, msgid2, count); + if (msgstr) { + RETVAL_STRING(msgstr, 1); } } /* }}} */ @@ -322,29 +335,28 @@ PHP_NAMED_FUNCTION(zif_dngettext) #if HAVE_DCNGETTEXT /* {{{ proto string dcngettext (string domain, string msgid1, string msgid2, int n, int category) - Plural version of dcgettext() */ + Plural version of dcgettext() */ PHP_NAMED_FUNCTION(zif_dcngettext) { - zval **domain, **msgid1, **msgid2, **count, **category; + char *domain, *msgid1, *msgid2, *msgstr = NULL; + int domain_len, msgid1_len, msgid2_len; + long count, category; RETVAL_FALSE; - if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &domain, &msgid1, &msgid2, &count, &category) == FAILURE) { - WRONG_PARAM_COUNT; - } else { - char* msgstr = NULL; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssll", &domain, &domain_len, + &msgid1, &msgid1_len, &msgid2, &msgid2_len, &count, &category) == FAILURE) { + return; + } - convert_to_string_ex(domain); - convert_to_string_ex(msgid1); - convert_to_string_ex(msgid2); - convert_to_long_ex(count); - convert_to_long_ex(category); + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + PHP_GETTEXT_LENGTH_CHECK("msgid1", msgid1_len) + PHP_GETTEXT_LENGTH_CHECK("msgid2", msgid2_len) - msgstr = dcngettext(Z_STRVAL_PP(domain), Z_STRVAL_PP(msgid1), Z_STRVAL_PP(msgid2), Z_LVAL_PP(count), Z_LVAL_PP(category)); + msgstr = dcngettext(domain, msgid1, msgid2, count, category); - if (msgstr) { - RETVAL_STRING(msgstr, 1); - } + if (msgstr) { + RETVAL_STRING(msgstr, 1); } } /* }}} */ @@ -356,22 +368,21 @@ PHP_NAMED_FUNCTION(zif_dcngettext) Specify the character encoding in which the messages from the DOMAIN message catalog will be returned. */ PHP_NAMED_FUNCTION(zif_bind_textdomain_codeset) { - zval **domain, **codeset; - char *retval; - - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &domain, &codeset) == FAILURE) { - WRONG_PARAM_COUNT; - } else { - convert_to_string_ex(domain); - convert_to_string_ex(codeset); - - retval = bind_textdomain_codeset(Z_STRVAL_PP(domain), Z_STRVAL_PP(codeset)); + char *domain, *codeset, *retval = NULL; + int domain_len, codeset_len; - if (!retval) { - RETURN_FALSE; - } - RETURN_STRING(retval, 1); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &domain, &domain_len, &codeset, &codeset_len) == FAILURE) { + return; } + + PHP_GETTEXT_DOMAIN_LENGTH_CHECK + + retval = bind_textdomain_codeset(domain, codeset); + + if (!retval) { + RETURN_FALSE; + } + RETURN_STRING(retval, 1); } /* }}} */ #endif diff --git a/ext/gettext/php_gettext.h b/ext/gettext/php_gettext.h index f75f53427..5f1ecafc3 100644 --- a/ext/gettext/php_gettext.h +++ b/ext/gettext/php_gettext.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_gettext.h,v 1.20.2.1.2.2 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: php_gettext.h,v 1.20.2.1.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #ifndef PHP_GETTEXT_H #define PHP_GETTEXT_H diff --git a/ext/gettext/tests/44938.phpt b/ext/gettext/tests/44938.phpt new file mode 100644 index 000000000..f2d594aa5 --- /dev/null +++ b/ext/gettext/tests/44938.phpt @@ -0,0 +1,85 @@ +--TEST-- +#44938: gettext functions crash with overlong strings +--SKIPIF-- + +==DONE== +--EXPECTF-- + +Warning: bindtextdomain(): domain passed too long in %s on line %d +bool(false) + +Warning: dngettext(): domain passed too long in %s on line %d +bool(false) + +Warning: dngettext(): msgid1 passed too long in %s on line %d +bool(false) + +Warning: dngettext(): msgid2 passed too long in %s on line %d +bool(false) + +Warning: gettext(): msgid passed too long in %s on line %d +bool(false) + +Warning: ngettext(): msgid1 passed too long in %s on line %d +bool(false) + +Warning: ngettext(): msgid2 passed too long in %s on line %d +bool(false) + +Warning: dcgettext(): domain passed too long in %s on line %d +bool(false) + +Warning: dcgettext(): msgid passed too long in %s on line %d +bool(false) + +Warning: dcngettext(): domain passed too long in %s on line %d +bool(false) + +Warning: dcngettext(): msgid1 passed too long in %s on line %d +bool(false) + +Warning: dcngettext(): msgid2 passed too long in %s on line %d +bool(false) + +Warning: dgettext(): domain passed too long in %s on line %d +bool(false) + +Warning: dgettext(): msgid passed too long in %s on line %d +bool(false) + +Warning: textdomain(): domain passed too long in %s on line %d +bool(false) +==DONE== diff --git a/ext/gettext/tests/dcngettext.phpt b/ext/gettext/tests/dcngettext.phpt index e5961eb1e..2b8e2b196 100644 --- a/ext/gettext/tests/dcngettext.phpt +++ b/ext/gettext/tests/dcngettext.phpt @@ -19,7 +19,7 @@ var_dump(dcngettext("","","",0,0)); echo "Done\n"; ?> --EXPECTF-- -Warning: Wrong parameter count for dcngettext() in %s on line %d +Warning: dcngettext() expects exactly 5 parameters, 4 given in %s on line %d bool(false) string(1) "1" string(4) "test" diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index 09f468d1b..406862eba 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/gmp/php_gmp.h b/ext/gmp/php_gmp.h index ff8c66625..73f9b2639 100644 --- a/ext/gmp/php_gmp.h +++ b/ext/gmp/php_gmp.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 8a5e2bf70..259f3781e 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash.c,v 1.18.2.5.2.8 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: hash.c,v 1.18.2.5.2.9 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/hash/hash_adler32.c b/ext/hash/hash_adler32.c index 9dc5dc4b2..8c4121b37 100644 --- a/ext/hash/hash_adler32.c +++ b/ext/hash/hash_adler32.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_adler32.c,v 1.3.2.4.2.3 2007/12/31 07:20:06 sebastian Exp $ */ +/* $Id: hash_adler32.c,v 1.3.2.4.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_adler32.h" diff --git a/ext/hash/hash_crc32.c b/ext/hash/hash_crc32.c index f13c5d45e..12be97349 100644 --- a/ext/hash/hash_crc32.c +++ b/ext/hash/hash_crc32.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_crc32.c,v 1.2.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_crc32.c,v 1.2.2.3.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_crc32.h" @@ -56,6 +56,16 @@ PHP_HASH_API void PHP_CRC32Final(unsigned char digest[4], PHP_CRC32_CTX *context context->state = 0; } +PHP_HASH_API void PHP_CRC32BFinal(unsigned char digest[4], PHP_CRC32_CTX *context) +{ + context->state=~context->state; + digest[0] = (unsigned char) ((context->state >> 24) & 0xff); + digest[1] = (unsigned char) ((context->state >> 16) & 0xff); + digest[2] = (unsigned char) ((context->state >> 8) & 0xff); + digest[3] = (unsigned char) (context->state & 0xff); + context->state = 0; +} + const php_hash_ops php_hash_crc32_ops = { (php_hash_init_func_t) PHP_CRC32Init, (php_hash_update_func_t) PHP_CRC32Update, @@ -68,7 +78,7 @@ const php_hash_ops php_hash_crc32_ops = { const php_hash_ops php_hash_crc32b_ops = { (php_hash_init_func_t) PHP_CRC32Init, (php_hash_update_func_t) PHP_CRC32BUpdate, - (php_hash_final_func_t) PHP_CRC32Final, + (php_hash_final_func_t) PHP_CRC32BFinal, 4, /* what to say here? */ 4, sizeof(PHP_CRC32_CTX) diff --git a/ext/hash/hash_gost.c b/ext/hash/hash_gost.c index c860c347c..2075c2230 100644 --- a/ext/hash/hash_gost.c +++ b/ext/hash/hash_gost.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_gost.c,v 1.2.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_gost.c,v 1.2.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_gost.h" diff --git a/ext/hash/hash_haval.c b/ext/hash/hash_haval.c index 04557f634..fcdcd9fb3 100644 --- a/ext/hash/hash_haval.c +++ b/ext/hash/hash_haval.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_haval.c,v 1.4.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_haval.c,v 1.4.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_haval.h" diff --git a/ext/hash/hash_md.c b/ext/hash/hash_md.c index 85347db26..a3dac8b6f 100644 --- a/ext/hash/hash_md.c +++ b/ext/hash/hash_md.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_md.c,v 1.6.2.4.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_md.c,v 1.6.2.4.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_md.h" diff --git a/ext/hash/hash_ripemd.c b/ext/hash/hash_ripemd.c index e656431ae..410586e58 100644 --- a/ext/hash/hash_ripemd.c +++ b/ext/hash/hash_ripemd.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_ripemd.c,v 1.5.2.3.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_ripemd.c,v 1.5.2.3.2.5 2008/12/31 11:17:38 sebastian Exp $ */ /* 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 9cc84ce8b..0c102adbf 100644 --- a/ext/hash/hash_salsa.c +++ b/ext/hash/hash_salsa.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_salsa.c,v 1.3.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_salsa.c,v 1.3.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_salsa.h" diff --git a/ext/hash/hash_sha.c b/ext/hash/hash_sha.c index 74aef1544..ce3acd253 100644 --- a/ext/hash/hash_sha.c +++ b/ext/hash/hash_sha.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_sha.c,v 1.10.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_sha.c,v 1.10.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_sha.h" diff --git a/ext/hash/hash_snefru.c b/ext/hash/hash_snefru.c index 412698502..2886ba872 100644 --- a/ext/hash/hash_snefru.c +++ b/ext/hash/hash_snefru.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_snefru.c,v 1.3.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_snefru.c,v 1.3.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_snefru.h" diff --git a/ext/hash/hash_tiger.c b/ext/hash/hash_tiger.c index 906ad5ab0..7d2232728 100644 --- a/ext/hash/hash_tiger.c +++ b/ext/hash/hash_tiger.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_tiger.c,v 1.4.2.4.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_tiger.c,v 1.4.2.4.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" #include "php_hash_tiger.h" diff --git a/ext/hash/hash_whirlpool.c b/ext/hash/hash_whirlpool.c index 8b6c7ed27..bb3202726 100644 --- a/ext/hash/hash_whirlpool.c +++ b/ext/hash/hash_whirlpool.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: hash_whirlpool.c,v 1.3.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: hash_whirlpool.c,v 1.3.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #include "php_hash.h" diff --git a/ext/hash/php_hash.h b/ext/hash/php_hash.h index 2c863f722..b58fdd302 100644 --- a/ext/hash/php_hash.h +++ b/ext/hash/php_hash.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash.h,v 1.13.2.7.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash.h,v 1.13.2.7.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #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 36f56de72..aecfd56a9 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_adler32.h,v 1.3.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_adler32.h,v 1.3.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 0a74fb884..95ee4cae3 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_crc32.h,v 1.3.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_crc32.h,v 1.3.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 ba9ad1b1b..213bf7b53 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_crc32_tables.h,v 1.2.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_crc32_tables.h,v 1.2.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ 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 a54286e36..7e7a716ff 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_gost.h,v 1.2.2.4.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_gost.h,v 1.2.2.4.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 8b8672a54..46ea0756a 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_haval.h,v 1.2.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_haval.h,v 1.2.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 adff1e7e4..ea498b328 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_md.h,v 1.2.2.4.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_md.h,v 1.2.2.4.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #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 18180e0e1..3b9c145f2 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_ripemd.h,v 1.2.2.3.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_ripemd.h,v 1.2.2.3.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #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 dad09c78a..12641f581 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_salsa.h,v 1.4.2.4.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_salsa.h,v 1.4.2.4.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 1fd952b23..276d9fe2f 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_sha.h,v 1.3.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_sha.h,v 1.3.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 bc99fda11..8f8f7fdd3 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_snefru.h,v 1.2.2.4.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_snefru.h,v 1.2.2.4.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 ed461a7df..ef4abb8b8 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_snefru_tables.h,v 1.3.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_snefru_tables.h,v 1.3.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ 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 338ead529..5fab89316 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_tiger.h,v 1.3.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_tiger.h,v 1.3.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 2fba9a4ff..d0703089d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_tiger_tables.h,v 1.2.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_tiger_tables.h,v 1.2.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #define t1 (table) #define t2 (table+256) diff --git a/ext/hash/php_hash_types.h b/ext/hash/php_hash_types.h index c7a7b0e42..d5970c0a3 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_types.h,v 1.2.2.4.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_types.h,v 1.2.2.4.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 aed8f0480..138bfa36d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_whirlpool.h,v 1.2.2.4.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_whirlpool.h,v 1.2.2.4.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #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 69aa4293f..c097fa26a 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_hash_whirlpool_tables.h,v 1.1.2.3.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_hash_whirlpool_tables.h,v 1.1.2.3.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #ifndef PHP_HASH_WHIRLPOOL_TABLES_H #define PHP_HASH_WHIRLPOOL_TABLES_H diff --git a/ext/hash/tests/crc32.phpt b/ext/hash/tests/crc32.phpt index c51209c60..3862fb17a 100644 --- a/ext/hash/tests/crc32.phpt +++ b/ext/hash/tests/crc32.phpt @@ -28,9 +28,9 @@ echo hash('crc32b', '12345678901234567890123456789012345678901234567890123456789 882174a0 96790816 00000000 -43beb7e8 -c2412435 -7f9d1520 -bd50274c -d2e6c21f -724aa97c +e8b7be43 +352441c2 +20159d7f +4c2750bd +1fc2e6d2 +7ca94a72 diff --git a/ext/hash/tests/hash_algos.phpt b/ext/hash/tests/hash_algos.phpt new file mode 100644 index 000000000..01a664a70 --- /dev/null +++ b/ext/hash/tests/hash_algos.phpt @@ -0,0 +1,101 @@ +--TEST-- +Test hash_algos() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_algos() : basic functionality *** +array(38) { + [0]=> + string(3) "md2" + [1]=> + string(3) "md4" + [2]=> + string(3) "md5" + [3]=> + string(4) "sha1" + [4]=> + string(6) "sha256" + [5]=> + string(6) "sha384" + [6]=> + string(6) "sha512" + [7]=> + string(9) "ripemd128" + [8]=> + string(9) "ripemd160" + [9]=> + string(9) "ripemd256" + [10]=> + string(9) "ripemd320" + [11]=> + string(9) "whirlpool" + [12]=> + string(10) "tiger128,3" + [13]=> + string(10) "tiger160,3" + [14]=> + string(10) "tiger192,3" + [15]=> + string(10) "tiger128,4" + [16]=> + string(10) "tiger160,4" + [17]=> + string(10) "tiger192,4" + [18]=> + string(6) "snefru" + [19]=> + string(4) "gost" + [20]=> + string(7) "adler32" + [21]=> + string(5) "crc32" + [22]=> + string(6) "crc32b" + [23]=> + string(10) "haval128,3" + [24]=> + string(10) "haval160,3" + [25]=> + string(10) "haval192,3" + [26]=> + string(10) "haval224,3" + [27]=> + string(10) "haval256,3" + [28]=> + string(10) "haval128,4" + [29]=> + string(10) "haval160,4" + [30]=> + string(10) "haval192,4" + [31]=> + string(10) "haval224,4" + [32]=> + string(10) "haval256,4" + [33]=> + string(10) "haval128,5" + [34]=> + string(10) "haval160,5" + [35]=> + string(10) "haval192,5" + [36]=> + string(10) "haval224,5" + [37]=> + string(10) "haval256,5" +} +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_error.phpt b/ext/hash/tests/hash_error.phpt new file mode 100644 index 000000000..1164ca706 --- /dev/null +++ b/ext/hash/tests/hash_error.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test hash() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash() : error conditions *** + +-- Testing hash() function with less than expected no. of arguments -- + +Warning: hash() expects at least 2 parameters, 0 given in %s on line %d +NULL + +Warning: hash() expects at least 2 parameters, 1 given in %s on line %d +NULL + +-- Testing hash() function with more than expected no. of arguments -- + +Warning: hash() expects at most 3 parameters, 4 given in %s on line %d +NULL + +-- Testing hash() function with invalid hash algorithm -- + +Warning: hash(): Unknown hashing algorithm: foo in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_file_basic1.phpt b/ext/hash/tests/hash_file_basic1.phpt new file mode 100644 index 000000000..4bbdeaffb --- /dev/null +++ b/ext/hash/tests/hash_file_basic1.phpt @@ -0,0 +1,87 @@ +--TEST-- +Test hash_file() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_file() : basic functionality *** +adler32: 2e2287ff +crc32: 61664d33 +gost: d9e65f0c0c2ef944e4f8a01f4a46365c4f33a2853756878182a7f03e1490a4cd +haval128,3: 8bb81269aca8b7f87829020d76a4e841 +md2: 70f791c0d8fa9edd7d08e32fcba8c354 +md4: a9d034b16bb290c57a645afd6f14cd3b +md5: 704bf818448f5bbb94061332d2c889aa +ripemd128: d02a5f320a11c54c7d51f933b0bd8471 +ripemd160: 3ff296ca6314313af3ed0437c8fc0ebbd3242d3b +ripemd256: 0edd779587c11cf32781111b264251eb37529832fb207121cd45dd95002e48a8 +ripemd320: bf162fa2ff20491b3016c5d8190f8ee47d7dcda8c38eaf6779349a243a029d275eec9adf16ec1b35 +sha1: 8529b266611e3bd0d208fd9614653c2a8f23d0fe +sha256: a0f5702fa5d3670b80033d668e8732b70550392abb53841355447f8bb0f72245 +sha384: a35d875ed96d94b6452acad910f97978200faa2398d8a0e6b9cffa33704c3809e3d2e5b0d63700d8f32a0716e7d2d528 +sha512: 1f42adaf938fbf136e381b164bae5f984c7f9fe60c82728bd889c14f187c7d63e81a0305a1731c7e0a8f3ed9fd2ec92a3833a93502bdf269532601f0b8e2bab0 +snefru: d414b2345d3e7fa1a31c044cf334bfc1fec24d89e464411998d579d24663895f +tiger192,3: c6fa75a0be4ecf7afa3cafb4e2a08efc3a40534c0e46b971 +whirlpool: 4248b149e000477269a4a5f1a84d97cfc3d0199b7aaf505913e6f010a6f83276029d11a9ad545374bc710eb59c7d958985023ab886ffa9ec9a23852844c764ec +adler32(raw): 2e2287ff +md5(raw): 704bf818448f5bbb94061332d2c889aa +sha256(raw): a0f5702fa5d3670b80033d668e8732b70550392abb53841355447f8bb0f72245 +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_file_error1.phpt b/ext/hash/tests/hash_file_error1.phpt new file mode 100644 index 000000000..14bbdb18d --- /dev/null +++ b/ext/hash/tests/hash_file_error1.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test hash_file() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_file() : error conditions *** + +-- Testing hash_file() function with less than expected no. of arguments -- + +Warning: hash_file() expects at least 2 parameters, 0 given in %s on line %d +NULL + +Warning: hash_file() expects at least 2 parameters, 1 given in %s on line %d +NULL + +-- Testing hash_file() function with more than expected no. of arguments -- + +Warning: hash_file() expects at most 3 parameters, 4 given in %s on line %d +NULL + +-- Testing hash_file() function with invalid hash algorithm -- + +Warning: hash_file(): Unknown hashing algorithm: foo in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_hmac_basic.phpt b/ext/hash/tests/hash_hmac_basic.phpt new file mode 100644 index 000000000..d40e0f487 --- /dev/null +++ b/ext/hash/tests/hash_hmac_basic.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test hash_file() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_hmac() : basic functionality *** +adler32: 9e033311 +crc32: 96859101 +gost: a4a3c80bdf3f8665bf07376a34dc9c1b11af7c813f4928f62e39f0c0dc564dad +haval128,3: 82cd0f4bd36729b5c80c33efa8c13ac5 +md2: 6d111dab563025e4cb5f4425c991fa12 +md4: 10cdbfe843000c623f8b8da0d5d20b0b +md5: 2a632783e2812cf23de100d7d6a463ae +ripemd128: 26c2f694a65b1928b668cf55f65529b4 +ripemd160: 4b3433ba596ec39692bb7ce760a9ee5fb818113f +ripemd256: 4e4e5ec19322895a727f272dfe68f87bc1af66cc6ce27c6c1360a5ee78a14b30 +ripemd320: f10a8ff82e828b92a5ff0a02fc9032bc61352d0d824821fc42f7e09cf5b5f41ee59fd33a730d7469 +sha1: 5bfdb62b97e2c987405463e9f7c193139c0e1fd0 +sha256: 49bde3496b9510a17d0edd8a4b0ac70148e32a1d51e881ec76faa96534125838 +sha384: b781415b856744834e532b9899e1aa0bec5a82cf09a838f0a833470468e2a42648a52428cfd9012385d04de5cd9bd122 +sha512: 7de05636b18e2b0ca3427e03f53074af3a48a7b9df226daba4f22324c570638e7d7b26430e214799c9ce0db5ee88dad3292ca0f38bf99b8eaebed59b3a9c140a +snefru: 67af483046f9cf16fe19f9087929ccfc6ad176ade3290b4d33f43e0ddb07e711 +tiger192,3: 82779797cdc439e886884953ba21fa38e35679041e95ee27 +whirlpool: 4a0f1582b21b7aff59bfba7f9c29131c69741b2ce80acdc7d314040f3b768cf5a17e30b74cceb86fbc6b34b1692e0addd5bfd7cfc043d40c0621f1b97e26fa49 +adler32(raw): 9e033311 +md5(raw): 2a632783e2812cf23de100d7d6a463ae +sha256(raw): 49bde3496b9510a17d0edd8a4b0ac70148e32a1d51e881ec76faa96534125838 +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_hmac_error.phpt b/ext/hash/tests/hash_hmac_error.phpt new file mode 100644 index 000000000..2c9a9a005 --- /dev/null +++ b/ext/hash/tests/hash_hmac_error.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test hash_hmac() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_hmac() : error conditions *** + +-- Testing hash_hmac() function with less than expected no. of arguments -- + +Warning: hash_hmac() expects at least 3 parameters, 0 given in %s on line %d +NULL + +Warning: hash_hmac() expects at least 3 parameters, 1 given in %s on line %d +NULL + +Warning: hash_hmac() expects at least 3 parameters, 2 given in %s on line %d +NULL + +-- Testing hash_hmac() function with more than expected no. of arguments -- + +Warning: hash_hmac() expects at most 4 parameters, 5 given in %s on line %d +NULL + +-- Testing hash_hmac() function with invalid hash algorithm -- + +Warning: hash_hmac(): Unknown hashing algorithm: foo in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_hmac_file_basic.phpt b/ext/hash/tests/hash_hmac_file_basic.phpt new file mode 100644 index 000000000..bbd89b43b --- /dev/null +++ b/ext/hash/tests/hash_hmac_file_basic.phpt @@ -0,0 +1,103 @@ +--TEST-- +Test hash_hmac_file() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash_hmac_file() : basic functionality *** +adler32: 9f037811 +crc32: f2a60b9c +gost: 94c39a40d5db852a8dc3d24e37eebf2d53e3d711457c59cd02b614f792a9d918 +haval128,3: e8fcff647f1a675acb429130fb94a17e +md2: a685475e600314bb549ab4f33c3b27cb +md4: cbc6bff781f48f57378d3effa27553e4 +md5: 8bddf39dd1c566c27acc7fa85ec36acf +ripemd128: 03269b76bf61d508c50f038cbe9ba691 +ripemd160: 94652211292268d97eb63344a3a05d3009f9d2d3 +ripemd256: b6ab414cc1630e1e474fefa41976d252f38ca7cf401552774e71736165e512e7 +ripemd320: 71271a649265740eed4b9931417f979fd81eba6288f4e08ff2997bc3dd6858da054d53a9f1fffe8c +sha1: 7f338d17b72371091abd28f451bc8d1f3a9eb3b6 +sha256: 9135286ca4c84dec711e4b831f6cd39e672e5ff93d011321274eb76733cc1e40 +sha384: 364fdc45a4c742763366ab5d3d1c17c24057e6c3b641607a36d969f00c88da25b19c8b88c8632411e3a0a02397f88aca +sha512: d460aabdf0353655059ed0d408efa91f19c4cda46acc2a4e0adf4764b06951c899fbb2ed41519db78b58ff7be17b1b2910aebe674a56861b232143571b35c83f +snefru: 7b79787e1c1d926b6cc98327f05c5d04ba6227ab51c1398661861196016ef34c +tiger192,3: 5577f21e2af269fff41e023db30e2b01bfd8b8f669177929 +whirlpool: 37a0fbb90547690d5e5e11c046f6654ffdb7bab15e16d9d79c7d85765cc4bdcbfd9df8db7a3ce9558f3f244fead00ca29cf05297f75596555195a0683f15d69f +adler32(raw): 9f037811 +md5(raw): 8bddf39dd1c566c27acc7fa85ec36acf +sha256(raw): 9135286ca4c84dec711e4b831f6cd39e672e5ff93d011321274eb76733cc1e40 +Error cases: + +Warning: hash_hmac_file() expects at least 3 parameters, 0 given in %s on line %d + +Warning: hash_hmac_file() expects at least 3 parameters, 2 given in %s on line %d + +Warning: hash_hmac_file() expects at most 4 parameters, 5 given in %s on line %d +===Done=== \ No newline at end of file diff --git a/ext/hash/tests/hash_hmac_file_error.phpt b/ext/hash/tests/hash_hmac_file_error.phpt new file mode 100644 index 000000000..bdc2ad1df --- /dev/null +++ b/ext/hash/tests/hash_hmac_file_error.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test hash_hmac_file() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hash() : error conditions *** + +-- Testing hash_hmac_file() function with less than expected no. of arguments -- + +Warning: hash_hmac_file() expects at least 3 parameters, 0 given in %s on line %d +NULL + +Warning: hash_hmac_file() expects at least 3 parameters, 1 given in %s on line %d +NULL + +Warning: hash_hmac_file() expects at least 3 parameters, 2 given in %s on line %d +NULL + +-- Testing hash_hmac_file() function with more than expected no. of arguments -- + +Warning: hash_hmac_file() expects at most 4 parameters, 5 given in %s on line %d + +-- Testing hash_hmac_file() function with invalid hash algorithm -- + +Warning: hash_hmac_file(): Unknown hashing algorithm: foo in %s on line %d +===Done=== \ No newline at end of file diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index d7b4b4524..a88c3ed5d 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: iconv.c,v 1.124.2.8.2.23 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: iconv.c,v 1.124.2.8.2.24 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/iconv/php_iconv.h b/ext/iconv/php_iconv.h index 975ae0c55..ff140fbe3 100644 --- a/ext/iconv/php_iconv.h +++ b/ext/iconv/php_iconv.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Revision: 1.28.2.2.2.3 $ */ +/* $Revision: 1.28.2.2.2.4 $ */ #ifndef PHP_ICONV_H #define PHP_ICONV_H diff --git a/ext/imap/config.m4 b/ext/imap/config.m4 index 97474a74c..85dbd0e94 100644 --- a/ext/imap/config.m4 +++ b/ext/imap/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.69.4.7 2007/02/11 09:25:32 tony2001 Exp $ +dnl $Id: config.m4,v 1.69.4.8 2008/10/16 16:20:53 dmitry Exp $ dnl AC_DEFUN([IMAP_INC_CHK],[if test -r "$i$1/c-client.h"; then @@ -229,4 +229,34 @@ if test "$PHP_IMAP" != "no"; then AC_MSG_RESULT(no) AC_MSG_ERROR([build test failed. Please check the config.log for details.]) ], $TST_LIBS) + + AC_MSG_CHECKING(whether rfc822_output_address_list function present) + PHP_TEST_BUILD(foobar, [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RFC822_OUTPUT_ADDRESS_LIST, 1, [ ]) + ], [ + AC_MSG_RESULT(no) + ], [ + $TST_LIBS + ], [ + void mm_log(void){} + void mm_dlog(void){} + void mm_flags(void){} + void mm_fatal(void){} + void mm_critical(void){} + void mm_nocritical(void){} + void mm_notify(void){} + void mm_login(void){} + void mm_diskerror(void){} + void mm_status(void){} + void mm_lsub(void){} + void mm_list(void){} + void mm_exists(void){} + void mm_searched(void){} + void mm_expunged(void){} + void rfc822_output_address_list(void); + void (*f)(void); + char foobar () {f = rfc822_output_address_list;} + ]) + fi diff --git a/ext/imap/config.w32 b/ext/imap/config.w32 index 447e1e67f..d567bc361 100644 --- a/ext/imap/config.w32 +++ b/ext/imap/config.w32 @@ -1,4 +1,4 @@ -// $Id: config.w32,v 1.4 2005/08/01 20:55:31 edink Exp $ +// $Id: config.w32,v 1.4.4.2 2008/12/01 00:03:03 pajoye Exp $ // vim:ft=javascript ARG_WITH("imap", "IMAP Support", "no"); @@ -15,6 +15,7 @@ if (PHP_IMAP == "yes") { ADD_FLAG("CFLAGS_IMAP", "/D HAVE_IMAP2000=1 /D HAVE_IMAP2004=1 /D HAVE_IMAP_SSL=1"); AC_DEFINE('HAVE_IMAP', 1, 'Have IMAP support', true); + AC_DEFINE('HAVE_RFC822_OUTPUT_ADDRESS_LIST', 1, 'Have rfc822_output_address_list', true); } else { WARNING("imap not enabled; libraries and headers not found"); } diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index b93100d67..e58e99778 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -26,7 +26,7 @@ | PHP 4.0 updates: Zeev Suraski | +----------------------------------------------------------------------+ */ -/* $Id: php_imap.c,v 1.208.2.7.2.31 2008/04/17 11:04:49 felipe Exp $ */ +/* $Id: php_imap.c,v 1.208.2.7.2.43 2008/12/31 11:17:38 sebastian Exp $ */ #define IMAP41 @@ -40,6 +40,7 @@ #include "ext/standard/php_string.h" #include "ext/standard/info.h" #include "ext/standard/file.h" +#include "ext/standard/php_smart_str.h" #ifdef ERROR #undef ERROR @@ -66,10 +67,11 @@ MAILSTREAM DEFAULTPROTO; #define SENDBUFLEN 16385 #endif + static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC); static void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC); -static void _php_imap_parse_address(ADDRESS *addresslist, char **fulladdress, zval *paddress TSRMLS_DC); -static int _php_imap_address_size(ADDRESS *addresslist); +static char* _php_imap_parse_address(ADDRESS *addresslist, zval *paddress TSRMLS_DC); +static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC); /* the gets we use */ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md); @@ -717,23 +719,26 @@ PHP_RSHUTDOWN_FUNCTION(imap) } /* }}} */ - -/* {{{ PHP_MINFO_FUNCTION - */ -PHP_MINFO_FUNCTION(imap) -{ - php_info_print_table_start(); +#if !defined(CCLIENTVERSION) #if HAVE_IMAP2004 - php_info_print_table_row(2, "IMAP c-Client Version", "2004"); +#define CCLIENTVERSION "2004" #elif HAVE_IMAP2001 - php_info_print_table_row(2, "IMAP c-Client Version", "2001"); +#define CCLIENTVERSION "2001" #elif HAVE_IMAP2000 - php_info_print_table_row(2, "IMAP c-Client Version", "2000"); +#define CCLIENTVERSION "2000" #elif defined(IMAP41) - php_info_print_table_row(2, "IMAP c-Client Version", "4.1"); +#define CCLIENTVERSION "4.1" #else - php_info_print_table_row(2, "IMAP c-Client Version", "4.0"); +#define CCLIENTVERSION "4.0" #endif +#endif + +/* {{{ PHP_MINFO_FUNCTION + */ +PHP_MINFO_FUNCTION(imap) +{ + php_info_print_table_start(); + php_info_print_table_row(2, "IMAP c-Client Version", CCLIENTVERSION); #if HAVE_IMAP_SSL php_info_print_table_row(2, "SSL Support", "enabled"); #endif @@ -1135,6 +1140,13 @@ PHP_FUNCTION(imap_close) if (myargcount == 2) { convert_to_long_ex(options); flags = Z_LVAL_PP(options); + + /* Check that flags is exactly equal to PHP_EXPUNGE or Zero*/ + if (flags && ((flags & ~PHP_EXPUNGE) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the flags parameter"); + RETURN_FALSE; + } + /* Do the translation from PHP's internal PHP_EXPUNGE define to c-client's CL_EXPUNGE */ if (flags & PHP_EXPUNGE) { flags ^= PHP_EXPUNGE; @@ -1203,22 +1215,29 @@ PHP_FUNCTION(imap_headers) Read the message body */ PHP_FUNCTION(imap_body) { - zval **streamind, **msgno, **flags; + zval **streamind, **msgno, **pflags; pils *imap_le_struct; int msgindex, myargc=ZEND_NUM_ARGS(); + long flags=0L; - if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &flags) == FAILURE) { + if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &pflags) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); } + ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); convert_to_long_ex(msgno); if (myargc == 3) { - convert_to_long_ex(flags); + convert_to_long_ex(pflags); + flags = Z_LVAL_PP(pflags); + if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + RETURN_FALSE; + } } - if ((myargc == 3) && (Z_LVAL_PP(flags) & FT_UID)) { + if ((myargc == 3) && (flags & FT_UID)) { /* This should be cached; if it causes an extra RTT to the IMAP server, then that's the price we pay for making sure we don't crash. */ @@ -1231,7 +1250,7 @@ PHP_FUNCTION(imap_body) RETURN_FALSE; } - RETVAL_STRING(mail_fetchtext_full (imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, myargc==3 ? Z_LVAL_PP(flags) : NIL), 1); + RETVAL_STRING(mail_fetchtext_full (imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, myargc==3 ? Z_LVAL_PP(pflags) : NIL), 1); } /* }}} */ @@ -1451,7 +1470,7 @@ PHP_FUNCTION(imap_list_full) } /* }}} */ -/* {{{ proto array imap_scan(resource stream_id, string ref, string pattern, string content) +/* {{{ proto array imap_listscan(resource stream_id, string ref, string pattern, string content) Read list of mailboxes containing a certain string */ PHP_FUNCTION(imap_listscan) { @@ -1575,7 +1594,7 @@ PHP_FUNCTION(imap_headerinfo) pils *imap_le_struct; MESSAGECACHE *cache; ENVELOPE *en; - char dummy[2000], fulladdress[MAILTMPLEN]; + char dummy[2000], fulladdress[MAILTMPLEN + 1]; int myargc = ZEND_NUM_ARGS(); if (myargc < 2 || myargc > 5 || zend_get_parameters_ex(myargc, &streamind, &msgno, &fromlength, &subjectlength, &defaulthost) == FAILURE) { @@ -1587,8 +1606,8 @@ PHP_FUNCTION(imap_headerinfo) convert_to_long_ex(msgno); if (myargc >= 3) { convert_to_long_ex(fromlength); - if (Z_LVAL_PP(fromlength) < 0 || Z_LVAL_PP(fromlength) >= MAILTMPLEN) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "From length has to be between 1 and %i", MAILTMPLEN); + if (Z_LVAL_PP(fromlength) < 0 || Z_LVAL_PP(fromlength) > MAILTMPLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "From length has to be between 0 and %d", MAILTMPLEN); RETURN_FALSE; } } else { @@ -1596,8 +1615,8 @@ PHP_FUNCTION(imap_headerinfo) } if (myargc >= 4) { convert_to_long_ex(subjectlength); - if (Z_LVAL_PP(subjectlength) < 0 || Z_LVAL_PP(subjectlength) >= MAILTMPLEN) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Subject length has to be between 1 and %i", MAILTMPLEN); + if (Z_LVAL_PP(subjectlength) < 0 || Z_LVAL_PP(subjectlength) > MAILTMPLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Subject length has to be between 0 and %d", MAILTMPLEN); RETURN_FALSE; } } else { @@ -1825,14 +1844,16 @@ PHP_FUNCTION(imap_unsubscribe) Read the full structure of a message */ PHP_FUNCTION(imap_fetchstructure) { - zval **streamind, **msgno, **flags; + zval **streamind, **msgno, **pflags; pils *imap_le_struct; BODY *body; int msgindex, myargc=ZEND_NUM_ARGS(); + long flags=0L; - if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &flags) == FAILURE) { + if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &pflags) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); } + ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); @@ -1841,12 +1862,18 @@ PHP_FUNCTION(imap_fetchstructure) RETURN_FALSE; } if (myargc == 3) { - convert_to_long_ex(flags); + convert_to_long_ex(pflags); + flags = Z_LVAL_PP(pflags); + + if (flags && ((flags & ~FT_UID) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + RETURN_FALSE; + } } object_init(return_value); - if ((myargc == 3) && (Z_LVAL_PP(flags) & FT_UID)) { + if ((myargc == 3) && (flags & FT_UID)) { /* This should be cached; if it causes an extra RTT to the IMAP server, then that's the price we pay for making sure we don't crash. */ @@ -1856,7 +1883,7 @@ PHP_FUNCTION(imap_fetchstructure) } PHP_IMAP_CHECK_MSGNO(msgindex); - mail_fetchstructure_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), &body , myargc == 3 ? Z_LVAL_PP(flags) : NIL); + mail_fetchstructure_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), &body , myargc == 3 ? Z_LVAL_PP(pflags) : NIL); if (!body) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No body information available"); @@ -1871,30 +1898,37 @@ PHP_FUNCTION(imap_fetchstructure) Get a specific body section */ PHP_FUNCTION(imap_fetchbody) { - zval **streamind, **msgno, **sec, **flags; + zval **streamind, **msgno, **sec, **pflags; pils *imap_le_struct; char *body; + long flags=0L; unsigned long len; int myargc=ZEND_NUM_ARGS(); - if (myargc < 3 || myargc > 4 || zend_get_parameters_ex(myargc, &streamind, &msgno, &sec, &flags) == FAILURE) { + if (myargc < 3 || myargc > 4 || zend_get_parameters_ex(myargc, &streamind, &msgno, &sec, &pflags) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); } + ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); convert_to_long_ex(msgno); convert_to_string_ex(sec); if (myargc == 4) { - convert_to_long_ex(flags); + convert_to_long_ex(pflags); + flags = Z_LVAL_PP(pflags); + if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + RETURN_FALSE; + } } - if (myargc < 4 || !(Z_LVAL_PP(flags) & FT_UID)) { + if (myargc < 4 || !(flags & FT_UID)) { /* only perform the check if the msgno is a message number and not a UID */ PHP_IMAP_CHECK_MSGNO(Z_LVAL_PP(msgno)); } - body = mail_fetchbody_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), Z_STRVAL_PP(sec), &len, myargc==4 ? Z_LVAL_PP(flags) : NIL); + body = mail_fetchbody_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), Z_STRVAL_PP(sec), &len, myargc==4 ? Z_LVAL_PP(pflags) : NIL); if (!body) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No body information available"); @@ -2109,7 +2143,7 @@ PHP_FUNCTION(imap_rfc822_write_address) { zval **mailbox, **host, **personal; ADDRESS *addr; - char string[MAILTMPLEN]; + char *string; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &mailbox, &host, &personal) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); @@ -2137,13 +2171,12 @@ PHP_FUNCTION(imap_rfc822_write_address) addr->error=NIL; addr->adl=NIL; - if (_php_imap_address_size(addr) >= MAILTMPLEN) { + string = _php_rfc822_write_address(addr TSRMLS_CC); + if (string) { + RETVAL_STRING(string, 0); + } else { RETURN_FALSE; } - - string[0]='\0'; - rfc822_write_address(string, addr); - RETVAL_STRING(string, 1); } /* }}} */ @@ -2154,7 +2187,8 @@ PHP_FUNCTION(imap_rfc822_parse_adrlist) zval **str, **defaulthost, *tovals; ADDRESS *addresstmp; ENVELOPE *env; - + char *str_copy; + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &str, &defaulthost) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); } @@ -2165,7 +2199,10 @@ PHP_FUNCTION(imap_rfc822_parse_adrlist) env = mail_newenvelope(); - rfc822_parse_adrlist(&env->to, Z_STRVAL_PP(str), Z_STRVAL_PP(defaulthost)); + /* rfc822_parse_adrlist() modifies passed string. Copy it. */ + str_copy = estrndup(Z_STRVAL_PP(str), Z_STRLEN_PP(str)); + rfc822_parse_adrlist(&env->to, str_copy, Z_STRVAL_PP(defaulthost)); + efree(str_copy); array_init(return_value); @@ -2188,6 +2225,8 @@ PHP_FUNCTION(imap_rfc822_parse_adrlist) } add_next_index_object(return_value, tovals TSRMLS_CC); } while ((addresstmp = addresstmp->next)); + + mail_free_envelope(&env); } /* }}} */ @@ -2632,22 +2671,29 @@ PHP_FUNCTION(imap_sort) Get the full unfiltered header for a message */ PHP_FUNCTION(imap_fetchheader) { - zval **streamind, **msgno, **flags; + zval **streamind, **msgno, **pflags; pils *imap_le_struct; int msgindex, myargc = ZEND_NUM_ARGS(); + long flags=0L; - if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &flags) == FAILURE) { + if (myargc < 2 || myargc > 3 || zend_get_parameters_ex(myargc, &streamind, &msgno, &pflags) == FAILURE) { ZEND_WRONG_PARAM_COUNT(); } - + ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); convert_to_long_ex(msgno); if (myargc == 3) { - convert_to_long_ex(flags); - } + convert_to_long_ex(pflags); + flags = Z_LVAL_PP(pflags); + if (flags && ((flags & ~(FT_UID|FT_INTERNAL|FT_PREFETCHTEXT)) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + RETURN_FALSE; + } + } + - if ((myargc == 3) && (Z_LVAL_PP(flags) & FT_UID)) { + if ((myargc == 3) && (flags & FT_UID)) { /* This should be cached; if it causes an extra RTT to the IMAP server, then that's the price we pay for making sure we don't crash. */ @@ -2658,7 +2704,7 @@ PHP_FUNCTION(imap_fetchheader) PHP_IMAP_CHECK_MSGNO(msgindex); - RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, NIL, (myargc == 3 ? Z_LVAL_PP(flags) : NIL)), 1); + RETVAL_STRING(mail_fetchheader_full(imap_le_struct->imap_stream, Z_LVAL_PP(msgno), NIL, NIL, (myargc == 3 ? Z_LVAL_PP(pflags) : NIL)), 1); } /* }}} */ @@ -2873,7 +2919,7 @@ PHP_FUNCTION(imap_fetch_overview) zval **streamind, **sequence, **pflags; pils *imap_le_struct; zval *myoverview; - char address[MAILTMPLEN]; + char *address; long status, flags=0L; int myargc = ZEND_NUM_ARGS(); @@ -2881,12 +2927,17 @@ PHP_FUNCTION(imap_fetch_overview) ZEND_WRONG_PARAM_COUNT(); } + ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); convert_to_string_ex(sequence); if(myargc == 3) { convert_to_long_ex(pflags); flags = Z_LVAL_PP(pflags); + if (flags && ((flags & ~FT_UID) != 0)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid value for the options parameter"); + RETURN_FALSE; + } } array_init(return_value); @@ -2908,17 +2959,19 @@ PHP_FUNCTION(imap_fetch_overview) if (env->subject) { add_property_string(myoverview, "subject", env->subject, 1); } - if (env->from && _php_imap_address_size(env->from) < MAILTMPLEN) { + if (env->from) { env->from->next=NULL; - address[0] = '\0'; - rfc822_write_address(address, env->from); - add_property_string(myoverview, "from", address, 1); + address =_php_rfc822_write_address(env->from TSRMLS_CC); + if (address) { + add_property_string(myoverview, "from", address, 0); + } } - if (env->to && _php_imap_address_size(env->to) < MAILTMPLEN) { + if (env->to) { env->to->next = NULL; - address[0] = '\0'; - rfc822_write_address(address, env->to); - add_property_string(myoverview, "to", address, 1); + address = _php_rfc822_write_address(env->to TSRMLS_CC); + if (address) { + add_property_string(myoverview, "to", address, 0); + } } if (env->date) { add_property_string(myoverview, "date", env->date, 1); @@ -2961,7 +3014,7 @@ PHP_FUNCTION(imap_mail_compose) BODY *bod=NULL, *topbod=NULL; PART *mypart=NULL, *part; PARAMETER *param, *disp_param = NULL, *custom_headers_param = NULL, *tmp_param = NULL; - char *tmp=NULL, *mystring=NULL, *t=NULL, *tempstring=NULL; + char *tmp=NULL, *mystring=NULL, *t=NULL, *tempstring=NULL, *str_copy = NULL; int toppart = 0; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &envelope, &body) == FAILURE) { @@ -2978,50 +3031,55 @@ PHP_FUNCTION(imap_mail_compose) RETURN_FALSE; } +#define PHP_RFC822_PARSE_ADRLIST(target, value) \ + str_copy = estrndup(Z_STRVAL_PP(value), Z_STRLEN_PP(value)); \ + rfc822_parse_adrlist(target, str_copy, "NO HOST"); \ + efree(str_copy); + env = mail_newenvelope(); if (zend_hash_find(Z_ARRVAL_PP(envelope), "remail", sizeof("remail"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - env->remail=cpystr(Z_STRVAL_PP(pvalue)); + env->remail = cpystr(Z_STRVAL_PP(pvalue)); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "return_path", sizeof("return_path"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue) - rfc822_parse_adrlist(&env->return_path, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->return_path, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "date", sizeof("date"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - env->date=cpystr(Z_STRVAL_PP(pvalue)); + env->date = cpystr(Z_STRVAL_PP(pvalue)); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "from", sizeof("from"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - rfc822_parse_adrlist (&env->from, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->from, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "reply_to", sizeof("reply_to"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - rfc822_parse_adrlist (&env->reply_to, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->reply_to, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "in_reply_to", sizeof("in_reply_to"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - env->in_reply_to=cpystr(Z_STRVAL_PP(pvalue)); + env->in_reply_to = cpystr(Z_STRVAL_PP(pvalue)); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "subject", sizeof("subject"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - env->subject=cpystr(Z_STRVAL_PP(pvalue)); + env->subject = cpystr(Z_STRVAL_PP(pvalue)); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "to", sizeof("to"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - rfc822_parse_adrlist (&env->to, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->to, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "cc", sizeof("cc"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - rfc822_parse_adrlist (&env->cc, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->cc, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "bcc", sizeof("bcc"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - rfc822_parse_adrlist (&env->bcc, Z_STRVAL_PP(pvalue), "NO HOST"); + PHP_RFC822_PARSE_ADRLIST(&env->bcc, pvalue); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "message_id", sizeof("message_id"), (void **) &pvalue)== SUCCESS) { convert_to_string_ex(pvalue); - env->message_id=cpystr(Z_STRVAL_PP(pvalue)); + env->message_id = cpystr(Z_STRVAL_PP(pvalue)); } if (zend_hash_find(Z_ARRVAL_PP(envelope), "custom_headers", sizeof("custom_headers"), (void **) &pvalue)== SUCCESS) { @@ -3858,6 +3916,43 @@ static int _php_rfc822_len(char *str) /* }}} */ /* Support Functions */ + +#ifdef HAVE_RFC822_OUTPUT_ADDRESS_LIST +/* {{{ _php_rfc822_soutr + */ +static long _php_rfc822_soutr (void *stream, char *string) +{ + smart_str *ret = (smart_str*)stream; + int len = strlen(string); + + smart_str_appendl(ret, string, len); + return LONGT; +} + +/* }}} */ + +/* {{{ _php_rfc822_write_address + */ +static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +{ + char address[MAILTMPLEN]; + smart_str ret = {0}; + RFC822BUFFER buf; + + buf.beg = address; + buf.cur = buf.beg; + buf.end = buf.beg + sizeof(address) - 1; + buf.s = &ret; + buf.f = _php_rfc822_soutr; + rfc822_output_address_list(&buf, addresslist, 0, NULL); + rfc822_output_flush(&buf); + smart_str_0(&ret); + return ret.c; +} +/* }}} */ + +#else + /* {{{ _php_imap_get_address_size */ static int _php_imap_address_size (ADDRESS *addresslist) @@ -3887,26 +3982,33 @@ static int _php_imap_address_size (ADDRESS *addresslist) /* }}} */ +/* {{{ _php_rfc822_write_address + */ +static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +{ + char address[SENDBUFLEN]; + if (_php_imap_address_size(addresslist) >= SENDBUFLEN) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Address buffer overflow"); + return NULL; + } + address[0] = 0; + rfc822_write_address(address, addresslist); + return estrdup(address); +} +/* }}} */ +#endif /* {{{ _php_imap_parse_address */ -static void _php_imap_parse_address (ADDRESS *addresslist, char **fulladdress, zval *paddress TSRMLS_DC) +static char* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRMLS_DC) { + char *fulladdress; ADDRESS *addresstmp; zval *tmpvals; - char *tmpstr; - int len=0; addresstmp = addresslist; - if ((len = _php_imap_address_size(addresstmp))) { - tmpstr = (char *) pemalloc(len + 1, 1); - tmpstr[0] = '\0'; - rfc822_write_address(tmpstr, addresstmp); - *fulladdress = tmpstr; - } else { - *fulladdress = NULL; - } + fulladdress = _php_rfc822_write_address(addresstmp TSRMLS_CC); addresstmp = addresslist; do { @@ -3918,6 +4020,7 @@ static void _php_imap_parse_address (ADDRESS *addresslist, char **fulladdress, z if (addresstmp->host) add_property_string(tmpvals, "host", addresstmp->host, 1); add_next_index_object(paddress, tmpvals TSRMLS_CC); } while ((addresstmp = addresstmp->next)); + return fulladdress; } /* }}} */ @@ -3944,10 +4047,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->to) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->to, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->to, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "toaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "toaddress", fulladdress, 0); } add_assoc_object(myzvalue, "to", paddress TSRMLS_CC); } @@ -3955,10 +4057,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->from) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->from, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->from, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "fromaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "fromaddress", fulladdress, 0); } add_assoc_object(myzvalue, "from", paddress TSRMLS_CC); } @@ -3966,10 +4067,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->cc) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->cc, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->cc, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "ccaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "ccaddress", fulladdress, 0); } add_assoc_object(myzvalue, "cc", paddress TSRMLS_CC); } @@ -3977,10 +4077,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->bcc) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->bcc, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->bcc, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "bccaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "bccaddress", fulladdress, 0); } add_assoc_object(myzvalue, "bcc", paddress TSRMLS_CC); } @@ -3988,10 +4087,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->reply_to) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->reply_to, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->reply_to, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "reply_toaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "reply_toaddress", fulladdress, 0); } add_assoc_object(myzvalue, "reply_to", paddress TSRMLS_CC); } @@ -3999,10 +4097,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->sender) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->sender, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->sender, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "senderaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "senderaddress", fulladdress, 0); } add_assoc_object(myzvalue, "sender", paddress TSRMLS_CC); } @@ -4010,10 +4107,9 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) if (en->return_path) { MAKE_STD_ZVAL(paddress); array_init(paddress); - _php_imap_parse_address(en->return_path, &fulladdress, paddress TSRMLS_CC); + fulladdress = _php_imap_parse_address(en->return_path, paddress TSRMLS_CC); if (fulladdress) { - add_property_string(myzvalue, "return_pathaddress", fulladdress, 1); - free(fulladdress); + add_property_string(myzvalue, "return_pathaddress", fulladdress, 0); } add_assoc_object(myzvalue, "return_path", paddress TSRMLS_CC); } diff --git a/ext/imap/php_imap.h b/ext/imap/php_imap.h index 06ca89ac5..5a55b41b4 100644 --- a/ext/imap/php_imap.h +++ b/ext/imap/php_imap.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -27,7 +27,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_imap.h,v 1.32.2.2.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_imap.h,v 1.32.2.2.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #ifndef PHP_IMAP_H #define PHP_IMAP_H diff --git a/ext/imap/tests/README b/ext/imap/tests/README new file mode 100644 index 000000000..0d222ad0b --- /dev/null +++ b/ext/imap/tests/README @@ -0,0 +1,45 @@ + +Many of the tests in this directory require a mail server to be running, if there is no mail server the test will skip and warn, see skipif.inc for details. + +To make the tests run parameters in the skipif.inc and imap_include.inc file will need to be changed to match the local mailserver configuration. + + +The tests have been checked using dovecot (on Linux 32 and 64 bit systems) and hMailServer on Windows. The tests are intended to be mailserver agnostic. + +The tests can be run without modification with a fairly minimal dovecot installation. For information, the dovecot.conf file used in running the tests is given below (after -----). The dovecot password file (dovecotpass) requires a password for one user, webmaster@something.com. It's also necessary to set up one additional user ID (vmail) to own the mail directory. + +-------------------------------------------------- +protocols = imap imaps + +listen = * + +ssl_disable = yes + +disable_plaintext_auth=yes + +## Mailbox locations and namespaces + +mail_location = maildir:/home/vmail/mail/%d/%n/Maildir + +auth_verbose = yes + +auth_debug = yes + +auth default { + + mechanisms = login + + passdb passwd-file { + args = /etc/dovecot/dovecotpass + } + + userdb static { + args = uid=11459 gid=1002 home=/home/vmail/dovecot/mail/%d/%n + } + + user = root +} + + + + diff --git a/ext/imap/tests/bug45705_1.phpt b/ext/imap/tests/bug45705_1.phpt new file mode 100644 index 000000000..eedaed081 --- /dev/null +++ b/ext/imap/tests/bug45705_1.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #45705 test #1 (imap rfc822_parse_adrlist() modifies passed address parameter) +--SKIPIF-- + +--FILE-- +'; +var_dump($address); +imap_rfc822_parse_adrlist($address, null); +var_dump($address); + +?> +--EXPECT-- +string(27) "John Doe " +string(27) "John Doe " diff --git a/ext/imap/tests/bug45705_2.phpt b/ext/imap/tests/bug45705_2.phpt new file mode 100644 index 000000000..797d47317 --- /dev/null +++ b/ext/imap/tests/bug45705_2.phpt @@ -0,0 +1,53 @@ +--TEST-- +Bug #45705 test #2 (imap rfc822_parse_adrlist() modifies passed address parameter) +--SKIPIF-- + +--FILE-- + 'John Doe ', + 'from' => 'John Doe ', + 'reply_to' => 'John Doe ', + 'to' => 'John Doe ', + 'cc' => 'John Doe ', + 'bcc' => 'John Doe ', +); + +var_dump($envelope); +imap_mail_compose($envelope, array(1 => array())); +var_dump($envelope); + +?> +--EXPECT-- +array(6) { + ["return_path"]=> + string(27) "John Doe " + ["from"]=> + string(27) "John Doe " + ["reply_to"]=> + string(27) "John Doe " + ["to"]=> + string(27) "John Doe " + ["cc"]=> + string(27) "John Doe " + ["bcc"]=> + string(27) "John Doe " +} +array(6) { + ["return_path"]=> + string(27) "John Doe " + ["from"]=> + string(27) "John Doe " + ["reply_to"]=> + string(27) "John Doe " + ["to"]=> + string(27) "John Doe " + ["cc"]=> + string(27) "John Doe " + ["bcc"]=> + string(27) "John Doe " +} diff --git a/ext/imap/tests/bug46918.phpt b/ext/imap/tests/bug46918.phpt new file mode 100644 index 000000000..6456f2570 --- /dev/null +++ b/ext/imap/tests/bug46918.phpt @@ -0,0 +1,69 @@ +--TEST-- +Bug #46918 (imap_rfc822_parse_adrlist host part not filled in correctly) +--FILE-- +, + shuf6@example.ac.uk, + blobby, + "ian,eiloart", + <@example.com:foo@example.ac.uk>, + foo@#, + ian@-example.com, + ian@one@two'; +$add_arr = imap_rfc822_parse_adrlist($adds, 'example.com'); +var_export($add_arr); + +?> +--EXPECT-- +array ( + 0 => + stdClass::__set_state(array( + 'mailbox' => 'iane', + 'host' => 'example.ac.uk', + 'personal' => 'ian eiloart', + )), + 1 => + stdClass::__set_state(array( + 'mailbox' => 'shuf6', + 'host' => 'example.ac.uk', + )), + 2 => + stdClass::__set_state(array( + 'mailbox' => 'blobby', + 'host' => 'example.com', + )), + 3 => + stdClass::__set_state(array( + 'mailbox' => 'ian', + 'host' => 'example.ac.uk', + 'personal' => 'ian,eiloart', + )), + 4 => + stdClass::__set_state(array( + 'mailbox' => 'foo', + 'host' => 'example.ac.uk', + 'adl' => '@example.com', + )), + 5 => + stdClass::__set_state(array( + 'mailbox' => 'foo', + 'host' => '#', + )), + 6 => + stdClass::__set_state(array( + 'mailbox' => 'ian', + 'host' => '-example.com', + )), + 7 => + stdClass::__set_state(array( + 'mailbox' => 'ian', + 'host' => 'one', + )), + 8 => + stdClass::__set_state(array( + 'mailbox' => 'UNEXPECTED_DATA_AFTER_ADDRESS', + 'host' => '.SYNTAX-ERROR.', + )), +) +Notice: Unknown: Unexpected characters at end of address: @two (errflg=3) in Unknown on line 0 diff --git a/ext/imap/tests/clean.inc b/ext/imap/tests/clean.inc new file mode 100644 index 000000000..648f3c364 --- /dev/null +++ b/ext/imap/tests/clean.inc @@ -0,0 +1,25 @@ +Nmsgs; $i++) { + imap_delete($imap_stream, $i); +} + +$mailboxes = imap_getmailboxes($imap_stream, $server, '*'); + +foreach($mailboxes as $value) { + // Only delete mailboxes with our prefix + if (preg_match('/\{.*?\}INBOX\.(.+)/', $value->name, $match) == 1) { + if (strlen($match[1]) >= strlen($mailbox_prefix) + && substr_compare($match[1], $mailbox_prefix, 0, strlen($mailbox_prefix)) == 0) { + imap_deletemailbox($imap_stream, $value->name); + } + } +} + +imap_close($imap_stream, CL_EXPUNGE); +?> \ No newline at end of file diff --git a/ext/imap/tests/imap_8bit_basic.phpt b/ext/imap/tests/imap_8bit_basic.phpt new file mode 100644 index 000000000..48b136d74 --- /dev/null +++ b/ext/imap/tests/imap_8bit_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test imap_8bit() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing imap_8bit() : basic functionality *** +string(28) "String with CRLF at end=20 +" +string(25) "String with space at end " +string(33) "String with tabs =09=09 in middle" +string(26) "String with tab at end =09" +string(27) "=00=01=02=03=04=FE=FF=0A=0D" +===Done=== diff --git a/ext/imap/tests/imap_alerts_error.phpt b/ext/imap/tests/imap_alerts_error.phpt new file mode 100644 index 000000000..b1b9ccdf6 --- /dev/null +++ b/ext/imap/tests/imap_alerts_error.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test imap_alerts() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_alerts() : error conditions *** + +-- Testing imap_alerts() function with one argument -- + +Warning: Wrong parameter count for imap_alerts() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_append_basic.phpt b/ext/imap/tests/imap_append_basic.phpt new file mode 100644 index 000000000..cd0021688 --- /dev/null +++ b/ext/imap/tests/imap_append_basic.phpt @@ -0,0 +1,72 @@ +--TEST-- +Test imap_append() function : basic functionality +--SKIPIF-- + +--FILE-- +Mailbox . "\n"; +var_dump(imap_append($imap_stream, $mb_details->Mailbox + , "From: webmaster@something.com\r\n" + . "To: info@something.com\r\n" + . "Subject: Test message\r\n" + . "\r\n" + . "this is a test message, please ignore\r\n" + )); + +var_dump(imap_append($imap_stream, $mb_details->Mailbox + , "From: webmaster@something.com\r\n" + . "To: info@something.com\r\n" + . "Subject: Another test\r\n" + . "\r\n" + . "this is another test message, please ignore it too!!\r\n" + )); + +$check = imap_check($imap_stream); +echo "Msg Count after append : ". $check->Nmsgs . "\n"; + +echo "List the msg headers\n"; +var_dump(imap_headers($imap_stream)); + +imap_close($imap_stream); +?> +===Done=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_append() : basic functionality *** +Create a new mailbox for test +Create a temporary mailbox and add 0 msgs +.. mailbox '%s' created +Add a couple of msgs to new mailbox {%s}INBOX.%s +bool(true) +bool(true) +Msg Count after append : 2 +List the msg headers +array(2) { + [0]=> + string(%d) "%w%s 1)%s webmaster@something. Test message (%d chars)" + [1]=> + string(%d) "%w%s 2)%s webmaster@something. Another test (%d chars)" +} +===Done=== + diff --git a/ext/imap/tests/imap_base64_basic.phpt b/ext/imap/tests/imap_base64_basic.phpt new file mode 100644 index 000000000..3d1b6c283 --- /dev/null +++ b/ext/imap/tests/imap_base64_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test imap_base64() function : basic functionality +--SKIPIF-- + +--FILE-- +.<,'; +$base64 = base64_encode($str); +if (imap_base64($base64) == $str) { + echo "TEST PASSED\n"; +} else { + echo "TEST FAILED"; +} + +$hex = b'x00\x01\x02\x03\x04\x05\x06\xFA\xFB\xFC\xFD\xFE\xFF'; +$base64 = base64_encode($hex); +if (imap_base64($base64) == $hex) { + echo "TEST PASSED\n"; +} else { + echo "TEST FAILED"; +} + +?> +===Done=== +--EXPECT-- +*** Testing imap_base64() : basic functionality *** +TEST PASSED +TEST PASSED +TEST PASSED +===Done=== diff --git a/ext/imap/tests/imap_binary_basic.phpt b/ext/imap/tests/imap_binary_basic.phpt new file mode 100644 index 000000000..bd4eabba5 --- /dev/null +++ b/ext/imap/tests/imap_binary_basic.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test imap_binary() function : basic functionality +--SKIPIF-- + +--FILE-- +.<,'; +$base64 = imap_binary($str); +var_dump(bin2hex($base64)); + +echo "Encode some hexadecimal data\n"; +$hex = b'x00\x01\x02\x03\x04\x05\x06\xFA\xFB\xFC\xFD\xFE\xFF'; +$base64 = imap_binary($hex); +var_dump(bin2hex($base64)); + +?> +===Done=== +--EXPECTF-- +*** Testing imap_binary() : basic functionality *** +Encode as short string +%string|unicode%(136) "5647687063794270637942686269426c654746746347786c49484e30636d6c755a794230627942695a53426959584e6c49445930494756755932396b0d0a5a57513d0d0a" +Encode a string which results in more than 60 charters of output +%string|unicode%(200) "56476870637942706379426849477876626d6367633352796157356e4948647064476767636d567a64577830637942706269427462334a6c4948526f0d0a595734674e6a416759326868636d466a64475679637942765a694276645852776458513d0d0a" +Encode a string with special characters +%string|unicode%(60) "5879737450587464573130374f30422b497a3876506934384c413d3d0d0a" +Encode some hexadecimal data +%string|unicode%(144) "65444177584867774d5678344d444a636544417a584867774e4678344d445663654441325848684751567834526b4a6365455a4458486847524678340d0a526b566365455a470d0a" +===Done=== diff --git a/ext/imap/tests/imap_body_basic.phpt b/ext/imap/tests/imap_body_basic.phpt new file mode 100644 index 000000000..deda63a35 --- /dev/null +++ b/ext/imap/tests/imap_body_basic.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test imap_body() function : basic functionality +--SKIPIF-- + +--FILE-- +Nmsgs . "\n"; + +// show body for msg 1 +var_dump(imap_body($imap_stream, 1)); + +imap_close($imap_stream); +?> +===Done=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_body() : basic functionality *** +Create a new mailbox for test +Create a temporary mailbox and add 1 msgs +.. mailbox '%s' created +Msg Count in new mailbox: 1 +string(%d) "1: this is a test message, please ignore%a" +===Done=== \ No newline at end of file diff --git a/ext/imap/tests/imap_bodystruct_basic.phpt b/ext/imap/tests/imap_bodystruct_basic.phpt new file mode 100644 index 000000000..4edc753b6 --- /dev/null +++ b/ext/imap/tests/imap_bodystruct_basic.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test imap_bodystruct() function : basic functionality +--SKIPIF-- + +--FILE-- +$mf)) + { + echo "$mf is 0 or 1\n"; + } + else + { + echo "$mf FAIL\n"; + } +} + +if(is_array($m->parameters)) +{ + echo "parameters is an array\n"; +} + +echo "\nTry to get part 4!\n"; +var_dump(imap_bodystruct($imap_stream, 1, "4")); + +imap_close($imap_stream); + +function isValid($param) +{ + if(($param == 0) || ($param == 1)) + { + $result=true; + } + else + { + $result=false; + } +return $result; +} +?> +===Done=== +--CLEAN-- + +--EXPECTF-- +*** Testing string imap_bodystruct : basic functionality *** +Create a new mailbox for test and add a multipart msgs +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +Get and validate structure of body part 1 +ifsubtype is 0 or 1 +ifdescription is 0 or 1 +ifid is 0 or 1 +ifdisposition is 0 or 1 +ifdparameters is 0 or 1 +ifparameters is 0 or 1 +parameters is an array + +Try to get part 4! +bool(false) +===Done=== diff --git a/ext/imap/tests/imap_clearflag_full_basic.phpt b/ext/imap/tests/imap_clearflag_full_basic.phpt new file mode 100644 index 000000000..3e52b5dcb --- /dev/null +++ b/ext/imap/tests/imap_clearflag_full_basic.phpt @@ -0,0 +1,127 @@ +--TEST-- +Test imap_clearflag_full() function : basic functionality +--SKIPIF-- + +--FILE-- +Nmsgs . "\n"; + +echo "Set some flags\n"; +var_dump(imap_setflag_full($imap_stream, "1,3", "\\Seen \\Answered")); +var_dump(imap_setflag_full($imap_stream, "2,4", "\\Answered")); +var_dump(imap_setflag_full($imap_stream, "5,7", "\\Flagged \\Deleted")); +var_dump(imap_setflag_full($imap_stream, "6,8", "\\Deleted")); +var_dump(imap_setflag_full($imap_stream, "9,10", "\\Draft \\Flagged")); + +var_dump(imap_search($imap_stream, "SEEN")); +var_dump(imap_search($imap_stream, "ANSWERED")); +var_dump(imap_search($imap_stream, "FLAGGED")); +var_dump(imap_search($imap_stream, "DELETED")); + +var_dump(imap_clearflag_full($imap_stream, "1,4", "\\Answered")); +var_dump(imap_clearflag_full($imap_stream, "5,6,7,8", "\\Deleted")); +var_dump(imap_clearflag_full($imap_stream, "9", "\\Flagged")); + +var_dump(imap_search($imap_stream, "SEEN")); +var_dump(imap_search($imap_stream, "ANSWERED")); +var_dump(imap_search($imap_stream, "FLAGGED")); +var_dump(imap_search($imap_stream, "DELETED")); + +imap_close($imap_stream); +?> +===Done=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_clearflag_full() : basic functionality *** +Create a new mailbox for test +Create a temporary mailbox and add 10 msgs +.. mailbox '{localhost/norsh}INBOX.%s' created +Initial msg count in new_mailbox : 10 +Set some flags +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +array(2) { + [0]=> + int(1) + [1]=> + int(3) +} +array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) +} +array(4) { + [0]=> + int(5) + [1]=> + int(7) + [2]=> + int(9) + [3]=> + int(10) +} +array(4) { + [0]=> + int(5) + [1]=> + int(6) + [2]=> + int(7) + [3]=> + int(8) +} +bool(true) +bool(true) +bool(true) +array(2) { + [0]=> + int(1) + [1]=> + int(3) +} +array(2) { + [0]=> + int(2) + [1]=> + int(3) +} +array(3) { + [0]=> + int(5) + [1]=> + int(7) + [2]=> + int(10) +} +bool(false) +===Done=== diff --git a/ext/imap/tests/imap_close_basic.phpt b/ext/imap/tests/imap_close_basic.phpt new file mode 100644 index 000000000..5ec6a33a1 --- /dev/null +++ b/ext/imap/tests/imap_close_basic.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test imap_close() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_close() : basic functionality *** +Create a temporary mailbox and add 3 msgs +.. mailbox '%sINBOX.phpttest' created + +-- Call to imap_close() with all possible arguments -- +bool(true) +There are now 0 msgs in mailbox '%sINBOX.phpttest' + +-- Call to imap_close() with mandatory arguments -- +bool(true) +===DONE=== diff --git a/ext/imap/tests/imap_close_error.phpt b/ext/imap/tests/imap_close_error.phpt new file mode 100644 index 000000000..2fbe0ec82 --- /dev/null +++ b/ext/imap/tests/imap_close_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test imap_close() function : error conditions - incorrect number of args +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_close() : error conditions *** + +-- Testing imap_close() function with Zero arguments -- + +Warning: Wrong parameter count for imap_close() in %s on line %d +NULL + +-- Testing imap_close() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for imap_close() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_close_variation1.phpt b/ext/imap/tests/imap_close_variation1.phpt new file mode 100644 index 000000000..e5ffa2ecb --- /dev/null +++ b/ext/imap/tests/imap_close_variation1.phpt @@ -0,0 +1,214 @@ +--TEST-- +Test imap_close() function : usage variations - different data types as $stream_id arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_close() : usage variations *** + +-- Iteration 1 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: imap_close(): supplied argument is not a valid imap resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_close_variation2.phpt b/ext/imap/tests/imap_close_variation2.phpt new file mode 100644 index 000000000..3aa9f2a7e --- /dev/null +++ b/ext/imap/tests/imap_close_variation2.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test imap_close() function : usage variations - different data types as $options arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_close() : usage variations *** +Create a temporary mailbox and add 3 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 2 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 3 -- +bool(true) +CL_EXPUNGE was set + +-- Iteration 4 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 8 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 9 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 10 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 11 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 12 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 13 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 14 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 15 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 16 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 17 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 18 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 19 -- +bool(true) +CL_EXPUNGE was set + +-- Iteration 20 -- +bool(true) +CL_EXPUNGE was set + +-- Iteration 21 -- +bool(true) +CL_EXPUNGE was set + +-- Iteration 22 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 23 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox +===DONE=== diff --git a/ext/imap/tests/imap_close_variation3.phpt b/ext/imap/tests/imap_close_variation3.phpt new file mode 100644 index 000000000..5f2790b31 --- /dev/null +++ b/ext/imap/tests/imap_close_variation3.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test imap_close() function : usage variations - different streams +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_close() : usage variations *** + +-- File Resource opened with fopen() -- +resource(%d) of type (stream) + +Warning: imap_close(): supplied resource is not a valid imap resource in %s on line %d +bool(false) +resource(%d) of type (stream) + +-- Directory Resource opened with opendir() -- +resource(%d) of type (stream) + +Warning: imap_close(): supplied resource is not a valid imap resource in %s on line %d +bool(false) +resource(%d) of type (stream) +===DONE=== diff --git a/ext/imap/tests/imap_close_variation4.phpt b/ext/imap/tests/imap_close_variation4.phpt new file mode 100644 index 000000000..65b05786f --- /dev/null +++ b/ext/imap/tests/imap_close_variation4.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test imap_close() function : usage variations - different ints as $options arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_close() : usage variations *** +Create a temporary mailbox and add 3 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- +bool(true) +CL_EXPUNGE was not set, 3 msgs in mailbox + +-- Iteration 2 -- +bool(true) +CL_EXPUNGE was set + +-- Iteration 3 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_close(): invalid value for the flags parameter in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_createmailbox_basic.phpt b/ext/imap/tests/imap_createmailbox_basic.phpt new file mode 100644 index 000000000..e80c87dc8 --- /dev/null +++ b/ext/imap/tests/imap_createmailbox_basic.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test imap_createmailbox() function : basic functionality +--SKIPIF-- + +--FILE-- +messages . "\n"; + echo "Recent: " . $status->recent . "\n"; + echo "Unseen: " . $status->unseen . "\n"; + echo "UIDnext: " . $status->uidnext . "\n"; + echo "UIDvalidity: " . $status->uidvalidity . "\n"; + + } else { + echo "imap_status on new mailbox failed: " . imap_last_error() . "\n"; + } + + if (imap_deletemailbox($imap_stream, $newbox)) { + echo "Mailbox '$newname' removed to restore initial state\n"; + } else { + echo "imap_deletemailbox on new mailbox failed: " . implode("\n", imap_errors()) . "\n"; + } + +} else { + echo "could not create new mailbox: " . implode("\n", imap_errors()) . "\n"; +} + +imap_close($imap_stream); + +?> +===Done=== +--EXPECTF-- +*** Testing imap_createmailbox() : basic functionality *** +Newname will be 'phpnewbox' +Add a couple of msgs to 'phpnewbox' mailbox +Your new mailbox 'phpnewbox' has the following status: +Messages: 2 +Recent: 2 +Unseen: 2 +UIDnext: %d +UIDvalidity: %d +Mailbox 'phpnewbox' removed to restore initial state +===Done=== diff --git a/ext/imap/tests/imap_errors_basic.phpt b/ext/imap/tests/imap_errors_basic.phpt new file mode 100644 index 000000000..f839fe152 --- /dev/null +++ b/ext/imap/tests/imap_errors_basic.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test imap_errors() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing imap_errors() : basic functionality *** +Issue open with invalid password with normal default number of retries, i.e 3 + +Warning: imap_open(): Couldn't open stream %s in %s on line %d +List any errors +array(%d) { + [0]=> + string(%d) "%s" + [1]=> + string(%d) "%s" + [2]=> + string(%d) "%a +} + + +Issue open with invalid password with retries == 1 + +Warning: imap_open(): Couldn't open stream %s in %s on line %d +List any errors +array(%d) { + [0]=> + string(%d) "%a +} +===Done=== diff --git a/ext/imap/tests/imap_fetch_overview_basic.phpt b/ext/imap/tests/imap_fetch_overview_basic.phpt new file mode 100644 index 000000000..80d5c69f1 --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_basic.phpt @@ -0,0 +1,118 @@ +--TEST-- +Test imap_fetch_overview() function : basic functionality +--SKIPIF-- + +--FILE-- + Object #1\n"; +foreach ($mandatoryFields as $mf) +{ + $z = $a[0]->$mf; + echo "$mf is $z\n"; +} + +// Calling imap_fetch_overview() with mandatory arguments +echo "\n-- Mandatory arguments --\n"; +$a = imap_fetch_overview($stream_id, '1:2') ; + +//first object in array +echo "\n--> Object #1\n"; +foreach ($mandatoryFields as $mf) +{ + $z = $a[0]->$mf; + echo "$mf is $z\n"; +} + +//Second object in array +echo "\n--> Object #2\n"; +foreach ($mandatoryFields as $mf) +{ + $z = $a[1]->$mf; + echo "$mf is $z\n"; +} + +imap_close($stream_id); + +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : basic functionality *** +Create a temporary mailbox and add 2 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- All possible arguments -- + +--> Object #1 +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- Mandatory arguments -- + +--> Object #1 +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +--> Object #2 +size is %d +uid is %d +msgno is 2 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_error.phpt b/ext/imap/tests/imap_fetch_overview_error.phpt new file mode 100644 index 000000000..fa8c18232 --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_error.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test imap_fetch_overview() function : error conditions - incorrect number of args +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : error conditions *** + +-- Testing imap_fetch_overview() function with more than expected no. of arguments -- +Create a temporary mailbox and add 2 msgs +.. mailbox '%s.phpttest' created + +Warning: Wrong parameter count for imap_fetch_overview() in %s on line %d +NULL + +-- Testing imap_fetch_overview() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for imap_fetch_overview() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation1.phpt b/ext/imap/tests/imap_fetch_overview_variation1.phpt new file mode 100644 index 000000000..a7d86b434 --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation1.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - diff data types as $stream_id arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** + +-- Testing with first argument value: int(0) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: int(1) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: int(12345) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: int(-2345) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: float(10.5) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: float(-10.5) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: float(123456789000) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: float(1.23456789E-9) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: float(0.5) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: NULL + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: NULL + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: bool(true) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: bool(false) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: bool(true) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: bool(false) + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: string(0) "" + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: string(0) "" + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: array(0) { +} + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: string(6) "string" + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: string(6) "string" + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: string(11) "hello world" + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: object(classA)#1 (0) { +} + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: NULL + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Testing with first argument value: NULL + +Warning: imap_fetch_overview(): supplied argument is not a valid imap resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation2.phpt b/ext/imap/tests/imap_fetch_overview_variation2.phpt new file mode 100644 index 000000000..18f2af3be --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation2.phpt @@ -0,0 +1,243 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - diff data types as $msg_no arg +--SKIPIF-- + +--FILE-- +>> argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + array(), + + // string data +/*19*/ "string", + 'string', + $heredoc, + + // object data +/*22*/ new classA(), + + // undefined data +/*23*/ @$undefined_var, + + // unset data +/*24*/ @$unset_var, + + // resource variable +/*25*/ $fp +); + +// loop through each element of $inputs to check the behavior of imap_fetch_overview() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Testing with second argument value: "; + var_dump($input); + $overview = imap_fetch_overview($stream_id, $input); + if (!$overview) { + echo imap_last_error() . "\n"; + } else { + foreach ($mandatoryFields as $mf) + { + $z = $overview[0]->$mf; + echo "$mf is $z\n"; + } + } + $iterator++; +}; + +fclose($fp); + +// clear the error stack +imap_errors(); +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Testing with second argument value: int(0) +Sequence out of range + +-- Testing with second argument value: int(1) +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- Testing with second argument value: int(12345) +Sequence out of range + +-- Testing with second argument value: int(-2345) +Syntax error in sequence + +-- Testing with second argument value: float(10.5) +Sequence out of range + +-- Testing with second argument value: float(-10.5) +Syntax error in sequence + +-- Testing with second argument value: float(123456789000) +Sequence out of range + +-- Testing with second argument value: float(1.23456789E-9) +Sequence syntax error + +-- Testing with second argument value: float(0.5) +Sequence out of range + +-- Testing with second argument value: NULL +Sequence out of range + +-- Testing with second argument value: NULL +Sequence out of range + +-- Testing with second argument value: bool(true) +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- Testing with second argument value: bool(false) +Sequence out of range + +-- Testing with second argument value: bool(true) +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- Testing with second argument value: bool(false) +Sequence out of range + +-- Testing with second argument value: string(0) "" +Sequence out of range + +-- Testing with second argument value: string(0) "" +Sequence out of range + +-- Testing with second argument value: array(0) { +} + +Notice: Array to string conversion in %s on line %d +Syntax error in sequence + +-- Testing with second argument value: string(6) "string" +Syntax error in sequence + +-- Testing with second argument value: string(6) "string" +Syntax error in sequence + +-- Testing with second argument value: string(11) "hello world" +Syntax error in sequence + +-- Testing with second argument value: object(classA)#1 (0) { +} +Syntax error in sequence + +-- Testing with second argument value: NULL +Syntax error in sequence + +-- Testing with second argument value: NULL +Syntax error in sequence + +-- Testing with second argument value: resource(%d) of type (stream) +Syntax error in sequence +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation3.phpt b/ext/imap/tests/imap_fetch_overview_variation3.phpt new file mode 100644 index 000000000..4ec4fae6e --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation3.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - FT_UID option +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +Testing with option value:string(1) "1" +imap_fetch_overview() returns an object + +Testing with option value:bool(true) +imap_fetch_overview() returns an object + +Testing with option value:float(1) +imap_fetch_overview() returns an object + +Testing with option value:float(1) +imap_fetch_overview() returns an object + +Testing with option value:int(%d) + +Warning: imap_fetch_overview(): invalid value for the options parameter in %s on line %d + +Testing with option value:int(-%d) + +Warning: imap_fetch_overview(): invalid value for the options parameter in %s on line %d +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation4.phpt b/ext/imap/tests/imap_fetch_overview_variation4.phpt new file mode 100644 index 000000000..a5c266631 --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation4.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - different resources as $stream_id +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** + +-- File Resource opened with fopen() -- +resource(%d) of type (stream) + +Warning: imap_fetch_overview(): supplied resource is not a valid imap resource in %s on line %d +bool(false) + +-- Directory Resource opened with opendir() -- +resource(%d) of type (stream) + +Warning: imap_fetch_overview(): supplied resource is not a valid imap resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation5.phpt b/ext/imap/tests/imap_fetch_overview_variation5.phpt new file mode 100644 index 000000000..79861be7a --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation5.phpt @@ -0,0 +1,149 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - $msg_no argument +--SKIPIF-- + +--FILE-- +$mf; + echo "$mf is $z\n"; + } + } + } +} + +// clear error stack +imap_errors(); +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** +Create a temporary mailbox and add 3 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- $msg_no is 0 -- +Sequence out of range + +-- $msg_no is 4 -- +Sequence out of range + +-- $msg_no is 4 -- +Sequence out of range + +-- $msg_no is 2 -- + +size is %d +uid is %d +msgno is 2 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- $msg_no is 1,3 -- + +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +size is %d +uid is %d +msgno is 3 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +-- $msg_no is 1, 2 -- +Syntax error in sequence + +-- $msg_no is 1:3 -- + +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +size is %d +uid is %d +msgno is 2 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 + +size is %d +uid is %d +msgno is 3 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 +===DONE=== diff --git a/ext/imap/tests/imap_fetch_overview_variation6.phpt b/ext/imap/tests/imap_fetch_overview_variation6.phpt new file mode 100644 index 000000000..fda937e24 --- /dev/null +++ b/ext/imap/tests/imap_fetch_overview_variation6.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test imap_fetch_overview() function : usage variations - multipart message +--SKIPIF-- + +--FILE-- + Object #1\n"; +foreach ($mandatoryFields as $mf) +{ + $z = $a[0]->$mf; + echo "$mf is $z\n"; +} + + + + +/** + * Create a multipart message with subparts + * + * @param resource $imap_stream + * @param string $mailbox + */ +function create_multipart_message($imap_stream, $mailbox) { + global $users, $domain; + $envelope["from"]= "foo@anywhere.com"; + $envelope["to"] = "$users[0]@$domain"; + $envelope["subject"] = "Test msg 1"; + + $part1["type"] = TYPEMULTIPART; + $part1["subtype"] = "mixed"; + + $part2["type"] = TYPETEXT; + $part2["subtype"] = "plain"; + $part2["description"] = "imap_mail_compose() function"; + $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx"; + + $part3["type"] = TYPETEXT; + $part3["subtype"] = "plain"; + $part3["description"] = "Example"; + $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"; + + $file_handle = fopen(__FILE__, 'r+'); + $file_size = 1; + + $part4["type"] = TYPEAPPLICATION; + $part4["encoding"] = ENCBASE64; + $part4["subtype"] = "octet-stream"; + $part4["description"] = 'Test'; + $part4['disposition.type'] = 'attachment'; + $part4['disposition'] = array ('filename' => 'Test'); + $part4['type.parameters'] = array('name' => 'Test'); + $part4["contents.data"] = base64_encode(fread($file_handle, 1)); + + $body[1] = $part1; + $body[2] = $part2; + $body[3] = $part3; + $body[4] = $part4; + + $msg = imap_mail_compose($envelope, $body); + + if (imap_append($imap_stream, $mailbox, $msg) === false) { + echo imap_last_error() . "\n"; + echo "TEST FAILED : could not append new message to mailbox '$mailbox'\n"; + exit; + } +} + +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetch_overview() : usage variations *** +Create a temporary mailbox and add 0 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +--> Object #1 +size is %d +uid is %d +msgno is 1 +recent is %d +flagged is 0 +answered is 0 +deleted is 0 +seen is 0 +draft is 0 +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_basic.phpt b/ext/imap/tests/imap_fetchbody_basic.phpt new file mode 100644 index 000000000..7783ee131 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_basic.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test imap_fetchbody() function : basic functionality +--SKIPIF-- + +--FILE-- +seen ); + +echo "option == FD_INTERNAL\n"; +var_dump( imap_fetchbody($stream_id, 3, $section, FT_INTERNAL) ); + +// Calling imap_fetchbody() with mandatory arguments +echo "\n-- Mandatory arguments --\n"; +var_dump( imap_fetchbody($stream_id, 1, $section) ); +$overview = imap_fetch_overview($stream_id, 1); +echo "Seen Flag: "; +var_dump( $overview[0]->seen ); + +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : basic functionality *** +Create a temporary mailbox and add 3 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- All possible arguments -- +Option == FD_UID +string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy" +Option == FD_PEEK +string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy" +Seen Flag: int(%d) +option == FD_INTERNAL +string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy" + +-- Mandatory arguments -- +string(36) "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy" +Seen Flag: int(%d) +===DONE=== \ No newline at end of file diff --git a/ext/imap/tests/imap_fetchbody_error.phpt b/ext/imap/tests/imap_fetchbody_error.phpt new file mode 100644 index 000000000..b6bf1eb8f --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_error.phpt @@ -0,0 +1,57 @@ +--TEST-- +Test imap_fetchbody() function : error conditions - incorrect number of args +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : error conditions *** + +-- Testing imap_fetchbody() function with more than expected no. of arguments -- +Create a temporary mailbox and add 1 msgs +.. mailbox '%s.phpttest' created + +Warning: Wrong parameter count for imap_fetchbody() in %s on line %d +NULL + +-- Testing imap_fetchbody() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for imap_fetchbody() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation1.phpt b/ext/imap/tests/imap_fetchbody_variation1.phpt new file mode 100644 index 000000000..3248ff2f1 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation1.phpt @@ -0,0 +1,219 @@ +--TEST-- +Test imap_fetchbody() function : usage variation - diff data types as $stream_id arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** + +-- Iteration 1 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: imap_fetchbody(): supplied argument is not a valid imap resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation2.phpt b/ext/imap/tests/imap_fetchbody_variation2.phpt new file mode 100644 index 000000000..8c5e60f38 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation2.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test imap_fetchbody() function : usage variation - diff data types as $msg_no arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 2 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 3 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 12 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 13 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 14 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 15 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 22 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 23 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation3.phpt b/ext/imap/tests/imap_fetchbody_variation3.phpt new file mode 100644 index 000000000..2a017b533 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation3.phpt @@ -0,0 +1,217 @@ +--TEST-- +Test imap_fetchbody() function : usage variation - diff data types as $section arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '%s.phpttest' created + +-- Iteration 1 -- +string(71) "From: %s +To: %s +Subject: test1 + +" + +-- Iteration 2 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 3 -- +string(0) "" + +-- Iteration 4 -- +string(0) "" + +-- Iteration 5 -- +string(0) "" + +-- Iteration 6 -- +string(0) "" + +-- Iteration 7 -- +string(0) "" + +-- Iteration 8 -- +string(0) "" + +-- Iteration 9 -- +string(0) "" + +-- Iteration 10 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 11 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 12 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 13 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 14 -- +string(%d) "1: this is a test message, please ignore%a" + +-- Iteration 15 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 16 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 17 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 18 -- + +Notice: Array to string conversion in %s on line %d +string(0) "" + +-- Iteration 19 -- +string(0) "" + +-- Iteration 20 -- +string(0) "" + +-- Iteration 21 -- +string(0) "" + +-- Iteration 22 -- +string(0) "" + +-- Iteration 23 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" + +-- Iteration 24 -- +string(%d) "From: %s +To: %s +Subject: test1 + +1: this is a test message, please ignore%a" +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation4.phpt b/ext/imap/tests/imap_fetchbody_variation4.phpt new file mode 100644 index 000000000..6b9579abd --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation4.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test imap_fetchbody() function : usage variations - FT_UID option +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- +FT_UID valid + +-- Iteration 2 -- +FT_UID valid + +-- Iteration 3 -- +FT_UID valid + +-- Iteration 4 -- +FT_UID valid + +-- Iteration 5 -- + +Warning: imap_fetchbody(): invalid value for the options parameter in %s on line %d +FT_UID not valid + +-- Iteration 6 -- + +Warning: imap_fetchbody(): invalid value for the options parameter in %s on line %d +FT_UID not valid +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation5.phpt b/ext/imap/tests/imap_fetchbody_variation5.phpt new file mode 100644 index 000000000..f01bfb405 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation5.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test imap_fetchbody() function : usage variation - different resources as $stream_id arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** + +-- File Resource opened with fopen() -- +resource(%d) of type (stream) + +Warning: Wrong parameter count for imap_fetchbody() in %s on line %d +NULL + +-- Directory Resource opened with opendir() -- +resource(%d) of type (stream) + +Warning: Wrong parameter count for imap_fetchbody() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_fetchbody_variation6.phpt b/ext/imap/tests/imap_fetchbody_variation6.phpt new file mode 100644 index 000000000..8f6f78095 --- /dev/null +++ b/ext/imap/tests/imap_fetchbody_variation6.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test imap_fetchbody() function : usage variations - $msg_no arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchbody() : usage variations *** +Create a temporary mailbox and add 3 msgs +.. mailbox '%s.phpttest' created + +-- $msg_no is 0 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + + +-- $msg_no is 4 -- + +Warning: imap_fetchbody(): Bad message number in %s on line %d +bool(false) + + +-- $msg_no is 1,3 -- +string(%d) "1: this is a test message, please ignore%a" + +-- $msg_no is 1:3 -- +string(%d) "1: this is a test message, please ignore%a" +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_basic.phpt b/ext/imap/tests/imap_fetchheader_basic.phpt new file mode 100644 index 000000000..2e47b0ce5 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_basic.phpt @@ -0,0 +1,83 @@ +--TEST-- +Test imap_fetchheader() function : basic functions +--SKIPIF-- + +--FILE-- + FT_UID, 'FT_INTERNAL' => FT_INTERNAL, + 'FT_PREFETCHTEXT' => FT_PREFETCHTEXT); + +// Calling imap_fetchheader() with all possible arguments +echo "\n-- All possible arguments --\n"; +foreach ($options as $key => $option) { + echo "-- Option is $key --\n"; + if ($key == 'FT_UID') { + $msg_uid = imap_uid($stream_id, $msg_no); + var_dump(imap_fetchheader($stream_id, $msg_uid, $option)); + } else { + var_dump(imap_fetchheader($stream_id, $msg_no, $option)); + } +} + +// Calling imap_fetchheader() with mandatory arguments +echo "\n-- Mandatory arguments --\n"; +var_dump( imap_fetchheader($stream_id, $msg_no) ); +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchheader() : basic functionality *** +Create a temporary mailbox and add 1 msgs +.. mailbox '%s.phpttest' created + +-- All possible arguments -- +-- Option is FT_UID -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: %s; %s + +" +-- Option is FT_INTERNAL -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: %s; %s + +" +-- Option is FT_PREFETCHTEXT -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: %s; %s + +" + +-- Mandatory arguments -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: %s; %s + +" +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_error.phpt b/ext/imap/tests/imap_fetchheader_error.phpt new file mode 100644 index 000000000..7d1e84ef1 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_error.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test imap_fetchheader() function : error conditions - incorrect number of args +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetchheader() : error conditions *** + +-- Testing imap_fetchheader() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for imap_fetchheader() in %s on line %d +NULL + +-- Testing imap_fetchheader() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for imap_fetchheader() in %s on line %d +NULL +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_variation1.phpt b/ext/imap/tests/imap_fetchheader_variation1.phpt new file mode 100644 index 000000000..f43e07d80 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_variation1.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test imap_fetchheader() function : usage variations - diff data types as $stream_id arg +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $stream_id argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + + // string data +/*18*/ "string", + 'string', + $heredoc, + + // array data +/*21*/ array(), + $index_array, + $assoc_array, + array('foo', $index_array, $assoc_array), + + + // object data +/*25*/ new classA(), + + // undefined data +/*26*/ @$undefined_var, + + // unset data +/*27*/ @$unset_var, +); + +// loop through each element of $inputs to check the behavior of imap_fetchheader() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( imap_fetchheader($input, $msg_no) ); + $iterator++; +}; +?> +===DONE=== +--EXPECTF-- +*** Testing imap_fetchheader() : usage variations *** + +-- Iteration 1 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 26 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) + +-- Iteration 27 -- + +Warning: imap_fetchheader(): supplied argument is not a valid imap resource in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_variation2.phpt b/ext/imap/tests/imap_fetchheader_variation2.phpt new file mode 100644 index 000000000..65d5d8557 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_variation2.phpt @@ -0,0 +1,292 @@ +--TEST-- +Test imap_fetchheader() function : usage variations - diff data types for $msg_no arg +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +// get a resource variable +$fp = fopen(__FILE__, "r"); + +// unexpected values to be passed to $msg_no argument +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 12.3456789000e10, + 12.3456789000E-10, + .5, + + // null data +/*10*/ NULL, + null, + + // boolean data +/*12*/ true, + false, + TRUE, + FALSE, + + // empty data +/*16*/ "", + '', + + // string data +/*18*/ "string", + 'string', + $heredoc, + + // array data +/*21*/ array(), + $index_array, + $assoc_array, + array('foo', $index_array, $assoc_array), + + + // object data +/*25*/ new classA(), + + // undefined data +/*26*/ @$undefined_var, + + // unset data +/*27*/ @$unset_var, + + // resource variable +/*28*/ $fp +); + +// loop through each element of $inputs to check the behavior of imap_fetchheader() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( imap_fetchheader($stream_id, $input) ); + $iterator++; +}; + +fclose($fp); +?> +===DONE=== +--CLEAN-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetchheader() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 2 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 3 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 12 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 13 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 14 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 15 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 22 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 23 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 24 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 25 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- Iteration 26 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 27 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + +-- Iteration 28 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_variation3.phpt b/ext/imap/tests/imap_fetchheader_variation3.phpt new file mode 100644 index 000000000..e21c1a966 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_variation3.phpt @@ -0,0 +1,77 @@ +--TEST-- +Test imap_fetchheader() function : usage variations - FT_UID option +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchheader() : usage variations *** +Create a temporary mailbox and add 1 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- Iteration 1 -- +FT_UID valid + +-- Iteration 2 -- +FT_UID valid + +-- Iteration 3 -- +FT_UID valid + +-- Iteration 4 -- +FT_UID valid + +-- Iteration 5 -- + +Warning: imap_fetchheader(): invalid value for the options parameter in %s on line %d +FT_UID not valid + +-- Iteration 6 -- + +Warning: imap_fetchheader(): invalid value for the options parameter in %s on line %d +FT_UID not valid +===DONE=== diff --git a/ext/imap/tests/imap_fetchheader_variation4.phpt b/ext/imap/tests/imap_fetchheader_variation4.phpt new file mode 100644 index 000000000..090fa217c --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_variation4.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test imap_fetchheader() function : usage variations - diff resource types as $stream_id +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing imap_fetchheader() : usage variations *** + +-- File Resource opened with fopen() -- +resource(%d) of type (stream) + +Warning: imap_fetchheader(): supplied resource is not a valid imap resource in %s on line %d +bool(false) + +-- Directory Resource opened with opendir() -- +resource(%d) of type (stream) + +Warning: imap_fetchheader(): supplied resource is not a valid imap resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/imap/tests/imap_fetchheader_variation5.phpt b/ext/imap/tests/imap_fetchheader_variation5.phpt new file mode 100644 index 000000000..f0f5fd597 --- /dev/null +++ b/ext/imap/tests/imap_fetchheader_variation5.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test imap_fetchheader() function : usage variations - $msg_no argument +--SKIPIF-- + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing imap_fetchheader() : usage variations *** +Create a temporary mailbox and add 3 msgs +.. mailbox '{localhost/norsh}INBOX.phpttest' created + +-- $msg_no is 0 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + + +-- $msg_no is 4 -- + +Warning: imap_fetchheader(): Bad message number in %s on line %d +bool(false) + + +-- $msg_no is 1,3 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" + +-- $msg_no is 1:3 -- +string(%d) "From: foo@anywhere.com +Subject: Test msg 1 +To: %s +MIME-Version: 1.0 +Content-Type: MULTIPART/mixed; BOUNDARY="%s" + +" +===DONE=== diff --git a/ext/imap/tests/imap_include.inc b/ext/imap/tests/imap_include.inc new file mode 100644 index 000000000..3f9845476 --- /dev/null +++ b/ext/imap/tests/imap_include.inc @@ -0,0 +1,150 @@ +name == $mailbox) { + exit ("TEST FAILED : Mailbox '$mailbox' already exists\n"); + } + } + } + + if (imap_createmailbox($imap_stream, $mailbox) === false) { + return false; + } + + // Add number of test msgs requested + if ($message_count > 0) { + populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type); + } + + return $mailbox; +} + +/** + * Populate a mailbox with generic emails + * + * @param resource $imap_stream + * @param string $mailbox + */ +function populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type = "simple"){ + + global $users, $domain; + + for($i = 1; $i <= $message_count; $i++) { + if ($msg_type == "simple") { + $msg = "From: foo@anywhere.com\r\n" + . "To: $users[0]@$domain\r\n" + . "Subject: test$i\r\n" + . "\r\n" + . "$i: this is a test message, please ignore\r\n"; + } else { + $envelope["from"]= "foo@anywhere.com"; + $envelope["to"] = "$users[0]@$domain"; + $envelope["subject"] = "Test msg $i"; + + $part1["type"] = TYPEMULTIPART; + $part1["subtype"] = "mixed"; + + $part2["type"] = TYPETEXT; + $part2["subtype"] = "plain"; + $part2["description"] = "imap_mail_compose() function"; + $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx"; + + $part3["type"] = TYPETEXT; + $part3["subtype"] = "plain"; + $part3["description"] = "Example"; + $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"; + + $part4["type"] = TYPETEXT; + $part4["subtype"] = "plain"; + $part4["description"] = "Return Values"; + $part4["contents.data"] = "message 3:zzzzzzzzzzzzzzzzzzzzzzzzzz"; + + $body[1] = $part1; + $body[2] = $part2; + $body[3] = $part3; + $body[4] = $part4; + + $msg = imap_mail_compose($envelope, $body); + } + + imap_append($imap_stream, $mailbox, $msg); + } +} + +/** + * Get the mailbox name from a mailbox decription, i.e strip off server details. + * + * @param string mailbox complete mailbox name + * @return mailbox name + */ +function get_mailbox_name($mailbox){ + + if (preg_match('/\{.*?\}(.*)/', $mailbox, $match) != 1) { + echo "Unrecpognized mailbox name\n"; + return false; + } + + return $match[1]; +} + +?> diff --git a/ext/imap/tests/skipif.inc b/ext/imap/tests/skipif.inc new file mode 100644 index 000000000..df69c4382 --- /dev/null +++ b/ext/imap/tests/skipif.inc @@ -0,0 +1,16 @@ + diff --git a/ext/interbase/ibase_blobs.c b/ext/interbase/ibase_blobs.c index ce994aed7..035fbd6ed 100644 --- a/ext/interbase/ibase_blobs.c +++ b/ext/interbase/ibase_blobs.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_blobs.c,v 1.9.2.1.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: ibase_blobs.c,v 1.9.2.1.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/interbase/ibase_events.c b/ext/interbase/ibase_events.c index 6a9f13d50..f228e48d7 100644 --- a/ext/interbase/ibase_events.c +++ b/ext/interbase/ibase_events.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_events.c,v 1.8.2.1.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: ibase_events.c,v 1.8.2.1.2.5 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -260,7 +260,7 @@ PHP_FUNCTION(ibase_set_event_handler) * link resource id (int) as arguments. The value returned from the function is * used to determine if the event handler should remain set. */ - + char *cb_name; zval **args[17], **cb_arg; ibase_db_link *ib_link; ibase_event *event; @@ -268,8 +268,8 @@ PHP_FUNCTION(ibase_set_event_handler) int link_res_id; RESET_ERRMSG; - - /* no more than 15 events */ + + /* Minimum and maximum number of arguments allowed */ if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 17) { WRONG_PARAM_COUNT; } @@ -280,6 +280,12 @@ PHP_FUNCTION(ibase_set_event_handler) /* get a working link */ if (Z_TYPE_PP(args[0]) != IS_STRING) { + /* resource, callback, event_1 [, ... event_15] + * No more than 15 events + */ + if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 17) { + WRONG_PARAM_COUNT; + } cb_arg = args[1]; i = 2; @@ -291,8 +297,10 @@ PHP_FUNCTION(ibase_set_event_handler) link_res_id = Z_LVAL_PP(args[0]); } else { - - if (ZEND_NUM_ARGS() > 16) { + /* callback, event_1 [, ... event_15] + * No more than 15 events + */ + if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 16) { WRONG_PARAM_COUNT; } @@ -304,11 +312,12 @@ PHP_FUNCTION(ibase_set_event_handler) } /* get the callback */ - if (!zend_is_callable(*cb_arg, 0, NULL)) { - _php_ibase_module_error("Callback argument %s is not a callable function" - TSRMLS_CC, Z_STRVAL_PP(cb_arg)); + if (!zend_is_callable(*cb_arg, 0, &cb_name)) { + _php_ibase_module_error("Callback argument %s is not a callable function" TSRMLS_CC, cb_name); + efree(cb_name); RETURN_FALSE; } + efree(cb_name); /* allocate the event resource */ event = (ibase_event *) safe_emalloc(sizeof(ibase_event), 1, 0); diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c index b1062ef95..308c89285 100644 --- a/ext/interbase/ibase_query.c +++ b/ext/interbase/ibase_query.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_query.c,v 1.23.2.1.2.11 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: ibase_query.c,v 1.23.2.1.2.13 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1819,16 +1819,17 @@ PHP_FUNCTION(ibase_execute) if (bind_n != expected_n) { php_error_docref(NULL TSRMLS_CC, (bind_n < expected_n) ? E_WARNING : E_NOTICE, "Statement expects %d arguments, %d given", expected_n, bind_n); + if (bind_n < expected_n) { break; } - - } else if (bind_n > 0) { /* have variables to bind */ - args = (zval ***) do_alloca(ZEND_NUM_ARGS() * sizeof(zval **)); + } + + /* have variables to bind */ + args = (zval ***) do_alloca((expected_n + 1) * sizeof(zval **)); - if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args)) { - break; - } + if (FAILURE == zend_get_parameters_array_ex((expected_n + 1), args)) { + break; } /* Have we used this cursor before and it's still open (exec proc has no cursor) ? */ diff --git a/ext/interbase/ibase_service.c b/ext/interbase/ibase_service.c index d3d18c848..15ccb10a2 100644 --- a/ext/interbase/ibase_service.c +++ b/ext/interbase/ibase_service.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_service.c,v 1.11.2.2.2.6 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: ibase_service.c,v 1.11.2.2.2.8 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -229,8 +229,7 @@ PHP_FUNCTION(ibase_service_attach) user, isc_spb_password, (char)plen, pass, host); if (spb_len > sizeof(buf) || spb_len == -1) { - _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%ld)" - TSRMLS_CC, spb_len); + _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%d)" TSRMLS_CC, spb_len); RETURN_FALSE; } @@ -451,8 +450,7 @@ static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operati } if (spb_len > sizeof(buf) || spb_len <= 0) { - _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%ld)" - TSRMLS_CC, spb_len); + _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%d)" TSRMLS_CC, spb_len); RETURN_FALSE; } @@ -560,8 +558,7 @@ options_argument: } if (spb_len > sizeof(buf) || spb_len == -1) { - _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%ld)" - TSRMLS_CC, spb_len); + _php_ibase_module_error("Internal error: insufficient buffer space for SPB (%d)" TSRMLS_CC, spb_len); RETURN_FALSE; } diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index 47d0d3e9a..5517f1c64 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interbase.c,v 1.225.2.4.2.8 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: interbase.c,v 1.225.2.4.2.10 2008/12/31 11:17:38 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -894,8 +894,13 @@ PHP_FUNCTION(ibase_trans) if (Z_TYPE_PP(args[i]) == IS_RESOURCE) { - ZEND_FETCH_RESOURCE2(ib_link[link_cnt], ibase_db_link *, args[i], -1, - LE_LINK, le_link, le_plink); + if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[link_cnt], ibase_db_link *, args[i], -1, LE_LINK, le_link, le_plink)) { + efree(teb); + efree(tpb); + efree(ib_link); + efree(args); + RETURN_FALSE; + } /* copy the most recent modifier string into tbp[] */ memcpy(&tpb[TPB_MAX_SIZE * link_cnt], last_tpb, TPB_MAX_SIZE); @@ -959,8 +964,10 @@ PHP_FUNCTION(ibase_trans) if (link_cnt == 0) { link_cnt = 1; - ZEND_FETCH_RESOURCE2(ib_link[0], ibase_db_link *, NULL, IBG(default_link), LE_LINK, - le_link, le_plink); + if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[0], ibase_db_link *, NULL, IBG(default_link), LE_LINK, le_link, le_plink)) { + efree(ib_link); + RETURN_FALSE; + } result = isc_start_transaction(IB_STATUS, &tr_handle, 1, &ib_link[0]->handle, tpb_len, last_tpb); } diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h index 57195e132..35889c094 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ibase_includes.h,v 1.16.2.1.2.3 2008/01/23 01:22:57 iliaa Exp $ */ +/* $Id: php_ibase_includes.h,v 1.16.2.1.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #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 4237222e5..b1d8104c9 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ibase_udf.c,v 1.9.2.1.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_ibase_udf.c,v 1.9.2.1.2.4 2008/12/31 11:17:38 sebastian Exp $ */ /** * 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 7437abff1..2307d3ccf 100644 --- a/ext/interbase/php_interbase.h +++ b/ext/interbase/php_interbase.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_interbase.h,v 1.71.2.1.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_interbase.h,v 1.71.2.1.2.3 2008/12/31 11:17:38 sebastian Exp $ */ #ifndef PHP_INTERBASE_H #define PHP_INTERBASE_H diff --git a/ext/interbase/tests/bug45373.phpt b/ext/interbase/tests/bug45373.phpt new file mode 100644 index 000000000..8ec71df15 --- /dev/null +++ b/ext/interbase/tests/bug45373.phpt @@ -0,0 +1,49 @@ +--TEST-- +Bug #45373 (php crash on query with errors in params) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(2) { + ["I"]=> + int(1) + ["C"]=> + string(32) "test table not created with isql" +} + +Notice: ibase_execute(): Statement expects 2 arguments, 3 given in %sbug45373.php on line %d +array(2) { + ["I"]=> + int(1) + ["C"]=> + string(32) "test table not created with isql" +} + +Warning: ibase_execute(): Statement expects 2 arguments, 1 given in %sbug45373.php on line %d + +Warning: ibase_fetch_assoc(): supplied argument is not a valid Firebird/InterBase result resource in %sbug45373.php on line %d +bool(false) + +Warning: Unknown: invalid statement handle in Unknown on line 0 diff --git a/ext/interbase/tests/bug45575.phpt b/ext/interbase/tests/bug45575.phpt new file mode 100644 index 000000000..ca0fa831e --- /dev/null +++ b/ext/interbase/tests/bug45575.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #45575 (Segfault with invalid non-string as event handler callback) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: ibase_set_event_handler(): Callback argument is not a callable function in %s on line %d + +Warning: ibase_set_event_handler(): Callback argument 1 is not a callable function in %s on line %d diff --git a/ext/interbase/tests/bug46247.phpt b/ext/interbase/tests/bug46247.phpt new file mode 100644 index 000000000..ffd153b5f --- /dev/null +++ b/ext/interbase/tests/bug46247.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #46247 (ibase_set_event_handler() is allowing to pass callback without event) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- + +Warning: Wrong parameter count for ibase_set_event_handler() in %s on line %d + +Warning: ibase_set_event_handler(): supplied argument is not a valid InterBase link resource in %s on line %d + +Warning: ibase_set_event_handler(): Callback argument foo is not a callable function in %s on line %d + +Warning: ibase_set_event_handler(): Callback argument foo is not a callable function in %s on line %d + +Warning: ibase_set_event_handler(): supplied argument is not a valid InterBase link resource in %s on line %d diff --git a/ext/interbase/tests/bug46543.phpt b/ext/interbase/tests/bug46543.phpt new file mode 100644 index 000000000..59e088c3d --- /dev/null +++ b/ext/interbase/tests/bug46543.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #46543 (ibase_trans() memory leaks when using wrong parameters) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: ibase_trans(): no Firebird/InterBase link resource supplied in %s on line %d + +Warning: ibase_trans(): no Firebird/InterBase link resource supplied in %s on line %d + +Warning: ibase_trans(): no Firebird/InterBase link resource supplied in %s on line %d + +Warning: ibase_trans(): supplied resource is not a valid Firebird/InterBase link resource in %s on line %d diff --git a/ext/interbase/tests/ibase_affected_rows_001.phpt b/ext/interbase/tests/ibase_affected_rows_001.phpt new file mode 100644 index 000000000..398a84c8b --- /dev/null +++ b/ext/interbase/tests/ibase_affected_rows_001.phpt @@ -0,0 +1,32 @@ +--TEST-- +ibase_affected_rows(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +int(3) +int(0) + +Warning: ibase_query(): Dynamic SQL Error SQL error code = -104 %s on line %d +int(0) diff --git a/ext/interbase/tests/ibase_close_001.phpt b/ext/interbase/tests/ibase_close_001.phpt new file mode 100644 index 000000000..25412d484 --- /dev/null +++ b/ext/interbase/tests/ibase_close_001.phpt @@ -0,0 +1,25 @@ +--TEST-- +ibase_close(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +bool(true) + +Warning: ibase_close(): %d is not a valid Firebird/InterBase link resource in %s on line %d +bool(false) + +Warning: ibase_close(): %d is not a valid Firebird/InterBase link resource in %s on line %d +bool(false) diff --git a/ext/interbase/tests/ibase_drop_db_001.phpt b/ext/interbase/tests/ibase_drop_db_001.phpt new file mode 100644 index 000000000..b5cabced5 --- /dev/null +++ b/ext/interbase/tests/ibase_drop_db_001.phpt @@ -0,0 +1,31 @@ +--TEST-- +ibase_drop_db(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (Firebird/InterBase link) +bool(true) + +Warning: ibase_drop_db(): supplied resource is not a valid Firebird/InterBase link resource in %s on line %d +bool(false) + +Warning: ibase_drop_db(): %d is not a valid Firebird/InterBase link resource in %s on line %d +bool(false) diff --git a/ext/interbase/tests/ibase_errmsg_001.phpt b/ext/interbase/tests/ibase_errmsg_001.phpt new file mode 100644 index 000000000..ad0e827f9 --- /dev/null +++ b/ext/interbase/tests/ibase_errmsg_001.phpt @@ -0,0 +1,22 @@ +--TEST-- +ibase_errmsg(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: ibase_query(): Dynamic SQL Error SQL error code = -104 %s on line %d +string(%d) "Dynamic SQL Error SQL error code = -104 %s" +bool(false) diff --git a/ext/interbase/tests/ibase_free_query_001.phpt b/ext/interbase/tests/ibase_free_query_001.phpt new file mode 100644 index 000000000..bedec7173 --- /dev/null +++ b/ext/interbase/tests/ibase_free_query_001.phpt @@ -0,0 +1,28 @@ +--TEST-- +ibase_free_query(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) + +Warning: ibase_free_query(): 11 is not a valid Firebird/InterBase query resource in %s on line %d +bool(false) + +Warning: ibase_free_query(): supplied resource is not a valid Firebird/InterBase query resource in %s on line %d +bool(false) diff --git a/ext/interbase/tests/ibase_num_fields_001.phpt b/ext/interbase/tests/ibase_num_fields_001.phpt new file mode 100644 index 000000000..510b0f6f5 --- /dev/null +++ b/ext/interbase/tests/ibase_num_fields_001.phpt @@ -0,0 +1,25 @@ +--TEST-- +ibase_num_fields(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +int(2) + +Warning: ibase_num_fields(): supplied argument is not a valid Firebird/InterBase result resource in %s on line %d +bool(false) + +Warning: Wrong parameter count for ibase_num_fields() in %s on line %d +NULL diff --git a/ext/interbase/tests/ibase_num_params_001.phpt b/ext/interbase/tests/ibase_num_params_001.phpt new file mode 100644 index 000000000..2cacc50f3 --- /dev/null +++ b/ext/interbase/tests/ibase_num_params_001.phpt @@ -0,0 +1,32 @@ +--TEST-- +ibase_num_params(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +int(2) + +Warning: Wrong parameter count for ibase_num_params() in %s on line %d +NULL + +Warning: ibase_prepare(): Dynamic SQL Error SQL error code = -206 %s in %s on line %d + +Warning: ibase_num_params(): supplied argument is not a valid Firebird/InterBase query resource in %s on line %d +bool(false) diff --git a/ext/interbase/tests/ibase_param_info_001.phpt b/ext/interbase/tests/ibase_param_info_001.phpt new file mode 100644 index 000000000..3dd92ba7a --- /dev/null +++ b/ext/interbase/tests/ibase_param_info_001.phpt @@ -0,0 +1,55 @@ +--TEST-- +ibase_param_info(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(10) { + [0]=> + string(0) "" + ["name"]=> + string(0) "" + [1]=> + string(0) "" + ["alias"]=> + string(0) "" + [2]=> + string(0) "" + ["relation"]=> + string(0) "" + [3]=> + string(1) "4" + ["length"]=> + string(1) "4" + [4]=> + string(7) "INTEGER" + ["type"]=> + string(7) "INTEGER" +} +--- +bool(false) +--- + +Warning: Wrong parameter count for ibase_param_info() in %s on line %d +NULL + +Warning: Unknown: invalid statement handle in Unknown on line 0 diff --git a/ext/interbase/tests/ibase_rollback_001.phpt b/ext/interbase/tests/ibase_rollback_001.phpt new file mode 100644 index 000000000..3cde5e9d4 --- /dev/null +++ b/ext/interbase/tests/ibase_rollback_001.phpt @@ -0,0 +1,41 @@ +--TEST-- +ibase_rollback(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(1) { + [0]=> + int(3) +} +bool(true) +array(1) { + [0]=> + int(0) +} +bool(true) + +Warning: ibase_rollback(): invalid transaction handle (expecting explicit transaction start) in %s on line %d +bool(false) diff --git a/ext/interbase/tests/ibase_trans_001.phpt b/ext/interbase/tests/ibase_trans_001.phpt new file mode 100644 index 000000000..cceb60e9a --- /dev/null +++ b/ext/interbase/tests/ibase_trans_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +ibase_trans(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (Firebird/InterBase transaction) +resource(%d) of type (Firebird/InterBase transaction) +bool(true) +bool(true) diff --git a/ext/interbase/tests/ibase_trans_002.phpt b/ext/interbase/tests/ibase_trans_002.phpt new file mode 100644 index 000000000..be7c073ca --- /dev/null +++ b/ext/interbase/tests/ibase_trans_002.phpt @@ -0,0 +1,34 @@ +--TEST-- +ibase_trans(): Basic operations +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(1) +array(2) { + ["I"]=> + int(100) + ["C"]=> + string(3) "100" +} diff --git a/ext/interbase/tests/interbase.inc b/ext/interbase/tests/interbase.inc index eea3bebe7..3254ace95 100755 --- a/ext/interbase/tests/interbase.inc +++ b/ext/interbase/tests/interbase.inc @@ -1,4 +1,4 @@ -c, NULL); - if (d > LONG_MAX || d < -LONG_MAX) { + if (d > LONG_MAX || d < LONG_MIN) { ZVAL_DOUBLE(*z, d); } else { ZVAL_LONG(*z, (long)d); @@ -494,9 +494,7 @@ JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC) } */ case -7: - if (type != -1 && - (JSON(the_stack)[JSON(the_top)] == MODE_OBJECT || - JSON(the_stack)[JSON(the_top)] == MODE_ARRAY)) + if (type != -1 && JSON(the_stack)[JSON(the_top)] == MODE_OBJECT) { zval *mval; smart_str_0(&buf); @@ -566,9 +564,7 @@ JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC) */ case -5: { - if (type != -1 && - (JSON(the_stack)[JSON(the_top)] == MODE_OBJECT || - JSON(the_stack)[JSON(the_top)] == MODE_ARRAY)) + if (type != -1 && JSON(the_stack)[JSON(the_top)] == MODE_ARRAY) { zval *mval; smart_str_0(&buf); diff --git a/ext/json/json.c b/ext/json/json.c index e7bb805e7..826d36751 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: json.c,v 1.9.2.21 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: json.c,v 1.9.2.26 2009/02/12 00:36:23 scottmac Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -84,7 +84,7 @@ static PHP_MINFO_FUNCTION(json) /* }}} */ static void json_encode_r(smart_str *buf, zval *val TSRMLS_DC); -static void json_escape_string(smart_str *buf, char *s, int len); +static void json_escape_string(smart_str *buf, char *s, int len TSRMLS_DC); static int json_determine_array_type(zval **val TSRMLS_DC) /* {{{ */ { @@ -181,6 +181,9 @@ static void json_encode_array(smart_str *buf, zval **val TSRMLS_DC) { /* {{{ */ if (i == HASH_KEY_IS_STRING) { if (key[0] == '\0' && Z_TYPE_PP(val) == IS_OBJECT) { /* Skip protected and private members. */ + if (tmp_ht) { + tmp_ht->nApplyCount--; + } continue; } @@ -190,7 +193,7 @@ static void json_encode_array(smart_str *buf, zval **val TSRMLS_DC) { /* {{{ */ need_comma = 1; } - json_escape_string(buf, key, key_len - 1); + json_escape_string(buf, key, key_len - 1 TSRMLS_CC); smart_str_appendc(buf, ':'); json_encode_r(buf, *data TSRMLS_CC); @@ -230,7 +233,7 @@ static void json_encode_array(smart_str *buf, zval **val TSRMLS_DC) { /* {{{ */ #define REVERSE16(us) (((us & 0xf) << 12) | (((us >> 4) & 0xf) << 8) | (((us >> 8) & 0xf) << 4) | ((us >> 12) & 0xf)) -static void json_escape_string(smart_str *buf, char *s, int len) /* {{{ */ +static void json_escape_string(smart_str *buf, char *s, int len TSRMLS_DC) /* {{{ */ { int pos = 0; unsigned short us; @@ -251,8 +254,14 @@ static void json_escape_string(smart_str *buf, char *s, int len) /* {{{ */ { efree(utf16); } - - smart_str_appendl(buf, "\"\"", 2); + if(len < 0) { + if(!PG(display_errors)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid UTF-8 sequence in argument"); + } + smart_str_appendl(buf, "null", 4); + } else { + smart_str_appendl(buf, "\"\"", 2); + } return; } @@ -369,7 +378,7 @@ static void json_encode_r(smart_str *buf, zval *val TSRMLS_DC) /* {{{ */ } break; case IS_STRING: - json_escape_string(buf, Z_STRVAL_P(val), Z_STRLEN_P(val)); + json_escape_string(buf, Z_STRVAL_P(val), Z_STRLEN_P(val) TSRMLS_CC); break; case IS_ARRAY: case IS_OBJECT: @@ -470,13 +479,7 @@ static PHP_FUNCTION(json_decode) RETURN_DOUBLE(d); } } - if (parameter_len > 1 && *parameter == '"' && parameter[parameter_len-1] == '"') { - RETURN_STRINGL(parameter+1, parameter_len-2, 1); - } else if (*parameter == '{' || *parameter == '[') { /* invalid JSON string */ RETURN_NULL(); - } else { - RETURN_STRINGL(parameter, parameter_len, 1); - } } } /* }}} */ diff --git a/ext/json/php_json.h b/ext/json/php_json.h index 27ef7a0ac..13aab3c62 100644 --- a/ext/json/php_json.h +++ b/ext/json/php_json.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_json.h,v 1.8.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_json.h,v 1.8.2.4 2008/12/31 11:17:38 sebastian Exp $ */ #ifndef PHP_JSON_H #define PHP_JSON_H diff --git a/ext/json/tests/001.phpt b/ext/json/tests/001.phpt index 4c9f918b4..02d43c424 100644 --- a/ext/json/tests/001.phpt +++ b/ext/json/tests/001.phpt @@ -23,49 +23,49 @@ var_dump(json_decode('{ "": { "": "" } }')); var_dump(json_decode('{ "": { "": "" }')); var_dump(json_decode('{ "": "": "" } }')); -echo "Done\n"; ?> +===DONE=== --EXPECTF-- Warning: json_decode() expects at least 1 parameter, 0 given in %s on line %d NULL NULL NULL NULL -string(1) "." -string(1) "." -string(3) "" -string(1) ";" -string(12) "руÑÑиш" -string(4) "blah" NULL -object(stdClass)#1 (1) { +NULL +NULL +NULL +NULL +NULL +NULL +object(stdClass)#%d (1) { ["test"]=> - object(stdClass)#2 (1) { + object(stdClass)#%d (1) { ["foo"]=> string(3) "bar" } } -object(stdClass)#1 (1) { +object(stdClass)#%d (1) { ["test"]=> - object(stdClass)#2 (1) { + object(stdClass)#%d (1) { ["foo"]=> string(0) "" } } -object(stdClass)#1 (1) { +object(stdClass)#%d (1) { ["_empty_"]=> - object(stdClass)#2 (1) { + object(stdClass)#%d (1) { ["foo"]=> string(0) "" } } -object(stdClass)#1 (1) { +object(stdClass)#%d (1) { ["_empty_"]=> - object(stdClass)#2 (1) { + object(stdClass)#%d (1) { ["_empty_"]=> string(0) "" } } NULL NULL -Done +===DONE=== diff --git a/ext/json/tests/bug41567.phpt b/ext/json/tests/bug41567.phpt index 5a141003e..a253a47b7 100644 --- a/ext/json/tests/bug41567.phpt +++ b/ext/json/tests/bug41567.phpt @@ -1,5 +1,7 @@ --TEST-- Bug #41567 (json_encode() double conversion is inconsistent with PHP) +--INI-- +precision=14 --SKIPIF-- --FILE-- @@ -10,8 +12,6 @@ var_dump(json_decode($a)); echo "Done\n"; ?> ---INI-- -precision=14 --EXPECT-- float(123456789.12345) Done diff --git a/ext/json/tests/bug42090.phpt b/ext/json/tests/bug42090.phpt index bccd28aba..9e5b3317e 100644 --- a/ext/json/tests/bug42090.phpt +++ b/ext/json/tests/bug42090.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug#42090 (json_decode causes segmentation fault) +Bug #42090 (json_decode causes segmentation fault) --SKIPIF-- --FILE-- @@ -16,10 +16,9 @@ var_dump( ?> --EXPECT-- string(0) "" -string(5) "".."." -string(1) """ -string(2) """" +NULL +NULL +NULL string(4) ""\""" string(1) """ string(2) """" - diff --git a/ext/json/tests/bug43941.phpt b/ext/json/tests/bug43941.phpt new file mode 100644 index 000000000..0f86d1dfa --- /dev/null +++ b/ext/json/tests/bug43941.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #43941 (json_encode() invalid UTF-8) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +string(5) ""abc"" +string(4) "null" +string(4) "null" +string(17) "[null,null,"abc"]" +Done + diff --git a/ext/json/tests/bug46215.phpt b/ext/json/tests/bug46215.phpt new file mode 100644 index 000000000..0ac460cc1 --- /dev/null +++ b/ext/json/tests/bug46215.phpt @@ -0,0 +1,29 @@ +--TEST-- +Bug #46215 (json_encode mutates its parameter and has some class-specific state) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +foo Object +( + [a:protected] => Array + ( + ) + +) diff --git a/ext/json/tests/bug46944.phpt b/ext/json/tests/bug46944.phpt new file mode 100644 index 000000000..812a54887 --- /dev/null +++ b/ext/json/tests/bug46944.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #46944 (json_encode() doesn't handle 3 byte utf8 correctly) +--SKIPIF-- + +--FILE-- +> 2); + $second = 0x8f|($i & 3) << 4; + $string = sprintf("aa%c%c\xbf\xbdzz", $first, $second); + echo json_encode($string) . "\n"; +} + + +echo "Done\n"; +?> +--EXPECT-- +"aa\ud83f\udffdzz" +"aa\ud87f\udffdzz" +"aa\ud8bf\udffdzz" +"aa\ud8ff\udffdzz" +"aa\ud93f\udffdzz" +"aa\ud97f\udffdzz" +"aa\ud9bf\udffdzz" +"aa\ud9ff\udffdzz" +"aa\uda3f\udffdzz" +"aa\uda7f\udffdzz" +"aa\udabf\udffdzz" +"aa\udaff\udffdzz" +"aa\udb3f\udffdzz" +"aa\udb7f\udffdzz" +"aa\udbbf\udffdzz" +"aa\udbff\udffdzz" +Done diff --git a/ext/json/tests/fail001.phpt b/ext/json/tests/fail001.phpt index 525bc048c..1bf9f1210 100644 --- a/ext/json/tests/fail001.phpt +++ b/ext/json/tests/fail001.phpt @@ -24,7 +24,7 @@ $tests = array('"A JSON payload should be an object or array, not a string."', '["Illegal backslash escape: \\x15"]', '["Illegal backslash escape: \\\'"]', '["Illegal backslash escape: \\017"]', - '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]', + '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]', '{"Missing colon" null}', '{"Double colon":: null}', '{"Comma instead of colon", null}', @@ -128,7 +128,7 @@ AS OBJECT NULL AS ARRAY NULL -Testing: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] +Testing: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] AS OBJECT NULL AS ARRAY diff --git a/ext/json/utf8_decode.c b/ext/json/utf8_decode.c index cea1f8cec..2d0422bed 100644 --- a/ext/json/utf8_decode.c +++ b/ext/json/utf8_decode.c @@ -165,7 +165,7 @@ utf8_decode_next(json_utf8_decode *utf8) /* Three continuation (65536 to 1114111) */ - if ((c & 0xF1) == 0xF0) { + if ((c & 0xF8) == 0xF0) { int c1 = cont(utf8); int c2 = cont(utf8); int c3 = cont(utf8); diff --git a/ext/json/utf8_to_utf16.c b/ext/json/utf8_to_utf16.c index bc2d6f36d..599f0e13b 100644 --- a/ext/json/utf8_to_utf16.c +++ b/ext/json/utf8_to_utf16.c @@ -40,13 +40,13 @@ utf8_to_utf16(unsigned short w[], char p[], int length) for (;;) { c = utf8_decode_next(&utf8); if (c < 0) { - return UTF8_END ? the_index : UTF8_ERROR; + return (c == UTF8_END) ? the_index : UTF8_ERROR; } if (c < 0x10000) { w[the_index] = (unsigned short)c; the_index += 1; } else { - c &= 0xFFFF; + c -= 0x10000; w[the_index] = (unsigned short)(0xD800 | (c >> 10)); the_index += 1; w[the_index] = (unsigned short)(0xDC00 | (c & 0x3FF)); diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index eb70b483b..50d09dfa0 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -23,7 +23,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ldap.c,v 1.161.2.3.2.12 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: ldap.c,v 1.161.2.3.2.14 2008/12/31 11:17:39 sebastian Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -322,7 +322,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,v 1.161.2.3.2.12 2007/12/31 07:20:07 sebastian Exp $"); + php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.161.2.3.2.14 2008/12/31 11:17:39 sebastian Exp $"); if (LDAPG(max_links) == -1) { snprintf(tmp, 31, "%ld/unlimited", LDAPG(num_links)); @@ -471,7 +471,7 @@ static int _get_lderrno(LDAP *ldap) } /* }}} */ -/* {{{ proto bool ldap_bind(resource link [, string dn, string password]) +/* {{{ proto bool ldap_bind(resource link [, string dn [, string password]]) Bind to LDAP directory */ PHP_FUNCTION(ldap_bind) { @@ -581,7 +581,7 @@ static int _php_sasl_interact(LDAP *ld, unsigned flags, void *defaults, void *in } /* }}} */ -/* {{{ proto bool ldap_sasl_bind(resource link [, string binddn, string password, string sasl_mech, string sasl_realm, string sasl_authc_id, string sasl_authz_id, string props]) +/* {{{ proto bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]]) Bind to LDAP directory using SASL */ PHP_FUNCTION(ldap_sasl_bind) { diff --git a/ext/ldap/php_ldap.h b/ext/ldap/php_ldap.h index c401c3c28..cceaba2ed 100644 --- a/ext/ldap/php_ldap.h +++ b/ext/ldap/php_ldap.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ldap.h,v 1.32.2.1.2.3 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_ldap.h,v 1.32.2.1.2.4 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHP_LDAP_H #define PHP_LDAP_H diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index a715c5403..20689c11d 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: libxml.c,v 1.32.2.7.2.17 2008/01/30 15:29:51 rrichards Exp $ */ +/* $Id: libxml.c,v 1.32.2.7.2.18 2008/12/31 11:17:39 sebastian Exp $ */ #define IS_EXT_MODULE diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index d5707178b..cac26adae 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_libxml.h,v 1.15.2.2.2.7 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_libxml.h,v 1.15.2.2.2.8 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHP_LIBXML_H #define PHP_LIBXML_H diff --git a/ext/mbstring/config.m4 b/ext/mbstring/config.m4 index a2d607497..6fa586f39 100644 --- a/ext/mbstring/config.m4 +++ b/ext/mbstring/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.58.2.4.2.11 2007/09/18 21:35:39 hirokawa Exp $ +dnl $Id: config.m4,v 1.58.2.4.2.12 2008/07/15 18:07:42 moriyoshi Exp $ dnl AC_DEFUN([PHP_MBSTRING_ADD_SOURCES], [ @@ -72,19 +72,17 @@ int foo(int x, ...) { return 0; } int main() { return foo(10, "", 3.14); } - ], [cv_php_mbstring_stdarg=yes], [cv_php_mbstring_stdarg=no], - [ - dnl cross-compile needs something here -case $host_alias in -*netware*) -cv_php_mbstring_stdarg=yes -;; -*) -cv_php_mbstring_stdarg=no -;; -esac -] -) + ], [cv_php_mbstring_stdarg=yes], [cv_php_mbstring_stdarg=no], [ + dnl cross-compile needs something here + case $host_alias in + *netware*) + cv_php_mbstring_stdarg=yes + ;; + *) + cv_php_mbstring_stdarg=no + ;; + esac + ]) ]) AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h sys/time.h sys/times.h stdarg.h]) @@ -98,7 +96,6 @@ esac AC_DEFINE([HAVE_MBREGEX], 1, [whether to have multibyte regex support]) - if test "$PHP_MBREGEX_BACKTRACK" != "no"; then AC_DEFINE([USE_COMBINATION_EXPLOSION_CHECK],1,[whether to check multibyte regex backtrack]) fi diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c index 80f7bfbc6..8fa254b6c 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c @@ -167,7 +167,7 @@ mbfl_filt_conv_sjiswin_wchar(int c, mbfl_convert_filter *filter) case 1: /* kanji second char */ filter->status = 0; c1 = filter->cache; - if (c > 0x39 && c < 0xfd && c != 0x7f) { + if (c >= 0x40 && c <= 0xfc && c != 0x7f) { w = 0; SJIS_DECODE(c1, c, s1, s2); s = (s1 - 0x21)*94 + s2 - 0x21; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c index 9cdd0520e..561dc3003 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c @@ -192,7 +192,7 @@ mbfl_filt_conv_wchar_cp936(int c, mbfl_convert_filter *filter) } } if (s >= 0) { - if (s < 0x80) { /* latin */ + if (s <= 0x80) { /* latin */ CK((*filter->output_function)(s, filter->data)); } else { CK((*filter->output_function)((s >> 8) & 0xff, filter->data)); diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c index 40c24c342..6c6654a1b 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c @@ -232,8 +232,7 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) mbfl_filt_conv_html_dec_flush(filter); if (c=='&') { - filter->status = 1; - buffer[0] = '&'; + buffer[filter->status++] = '&'; } } } @@ -244,17 +243,19 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter) { int status, pos = 0; - char *buffer; + unsigned char *buffer; + int err = 0; - buffer = (char*)filter->opaque; + buffer = (unsigned char*)filter->opaque; status = filter->status; + filter->status = 0; /* flush fragments */ while (status--) { - CK((*filter->output_function)(buffer[pos++], filter->data)); + int e = (*filter->output_function)(buffer[pos++], filter->data); + if (e != 0) + err = e; } - filter->status = 0; - /*filter->buffer = 0; of cause NOT*/ - return 0; + return err; } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c index f9d7ff671..83ef56592 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c @@ -167,7 +167,7 @@ mbfl_filt_conv_sjis_wchar(int c, mbfl_convert_filter *filter) case 1: /* kanji second char */ filter->status = 0; c1 = filter->cache; - if (c > 0x39 && c < 0xfd && c != 0x7f) { + if (c >= 0x40 && c <= 0xfc && c != 0x7f) { SJIS_DECODE(c1, c, s1, s2); w = (s1 - 0x21)*94 + s2 - 0x21; if (w >= 0 && w < jisx0208_ucs_table_size) { diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index 97d2f048c..1aeb38cc9 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -462,10 +462,9 @@ enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *ident while (n >= 0) { filter = identd->filter_list[n]; if (!filter->flag) { - if (identd->strict && filter->status) { - continue; + if (!identd->strict || !filter->status) { + encoding = filter->encoding->no_encoding; } - encoding = filter->encoding->no_encoding; } n--; } @@ -779,7 +778,7 @@ retry: for (;;) { pc->found_pos++; p = h; - m = pc->needle.buffer; + m = (int *)pc->needle.buffer; n = pc->needle_pos - 1; while (n > 0 && *p == *m) { n--; @@ -858,84 +857,203 @@ mbfl_strpos( int offset, int reverse) { - int n, result, negative_offset = 0; - unsigned char *p; - mbfl_convert_filter *filter; - struct collector_strpos_data pc; + int result; + mbfl_string _haystack_u8, _needle_u8; + const mbfl_string *haystack_u8, *needle_u8; + const unsigned char *u8_tbl; - if (haystack == NULL || needle == NULL) { + if (haystack == NULL || haystack->val == NULL || needle == NULL || needle->val == NULL) { return -8; } - /* needle is converted into wchar */ - mbfl_wchar_device_init(&pc.needle); - filter = mbfl_convert_filter_new( - needle->no_encoding, - mbfl_no_encoding_wchar, - mbfl_wchar_device_output, 0, &pc.needle); - if (filter == NULL) { - return -4; - } - p = needle->val; - n = needle->len; - if (p != NULL) { - while (n > 0) { - if ((*filter->filter_function)(*p++, filter) < 0) { - break; - } - n--; + + { + const mbfl_encoding *u8_enc; + u8_enc = mbfl_no2encoding(mbfl_no_encoding_utf8); + if (u8_enc == NULL || u8_enc->mblen_table == NULL) { + return -8; } + u8_tbl = u8_enc->mblen_table; } - mbfl_convert_filter_flush(filter); - mbfl_convert_filter_delete(filter); - pc.needle_len = pc.needle.pos; - if (pc.needle.buffer == NULL) { - return -4; - } - if (pc.needle_len <= 0) { - mbfl_wchar_device_clear(&pc.needle); - return -2; + + if (haystack->no_encoding != mbfl_no_encoding_utf8) { + mbfl_string_init(&_haystack_u8); + haystack_u8 = mbfl_convert_encoding(haystack, &_haystack_u8, mbfl_no_encoding_utf8); + if (haystack_u8 == NULL) { + result = -4; + goto out; + } + } else { + haystack_u8 = haystack; } - /* initialize filter and collector data */ - filter = mbfl_convert_filter_new( - haystack->no_encoding, - mbfl_no_encoding_wchar, - collector_strpos, 0, &pc); - if (filter == NULL) { - mbfl_wchar_device_clear(&pc.needle); - return -4; + + if (needle->no_encoding != mbfl_no_encoding_utf8) { + mbfl_string_init(&_needle_u8); + needle_u8 = mbfl_convert_encoding(needle, &_needle_u8, mbfl_no_encoding_utf8); + if (needle_u8 == NULL) { + result = -4; + goto out; + } + } else { + needle_u8 = needle; } - if (offset < 0) { - negative_offset = -offset-1; - offset = 0; + if (needle_u8->len < 1) { + result = -8; + goto out; } - pc.start = offset; - pc.output = 0; - pc.needle_pos = 0; - pc.found_pos = 0; - pc.matched_pos = -1; + result = -1; + if (haystack_u8->len < needle_u8->len) { + goto out; + } - /* feed data */ - p = haystack->val; - n = haystack->len - negative_offset; - if (p != NULL) { - while (n > 0) { - if ((*filter->filter_function)(*p++, filter) < 0) { - pc.matched_pos = -4; - break; + if (!reverse) { + unsigned int jtbl[1 << (sizeof(unsigned char) * 8)]; + unsigned int needle_u8_len = needle_u8->len; + unsigned int i; + const unsigned char *p, *q, *e; + const unsigned char *haystack_u8_val = haystack_u8->val, + *needle_u8_val = needle_u8->val; + for (i = 0; i < sizeof(jtbl) / sizeof(*jtbl); ++i) { + jtbl[i] = needle_u8_len + 1; + } + for (i = 0; i < needle_u8_len - 1; ++i) { + jtbl[needle_u8_val[i]] = needle_u8_len - i; + } + e = haystack_u8_val + haystack_u8->len; + p = haystack_u8_val; + while (--offset >= 0) { + if (p >= e) { + result = -16; + goto out; } - if (pc.matched_pos >= 0 && !reverse) { - break; + p += u8_tbl[*p]; + } + p += needle_u8_len; + if (p > e) { + goto out; + } + while (p <= e) { + const unsigned char *pv = p; + q = needle_u8_val + needle_u8_len; + for (;;) { + if (q == needle_u8_val) { + result = 0; + while (p > haystack_u8_val) { + unsigned char c = *--p; + if (c < 0x80) { + ++result; + } else if ((c & 0xc0) != 0x80) { + ++result; + } + } + goto out; + } + if (*--q != *--p) { + break; + } + } + p += jtbl[*p]; + if (p <= pv) { + p = pv + 1; + } + } + } else { + unsigned int jtbl[1 << (sizeof(unsigned char) * 8)]; + unsigned int needle_u8_len = needle_u8->len, needle_len = 0; + unsigned int i; + const unsigned char *p, *e, *q, *qe; + const unsigned char *haystack_u8_val = haystack_u8->val, + *needle_u8_val = needle_u8->val; + for (i = 0; i < sizeof(jtbl) / sizeof(*jtbl); ++i) { + jtbl[i] = needle_u8_len; + } + for (i = needle_u8_len - 1; i > 0; --i) { + unsigned char c = needle_u8_val[i]; + jtbl[c] = i; + if (c < 0x80) { + ++needle_len; + } else if ((c & 0xc0) != 0x80) { + ++needle_len; + } + } + { + unsigned char c = needle_u8_val[0]; + if (c < 0x80) { + ++needle_len; + } else if ((c & 0xc0) != 0x80) { + ++needle_len; + } + } + e = haystack_u8_val; + p = e + haystack_u8->len; + qe = needle_u8_val + needle_u8_len; + if (offset < 0) { + if (-offset > needle_len) { + offset += needle_len; + while (offset < 0) { + unsigned char c; + if (p <= e) { + result = -16; + goto out; + } + c = *(--p); + if (c < 0x80) { + ++offset; + } else if ((c & 0xc0) != 0x80) { + ++offset; + } + } + } + } else { + const unsigned char *ee = haystack_u8_val + haystack_u8->len; + while (--offset >= 0) { + if (e >= ee) { + result = -16; + goto out; + } + e += u8_tbl[*e]; + } + } + if (p < e + needle_u8_len) { + goto out; + } + p -= needle_u8_len; + while (p >= e) { + const unsigned char *pv = p; + q = needle_u8_val; + for (;;) { + if (q == qe) { + result = 0; + p -= needle_u8_len; + while (p > haystack_u8_val) { + unsigned char c = *--p; + if (c < 0x80) { + ++result; + } else if ((c & 0xc0) != 0x80) { + ++result; + } + } + goto out; + } + if (*q != *p) { + break; + } + ++p, ++q; + } + p -= jtbl[*p]; + if (p >= pv) { + p = pv - 1; } - n--; } } - mbfl_convert_filter_flush(filter); - result = pc.matched_pos; - mbfl_convert_filter_delete(filter); - mbfl_wchar_device_clear(&pc.needle); - +out: + if (haystack_u8 == &_haystack_u8) { + mbfl_string_clear(&_haystack_u8); + } + if (needle_u8 == &_needle_u8) { + mbfl_string_clear(&_needle_u8); + } return result; } @@ -1013,6 +1131,7 @@ mbfl_substr_count( if (pc.matched_pos >= 0) { ++result; pc.matched_pos = -1; + pc.needle_pos = 0; } n--; } diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c index f6810738f..8c3a9758d 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c +++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c @@ -357,22 +357,6 @@ int mbfl_convert_filter_strcat(mbfl_convert_filter *filter, const unsigned char return 0; } -#if 0 -static int -mbfl_convert_filter_strncat(mbfl_convert_filter *filter, const unsigned char *p, - int n) -{ - while (n > 0) { - if ((*filter->filter_function)(*p++, filter) < 0) { - return -1; - } - n--; - } - - return n; -} -#endif - /* illegal character output function for conv-filter */ int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter) @@ -387,14 +371,9 @@ mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter) ret = (*filter->filter_function)(filter->illegal_substchar, filter); break; case MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG: - case MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY: if (c >= 0) { if (c < MBFL_WCSGROUP_UCS4MAX) { /* unicode */ - if (mode_backup == MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) { - ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)"U+"); - } else { /* entity */ - ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)"&#"); - } + ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)"U+"); } else { if (c < MBFL_WCSGROUP_WCHARMAX) { m = c & ~MBFL_WCSPLANE_MASK; @@ -438,9 +417,38 @@ mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter) if (m == 0 && ret >= 0) { ret = (*filter->filter_function)(mbfl_hexchar_table[0], filter); } - if (mode_backup == MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY) { - ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)";"); + } + } + break; + case MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY: + if (c >= 0) { + if (c < MBFL_WCSGROUP_UCS4MAX) { /* unicode */ + ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)"&#x"); + if (ret < 0) + break; + + m = 0; + r = 28; + while (r >= 0) { + n = (c >> r) & 0xf; + if (n || m) { + m = 1; + ret = (*filter->filter_function)(mbfl_hexchar_table[n], filter); + if (ret < 0) { + break; + } + } + r -= 4; + } + if (ret < 0) { + break; + } + if (m == 0) { + ret = (*filter->filter_function)(mbfl_hexchar_table[0], filter); } + ret = mbfl_convert_filter_strcat(filter, (const unsigned char *)";"); + } else { + ret = (*filter->filter_function)(filter->illegal_substchar, filter); } } break; @@ -462,8 +470,8 @@ const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encod to == mbfl_no_encoding_7bit) { from = mbfl_no_encoding_8bit; } else if (from == mbfl_no_encoding_base64 || - from == mbfl_no_encoding_qprint || - from == mbfl_no_encoding_uuencode) { + from == mbfl_no_encoding_qprint || + from == mbfl_no_encoding_uuencode) { to = mbfl_no_encoding_8bit; } diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c index f6a175d8d..98efdcbe1 100644 --- a/ext/mbstring/mb_gpc.c +++ b/ext/mbstring/mb_gpc.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mb_gpc.c,v 1.17.2.2.2.4 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: mb_gpc.c,v 1.17.2.2.2.5 2008/12/31 11:17:39 sebastian Exp $ */ /* {{{ includes */ #ifdef HAVE_CONFIG_H diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 7d2e2840c..211b2d63b 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.224.2.22.2.30 2008/02/17 02:06:56 hirokawa Exp $ */ +/* $Id: mbstring.c,v 1.224.2.22.2.46 2009/02/15 07:11:23 moriyoshi Exp $ */ /* * PHP 4 Multibyte String module "mbstring" @@ -89,7 +89,7 @@ static PHP_GSHUTDOWN_FUNCTION(mbstring); /* {{{ php_mb_default_identify_list */ typedef struct _php_mb_nls_ident_list { enum mbfl_no_language lang; - enum mbfl_no_encoding* list; + const enum mbfl_no_encoding* list; int list_size; } php_mb_nls_ident_list; @@ -560,7 +560,7 @@ static int php_mb_nls_get_default_detect_order_list(enum mbfl_no_language lang, for (i = 0; i < sizeof(php_mb_default_identify_list) / sizeof(php_mb_default_identify_list[0]); i++) { if (php_mb_default_identify_list[i].lang == lang) { - *plist = php_mb_default_identify_list[i].list; + *plist = (enum mbfl_no_encoding *)php_mb_default_identify_list[i].list; *plist_size = php_mb_default_identify_list[i].list_size; return 1; } @@ -576,6 +576,7 @@ static PHP_INI_MH(OnUpdate_mbstring_language) no_language = mbfl_name2no_language(new_value); if (no_language == mbfl_no_language_invalid) { + MBSTRG(language) = mbfl_no_language_neutral; return FAILURE; } MBSTRG(language) = no_language; @@ -591,12 +592,16 @@ static PHP_INI_MH(OnUpdate_mbstring_detect_order) int size; if (php_mb_parse_encoding_list(new_value, new_value_length, &list, &size, 1 TSRMLS_CC)) { - if (MBSTRG(detect_order_list) != NULL) { + if (MBSTRG(detect_order_list)) { free(MBSTRG(detect_order_list)); } MBSTRG(detect_order_list) = list; MBSTRG(detect_order_list_size) = size; } else { + if (MBSTRG(detect_order_list)) { + free(MBSTRG(detect_order_list)); + MBSTRG(detect_order_list) = NULL; + } return FAILURE; } @@ -611,12 +616,17 @@ static PHP_INI_MH(OnUpdate_mbstring_http_input) int size; if (php_mb_parse_encoding_list(new_value, new_value_length, &list, &size, 1 TSRMLS_CC)) { - if (MBSTRG(http_input_list) != NULL) { + if (MBSTRG(http_input_list)) { free(MBSTRG(http_input_list)); } MBSTRG(http_input_list) = list; MBSTRG(http_input_list_size) = size; } else { + if (MBSTRG(http_input_list)) { + free(MBSTRG(http_input_list)); + MBSTRG(http_input_list) = NULL; + } + MBSTRG(http_input_list_size) = 0; return FAILURE; } @@ -634,6 +644,8 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output) MBSTRG(http_output_encoding) = no_encoding; MBSTRG(current_http_output_encoding) = no_encoding; } else { + MBSTRG(http_output_encoding) = mbfl_no_encoding_pass; + MBSTRG(current_http_output_encoding) = mbfl_no_encoding_pass; if (new_value != NULL && new_value_length > 0) { return FAILURE; } @@ -643,41 +655,101 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output) } /* }}} */ -/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */ -static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) +/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */ +static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint new_value_length TSRMLS_DC) { enum mbfl_no_encoding no_encoding; - if (new_value == NULL) { - return SUCCESS; - } + const char *enc_name = NULL; + uint enc_name_len = 0; - no_encoding = mbfl_name2no_encoding(new_value); + no_encoding = new_value ? mbfl_name2no_encoding(new_value): + mbfl_no_encoding_invalid; if (no_encoding != mbfl_no_encoding_invalid) { - MBSTRG(internal_encoding) = no_encoding; - MBSTRG(current_internal_encoding) = no_encoding; + enc_name = new_value; + enc_name_len = new_value_length; + } else { + switch (MBSTRG(language)) { + case mbfl_no_language_uni: + enc_name = "UTF-8"; + enc_name_len = sizeof("UTF-8") - 1; + break; + case mbfl_no_language_japanese: + enc_name = "EUC-JP"; + enc_name_len = sizeof("EUC-JP") - 1; + break; + case mbfl_no_language_korean: + enc_name = "EUC-KR"; + enc_name_len = sizeof("EUC-KR") - 1; + break; + case mbfl_no_language_simplified_chinese: + enc_name = "EUC-CN"; + enc_name_len = sizeof("EUC-CN") - 1; + break; + case mbfl_no_language_traditional_chinese: + enc_name = "EUC-TW"; + enc_name_len = sizeof("EUC-TW") - 1; + break; + case mbfl_no_language_russian: + enc_name = "KOI8-R"; + enc_name_len = sizeof("KOI8-R") - 1; + break; + case mbfl_no_language_german: + enc_name = "ISO-8859-15"; + enc_name_len = sizeof("ISO-8859-15") - 1; + break; + case mbfl_no_language_armenian: + enc_name = "ArmSCII-8"; + enc_name_len = sizeof("ArmSCII-8") - 1; + break; + case mbfl_no_language_turkish: + enc_name = "ISO-8859-9"; + enc_name_len = sizeof("ISO-8859-9") - 1; + break; + default: + enc_name = "ISO-8859-1"; + enc_name_len = sizeof("ISO-8859-1") - 1; + break; + } + no_encoding = mbfl_name2no_encoding(enc_name); + } + MBSTRG(internal_encoding) = no_encoding; + MBSTRG(current_internal_encoding) = no_encoding; #if HAVE_MBREGEX - { - OnigEncoding mbctype; - mbctype = php_mb_regex_name2mbctype(new_value); - if (mbctype == ONIG_ENCODING_UNDEF) { - mbctype = ONIG_ENCODING_EUC_JP; - } - MBSTRG(current_mbctype) = MBSTRG(default_mbctype) = mbctype; + { + OnigEncoding mbctype; + mbctype = php_mb_regex_name2mbctype(enc_name); + if (mbctype == ONIG_ENCODING_UNDEF) { + mbctype = ONIG_ENCODING_EUC_JP; } + MBSTRG(current_mbctype) = MBSTRG(default_mbctype) = mbctype; + } #endif #ifdef ZEND_MULTIBYTE - zend_multibyte_set_internal_encoding(new_value, new_value_length TSRMLS_CC); + zend_multibyte_set_internal_encoding((char *)enc_name, enc_name_len TSRMLS_CC); #endif /* ZEND_MULTIBYTE */ - } else { - if (new_value != NULL && new_value_length > 0) { - return FAILURE; - } - } return SUCCESS; } /* }}} */ +/* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */ +static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) +{ + if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN + || stage == PHP_INI_STAGE_RUNTIME) { + return _php_mb_ini_mbstring_internal_encoding_set(new_value, new_value_length TSRMLS_CC); + } else { + /* the corresponding mbstring globals needs to be set according to the + * ini value in the later stage because it never falls back to the + * default value if 1. no value for mbstring.internal_encoding is given, + * 2. mbstring.language directive is processed in per-dir or runtime + * context and 3. call to the handler for mbstring.language is done + * after mbstring.internal_encoding is handled. */ + return SUCCESS; + } +} +/* }}} */ + #ifdef ZEND_MULTIBYTE /* {{{ static PHP_INI_MH(OnUpdate_mbstring_script_encoding) */ static PHP_INI_MH(OnUpdate_mbstring_script_encoding) @@ -691,6 +763,11 @@ static PHP_INI_MH(OnUpdate_mbstring_script_encoding) MBSTRG(script_encoding_list) = list; MBSTRG(script_encoding_list_size) = size; } else { + if (MBSTRG(script_encoding_list) != NULL) { + free(MBSTRG(script_encoding_list)); + } + MBSTRG(script_encoding_list) = NULL; + MBSTRG(script_encoding_list_size) = 0; return FAILURE; } @@ -726,6 +803,11 @@ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) } } } + } else { + MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; + MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; + MBSTRG(filter_illegal_substchar) = 0x3f; /* '?' */ + MBSTRG(current_filter_illegal_substchar) = 0x3f; /* '?' */ } return SUCCESS; @@ -756,7 +838,7 @@ static PHP_INI_MH(OnUpdate_mbstring_encoding_translation) /* {{{ php.ini directive registration */ PHP_INI_BEGIN() - PHP_INI_ENTRY("mbstring.language", "neutral", PHP_INI_SYSTEM | PHP_INI_PERDIR, OnUpdate_mbstring_language) + PHP_INI_ENTRY("mbstring.language", "neutral", PHP_INI_ALL, OnUpdate_mbstring_language) PHP_INI_ENTRY("mbstring.detect_order", NULL, PHP_INI_ALL, OnUpdate_mbstring_detect_order) PHP_INI_ENTRY("mbstring.http_input", "pass", PHP_INI_ALL, OnUpdate_mbstring_http_input) PHP_INI_ENTRY("mbstring.http_output", "pass", PHP_INI_ALL, OnUpdate_mbstring_http_output) @@ -765,8 +847,8 @@ PHP_INI_BEGIN() PHP_INI_ENTRY("mbstring.script_encoding", NULL, PHP_INI_ALL, OnUpdate_mbstring_script_encoding) #endif /* ZEND_MULTIBYTE */ PHP_INI_ENTRY("mbstring.substitute_character", NULL, PHP_INI_ALL, OnUpdate_mbstring_substitute_character) - STD_PHP_INI_ENTRY("mbstring.func_overload", "0", PHP_INI_SYSTEM | - PHP_INI_PERDIR, OnUpdateLong, func_overload, zend_mbstring_globals, mbstring_globals) + STD_PHP_INI_ENTRY("mbstring.func_overload", "0", + PHP_INI_SYSTEM, OnUpdateLong, func_overload, zend_mbstring_globals, mbstring_globals) STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0", PHP_INI_SYSTEM | PHP_INI_PERDIR, OnUpdate_mbstring_encoding_translation, @@ -781,7 +863,6 @@ PHP_INI_END() static PHP_GINIT_FUNCTION(mbstring) { mbstring_globals->language = mbfl_no_language_uni; - mbstring_globals->current_language = mbstring_globals->language; mbstring_globals->internal_encoding = mbfl_no_encoding_invalid; mbstring_globals->current_internal_encoding = mbstring_globals->internal_encoding; #ifdef ZEND_MULTIBYTE @@ -821,6 +902,18 @@ static PHP_GINIT_FUNCTION(mbstring) /* {{{ PHP_GSHUTDOWN_FUNCTION */ static PHP_GSHUTDOWN_FUNCTION(mbstring) { + if (mbstring_globals->http_input_list) { + free(mbstring_globals->http_input_list); + } +#ifdef ZEND_MULTIBYTE + if (mbstring_globals->script_encoding_list) { + free(mbstring_globals->script_encoding_list); + } +#endif /* ZEND_MULTIBYTE */ + if (mbstring_globals->detect_order_list) { + free(mbstring_globals->detect_order_list); + } + #if HAVE_MBREGEX _php_mb_regex_globals_dtor(mbstring_globals TSRMLS_CC); #endif @@ -859,18 +952,6 @@ PHP_MSHUTDOWN_FUNCTION(mbstring) { UNREGISTER_INI_ENTRIES(); - if (MBSTRG(http_input_list)) { - free(MBSTRG(http_input_list)); - } -#ifdef ZEND_MULTIBYTE - if (MBSTRG(script_encoding_list)) { - free(MBSTRG(script_encoding_list)); - } -#endif /* ZEND_MULTIBYTE */ - if (MBSTRG(detect_order_list)) { - free(MBSTRG(detect_order_list)); - } - #if HAVE_MBREGEX PHP_MSHUTDOWN(mb_regex) (INIT_FUNC_ARGS_PASSTHRU); #endif @@ -887,51 +968,9 @@ PHP_RINIT_FUNCTION(mbstring) zend_function *func, *orig; const struct mb_overload_def *p; - MBSTRG(current_language) = MBSTRG(language); - php_mb_nls_get_default_detect_order_list(MBSTRG(language), - &MBSTRG(default_detect_order_list), &MBSTRG(default_detect_order_list_size)); - - if (MBSTRG(internal_encoding) == mbfl_no_encoding_invalid) { - char *default_enc = NULL; - switch (MBSTRG(current_language)) { - case mbfl_no_language_uni: - default_enc = "UTF-8"; - break; - case mbfl_no_language_japanese: - default_enc = "EUC-JP"; - break; - case mbfl_no_language_korean: - default_enc = "EUC-KR"; - break; - case mbfl_no_language_simplified_chinese: - default_enc = "EUC-CN"; - break; - case mbfl_no_language_traditional_chinese: - default_enc = "EUC-TW"; - break; - case mbfl_no_language_russian: - default_enc = "KOI8-R"; - break; - case mbfl_no_language_german: - default_enc = "ISO-8859-15"; - break; - case mbfl_no_language_armenian: - default_enc = "ArmSCII-8"; - break; - case mbfl_no_language_turkish: - default_enc = "ISO-8859-9"; - break; - case mbfl_no_language_english: - default: - default_enc = "ISO-8859-1"; - break; - } - if (default_enc) { - zend_alter_ini_entry("mbstring.internal_encoding", - sizeof("mbstring.internal_encoding"), - default_enc, strlen(default_enc), - PHP_INI_PERDIR, PHP_INI_STAGE_RUNTIME); - } + { + char *value = zend_ini_string("mbstring.internal_encoding", sizeof("mbstring.internal_encoding"), 0); + _php_mb_ini_mbstring_internal_encoding_set(value, value ? strlen(value): 0 TSRMLS_CC); } MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding); @@ -939,9 +978,7 @@ PHP_RINIT_FUNCTION(mbstring) MBSTRG(current_filter_illegal_mode) = MBSTRG(filter_illegal_mode); MBSTRG(current_filter_illegal_substchar) = MBSTRG(filter_illegal_substchar); - if (!MBSTRG(encoding_translation)) { - MBSTRG(illegalchars) = 0; - } + MBSTRG(illegalchars) = 0; n = 0; if (MBSTRG(detect_order_list)) { @@ -1025,9 +1062,14 @@ PHP_RSHUTDOWN_FUNCTION(mbstring) /* clear overloaded function. */ if (MBSTRG(func_overload)){ p = &(mb_ovld[0]); - while (p->type > 0 && zend_hash_find(EG(function_table), p->save_func, strlen(p->save_func)+1 , (void **)&orig) == SUCCESS) { - zend_hash_update(EG(function_table), p->orig_func, strlen(p->orig_func)+1, orig, sizeof(zend_function), NULL); - zend_hash_del(EG(function_table), p->save_func, strlen(p->save_func)+1); + while (p->type > 0) { + if ((MBSTRG(func_overload) & p->type) == p->type && + zend_hash_find(EG(function_table), p->save_func, + strlen(p->save_func)+1, (void **)&orig) == SUCCESS) { + + zend_hash_update(EG(function_table), p->orig_func, strlen(p->orig_func)+1, orig, sizeof(zend_function), NULL); + zend_hash_del(EG(function_table), p->save_func, strlen(p->save_func)+1); + } p++; } } @@ -1079,22 +1121,20 @@ PHP_FUNCTION(mb_language) { char *name = NULL; int name_len = 0; - enum mbfl_no_language no_language; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { return; } if (name == NULL) { - RETURN_STRING((char *)mbfl_no_language2name(MBSTRG(current_language)), 1); + RETVAL_STRING((char *)mbfl_no_language2name(MBSTRG(language)), 1); } else { - no_language = mbfl_name2no_language(name); - if (no_language == mbfl_no_language_invalid) { + if (FAILURE == zend_alter_ini_entry( + "mbstring.language", sizeof("mbstring.language"), + name, name_len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown language \"%s\"", name); - RETURN_FALSE; + RETVAL_FALSE; } else { - php_mb_nls_get_default_detect_order_list(no_language, &MBSTRG(default_detect_order_list), &MBSTRG(default_detect_order_list_size)); - MBSTRG(current_language) = no_language; - RETURN_TRUE; + RETVAL_TRUE; } } } @@ -1412,7 +1452,7 @@ PHP_FUNCTION(mb_preferred_mime_name) Parses GET/POST/COOKIE data and sets global variables */ PHP_FUNCTION(mb_parse_str) { - zval *track_vars_array; + zval *track_vars_array = NULL; char *encstr = NULL; int encstr_len; php_mb_encoding_handler_info_t info; @@ -1436,10 +1476,10 @@ PHP_FUNCTION(mb_parse_str) info.force_register_globals = (track_vars_array == NULL); info.report_errors = 1; info.to_encoding = MBSTRG(current_internal_encoding); - info.to_language = MBSTRG(current_language); + info.to_language = MBSTRG(language); info.from_encodings = MBSTRG(http_input_list); info.num_from_encodings = MBSTRG(http_input_list_size); - info.from_language = MBSTRG(current_language); + info.from_language = MBSTRG(language); detected = _php_mb_encoding_handler_ex(&info, track_vars_array, encstr TSRMLS_CC); @@ -1527,7 +1567,7 @@ PHP_FUNCTION(mb_output_handler) /* feed the string */ mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); string.val = (unsigned char *)arg_string; string.len = arg_string_len; @@ -1563,7 +1603,7 @@ PHP_FUNCTION(mb_strlen) RETURN_FALSE; } - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); if (enc_name == NULL) { string.no_encoding = MBSTRG(current_internal_encoding); } else { @@ -1595,9 +1635,9 @@ PHP_FUNCTION(mb_strpos) mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); offset = 0; @@ -1613,12 +1653,12 @@ PHP_FUNCTION(mb_strpos) } } - if (offset < 0 || (unsigned long)offset > (unsigned long)mbfl_strlen(&haystack)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string."); + if (offset < 0 || offset > mbfl_strlen(&haystack)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string"); RETURN_FALSE; } if (needle.len == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter"); RETURN_FALSE; } @@ -1630,17 +1670,17 @@ PHP_FUNCTION(mb_strpos) case 1: break; case 2: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Needle has not positive length."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Needle has not positive length"); break; case 4: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding or conversion error."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding or conversion error"); break; case 8: - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Argument is empty."); + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Argument is empty"); break; default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error in mb_strpos."); - break; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error in mb_strpos"); + break; } RETVAL_FALSE; } @@ -1662,9 +1702,9 @@ PHP_FUNCTION(mb_strrpos) mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|Zs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &zoffset, &enc_name, &enc_name_len) == FAILURE) { @@ -1727,10 +1767,13 @@ PHP_FUNCTION(mb_strrpos) RETURN_FALSE; } - if ((offset > 0 && offset > mbfl_strlen(&haystack)) || - (offset < 0 && -offset > mbfl_strlen(&haystack))) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); - RETURN_FALSE; + { + int haystack_char_len = mbfl_strlen(&haystack); + if ((offset > 0 && offset > haystack_char_len) || + (offset < 0 && -offset > haystack_char_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); + RETURN_FALSE; + } } n = mbfl_strpos(&haystack, &needle, offset, 1); @@ -1784,10 +1827,6 @@ PHP_FUNCTION(mb_strripos) RETURN_FALSE; } - if(offset > old_haystack_len){ - RETURN_FALSE; - } - n = php_mb_stripos(1, old_haystack, old_haystack_len, old_needle, old_needle_len, offset, from_encoding TSRMLS_CC); if (n >= 0) { @@ -1810,9 +1849,9 @@ PHP_FUNCTION(mb_strstr) mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &enc_name, &enc_name_len) == FAILURE) { @@ -1828,7 +1867,7 @@ PHP_FUNCTION(mb_strstr) } if (needle.len <= 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty delimiter."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter"); RETURN_FALSE; } n = mbfl_strpos(&haystack, &needle, 0, 0); @@ -1868,9 +1907,9 @@ PHP_FUNCTION(mb_strrchr) mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &enc_name, &enc_name_len) == FAILURE) { @@ -1926,9 +1965,9 @@ PHP_FUNCTION(mb_stristr) char *from_encoding = (char*)mbfl_no2preferred_mime_name(MBSTRG(current_internal_encoding)); mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); @@ -1937,7 +1976,7 @@ PHP_FUNCTION(mb_stristr) } if(!needle.len){ - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty delimiter."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter"); RETURN_FALSE; } @@ -1947,7 +1986,7 @@ PHP_FUNCTION(mb_stristr) RETURN_FALSE; } - n = php_mb_stripos(0, haystack.val, haystack.len, needle.val, needle.len, 0, from_encoding TSRMLS_CC); + n = php_mb_stripos(0, haystack.val, haystack.len, needle.val, needle.len, 0, from_encoding TSRMLS_CC); if (n <0) { RETURN_FALSE; @@ -1984,9 +2023,9 @@ PHP_FUNCTION(mb_strrichr) char *from_encoding = (char*)mbfl_no2preferred_mime_name(MBSTRG(current_internal_encoding)); mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); @@ -2038,9 +2077,9 @@ PHP_FUNCTION(mb_substr_count) mbfl_string_init(&haystack); mbfl_string_init(&needle); - haystack.no_language = MBSTRG(current_language); + haystack.no_language = MBSTRG(language); haystack.no_encoding = MBSTRG(current_internal_encoding); - needle.no_language = MBSTRG(current_language); + needle.no_language = MBSTRG(language); needle.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|s", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &enc_name, &enc_name_len) == FAILURE) { @@ -2056,7 +2095,7 @@ PHP_FUNCTION(mb_substr_count) } if (needle.len <= 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty substring."); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty substring"); RETURN_FALSE; } @@ -2078,7 +2117,7 @@ PHP_FUNCTION(mb_substr) mbfl_string string, result, *ret; mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); argc = ZEND_NUM_ARGS(); @@ -2170,7 +2209,7 @@ PHP_FUNCTION(mb_strcut) mbfl_string string, result, *ret; mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); argc = ZEND_NUM_ARGS(); @@ -2260,7 +2299,7 @@ PHP_FUNCTION(mb_strwidth) mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", (char **)&string.val, &string.len, &enc_name, &enc_name_len) == FAILURE) { @@ -2294,9 +2333,9 @@ PHP_FUNCTION(mb_strimwidth) mbfl_string_init(&string); mbfl_string_init(&marker); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); - marker.no_language = MBSTRG(current_language); + marker.no_language = MBSTRG(language); marker.no_encoding = MBSTRG(current_internal_encoding); marker.val = NULL; marker.len = 0; @@ -2392,7 +2431,7 @@ MBSTRING_API char * php_mb_convert_encoding(char *input, size_t length, char *_t mbfl_string_init(&result); from_encoding = MBSTRG(current_internal_encoding); string.no_encoding = from_encoding; - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.val = (unsigned char *)input; string.len = length; @@ -2626,6 +2665,7 @@ PHP_FUNCTION(mb_detect_encoding) if (!php_mb_parse_encoding_array(*arg_list, &list, &size, 0 TSRMLS_CC)) { if (list) { efree(list); + list = NULL; size = 0; } } @@ -2635,6 +2675,7 @@ PHP_FUNCTION(mb_detect_encoding) if (!php_mb_parse_encoding_list(Z_STRVAL_PP(arg_list), Z_STRLEN_PP(arg_list), &list, &size, 0 TSRMLS_CC)) { if (list) { efree(list); + list = NULL; size = 0; } } @@ -2662,7 +2703,7 @@ PHP_FUNCTION(mb_detect_encoding) convert_to_string_ex(arg_str); mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.val = (unsigned char *)Z_STRVAL_PP(arg_str); string.len = Z_STRLEN_PP(arg_str); ret = mbfl_identify_encoding_name(&string, elist, size, strict); @@ -2694,122 +2735,6 @@ PHP_FUNCTION(mb_list_encodings) } /* }}} */ -/* {{{ proto array mb_list_encodings_alias_names([string encoding]) - Returns an array of all supported alias encodings */ -PHP_FUNCTION(mb_list_encodings_alias_names) -{ - const mbfl_encoding **encodings; - const mbfl_encoding *encoding; - enum mbfl_no_encoding no_encoding; - int i, j; - zval *row; - char *name = NULL; - int name_len; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { - RETURN_FALSE; - } - - if (name == NULL) { - array_init(return_value); - i = 0; - encodings = mbfl_get_supported_encodings(); - while ((encoding = encodings[i++]) != NULL) { - MAKE_STD_ZVAL(row); - array_init(row); - if (encoding->aliases != NULL) { - j = 0; - while ((*encoding->aliases)[j] != NULL) { - add_next_index_string(row, (char *)(*encoding->aliases)[j], 1); - j++; - } - } - add_assoc_zval(return_value, (char *) encoding->name, row); - } - } else { - no_encoding = mbfl_name2no_encoding(name); - if (no_encoding == mbfl_no_encoding_invalid) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); - RETURN_FALSE; - } - - name = (char *)mbfl_no_encoding2name(no_encoding); - if (name != NULL) { - i = 0; - encodings = mbfl_get_supported_encodings(); - while ((encoding = encodings[i++]) != NULL) { - if (strcmp(encoding->name, name) != 0){ continue; } - - array_init(return_value); - if (encoding->aliases != NULL) { - j = 0; - while ((*encoding->aliases)[j] != NULL) { - add_next_index_string(return_value, (char *)(*encoding->aliases)[j], 1); - j++; - } - } - - break; - } - } else { - RETURN_FALSE; - } - } -} -/* }}} */ - -/* {{{ proto mixed mb_list_mime_names([string encoding]) - Returns an array or string of all supported mime names */ -PHP_FUNCTION(mb_list_mime_names) -{ - const mbfl_encoding **encodings; - const mbfl_encoding *encoding; - enum mbfl_no_encoding no_encoding; - int i; - char *name = NULL; - int name_len; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { - RETURN_FALSE; - } - - if (name == NULL) { - array_init(return_value); - i = 0; - encodings = mbfl_get_supported_encodings(); - while ((encoding = encodings[i++]) != NULL) { - if(encoding->mime_name != NULL) { - add_assoc_string(return_value, (char *) encoding->name, (char *) encoding->mime_name, 1); - } else{ - add_assoc_string(return_value, (char *) encoding->name, "", 1); - } - } - } else { - no_encoding = mbfl_name2no_encoding(name); - if (no_encoding == mbfl_no_encoding_invalid) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); - RETURN_FALSE; - } - - name = (char *)mbfl_no_encoding2name(no_encoding); - if (name != NULL) { - i = 0; - encodings = mbfl_get_supported_encodings(); - while ((encoding = encodings[i++]) != NULL) { - if (strcmp(encoding->name, name) != 0){ continue; } - if(encoding->mime_name != NULL) { - RETURN_STRING((char *) encoding->mime_name, 1); - } - break; - } - RETURN_STRING("", 1); - } else { - RETURN_FALSE; - } - } -} -/* }}} */ - /* {{{ proto string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]]) Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?= */ PHP_FUNCTION(mb_encode_mimeheader) @@ -2825,7 +2750,7 @@ PHP_FUNCTION(mb_encode_mimeheader) long indent = 0; mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sssl", (char **)&string.val, &string.len, &charset_name, &charset_name_len, &trans_enc_name, &trans_enc_name_len, &linefeed, &linefeed_len, &indent) == FAILURE) { @@ -2842,7 +2767,7 @@ PHP_FUNCTION(mb_encode_mimeheader) RETURN_FALSE; } } else { - const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language)); + const mbfl_language *lang = mbfl_no2language(MBSTRG(language)); if (lang != NULL) { charset = lang->mail_charset; transenc = lang->mail_header_encoding; @@ -2874,7 +2799,7 @@ PHP_FUNCTION(mb_decode_mimeheader) mbfl_string string, result, *ret; mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", (char **)&string.val, &string.len) == FAILURE) { @@ -2903,7 +2828,7 @@ PHP_FUNCTION(mb_convert_kana) int encname_len; mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ss", (char **)&string.val, &string.len, &optstr, &optstr_len, &encname, &encname_len) == FAILURE) { @@ -3035,7 +2960,7 @@ PHP_FUNCTION(mb_convert_variables) mbfl_string_init(&result); from_encoding = MBSTRG(current_internal_encoding); string.no_encoding = from_encoding; - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); /* pre-conversion encoding */ elist = NULL; @@ -3239,7 +3164,7 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type) convert_to_string_ex(arg1); mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.no_encoding = MBSTRG(current_internal_encoding); string.val = (unsigned char *)Z_STRVAL_PP(arg1); string.len = Z_STRLEN_PP(arg1); @@ -3578,7 +3503,7 @@ PHP_FUNCTION(mb_send_mail) tran_cs = mbfl_no_encoding_utf8; head_enc = mbfl_no_encoding_base64; body_enc = mbfl_no_encoding_base64; - lang = mbfl_no2language(MBSTRG(current_language)); + lang = mbfl_no2language(MBSTRG(language)); if (lang != NULL) { tran_cs = lang->mail_charset; head_enc = lang->mail_header_encoding; @@ -3627,7 +3552,7 @@ PHP_FUNCTION(mb_send_mail) if (strcasecmp(param_name, "charset") == 0) { enum mbfl_no_encoding _tran_cs = tran_cs; - charset = php_strtok_r(NULL, "= ", &tmp); + charset = php_strtok_r(NULL, "= \"", &tmp); if (charset != NULL) { _tran_cs = mbfl_name2no_encoding(charset); } @@ -3696,7 +3621,7 @@ PHP_FUNCTION(mb_send_mail) /* Subject: */ if (subject != NULL && subject_len >= 0) { - orig_str.no_language = MBSTRG(current_language); + orig_str.no_language = MBSTRG(language); orig_str.val = (unsigned char *)subject; orig_str.len = subject_len; orig_str.no_encoding = MBSTRG(current_internal_encoding); @@ -3715,7 +3640,7 @@ PHP_FUNCTION(mb_send_mail) /* message body */ if (message != NULL) { - orig_str.no_language = MBSTRG(current_language); + orig_str.no_language = MBSTRG(language); orig_str.val = message; orig_str.len = message_len; orig_str.no_encoding = MBSTRG(current_internal_encoding); @@ -3832,7 +3757,7 @@ PHP_FUNCTION(mb_get_info) char *name; const struct mb_overload_def *over_func; zval *row1, *row2; - const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language)); + const mbfl_language *lang = mbfl_no2language(MBSTRG(language)); enum mbfl_no_encoding *entry; #ifdef ZEND_MULTIBYTE zval *row3; @@ -3885,7 +3810,7 @@ PHP_FUNCTION(mb_get_info) } else { add_assoc_string(return_value, "encoding_translation", "Off", 1); } - if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) { + if ((name = (char *)mbfl_no_language2name(MBSTRG(language))) != NULL) { add_assoc_string(return_value, "language", name, 1); } n = MBSTRG(current_detect_order_list_size); @@ -3980,7 +3905,7 @@ PHP_FUNCTION(mb_get_info) RETVAL_STRING("Off", 1); } } else if (!strcasecmp("language", typ)) { - if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) { + if ((name = (char *)mbfl_no_language2name(MBSTRG(language))) != NULL) { RETVAL_STRING(name, 1); } } else if (!strcasecmp("detect_order", typ)) { @@ -4071,14 +3996,12 @@ PHP_FUNCTION(mb_check_encoding) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter"); RETURN_FALSE; } - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); + mbfl_buffer_converter_illegal_mode(convd, MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE); + mbfl_buffer_converter_illegal_substchar(convd, 0); /* initialize string */ - mbfl_string_init(&string); + mbfl_string_init_set(&string, mbfl_no_language_neutral, no_encoding); mbfl_string_init(&result); - string.no_encoding = no_encoding; - string.no_language = MBSTRG(current_language); string.val = (unsigned char *)var; string.len = var_len; @@ -4086,18 +4009,13 @@ PHP_FUNCTION(mb_check_encoding) illegalchars = mbfl_buffer_illegalchars(convd); mbfl_buffer_converter_delete(convd); - if (ret != NULL) { - MBSTRG(illegalchars) += illegalchars; - if (illegalchars == 0 && strncmp(string.val, ret->val, string.len) == 0) { - efree(ret->val); - RETURN_TRUE; - } else { - efree(ret->val); - RETURN_FALSE; - } - } else { - RETURN_FALSE; - } + RETVAL_FALSE; + if (ret != NULL) { + if (illegalchars == 0 && string.len == result.len && memcmp(string.val, result.val, string.len) == 0) { + RETVAL_TRUE; + } + mbfl_string_clear(&result); + } } /* }}} */ @@ -4240,7 +4158,7 @@ MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, co mbfl_string_init(&string); mbfl_string_init(&result); string.no_encoding = from_encoding; - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); for (i=0; i haystack.len) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string."); - break; + { + int haystack_char_len = mbfl_strlen(&haystack); + + if (mode) { + if ((offset > 0 && offset > haystack_char_len) || + (offset < 0 && -offset > haystack_char_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); + break; + } + } else { + if (offset < 0 || offset > haystack_char_len) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string"); + break; + } + } } n = mbfl_strpos(&haystack, &needle, offset, mode); @@ -4407,7 +4337,7 @@ MBSTRING_API int php_mb_stripos(int mode, char *old_haystack, int old_haystack_l efree(needle.val); } - return n; + return n; } /* }}} */ @@ -4487,7 +4417,7 @@ char* php_mb_encoding_detector(const char *arg_string, int arg_length, char *arg } mbfl_string_init(&string); - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.val = (char*)arg_string; string.len = arg_length; ret = mbfl_identify_encoding_name(&string, elist, size, 0); @@ -4525,7 +4455,7 @@ int php_mb_encoding_converter(char **to, int *to_length, const char *from, mbfl_string_init(&string); mbfl_string_init(&result); string.no_encoding = from_encoding; - string.no_language = MBSTRG(current_language); + string.no_language = MBSTRG(language); string.val = (char*)from; string.len = from_length; @@ -4560,7 +4490,7 @@ int php_mb_oddlen(const char *string, int length, const char *encoding TSRMLS_DC mbfl_string mb_string; mbfl_string_init(&mb_string); - mb_string.no_language = MBSTRG(current_language); + mb_string.no_language = MBSTRG(language); mb_string.no_encoding = mbfl_name2no_encoding(encoding); mb_string.val = (char*)string; mb_string.len = length; diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index 02765d17f..6585f176d 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.h,v 1.66.2.4.2.6 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: mbstring.h,v 1.66.2.4.2.9 2008/12/31 11:17:39 sebastian Exp $ */ /* * PHP 4 Multibyte String module "mbstring" (currently only for Japanese) @@ -118,8 +118,6 @@ PHP_FUNCTION(mb_strimwidth); PHP_FUNCTION(mb_convert_encoding); PHP_FUNCTION(mb_detect_encoding); PHP_FUNCTION(mb_list_encodings); -PHP_FUNCTION(mb_list_encodings_alias_names); -PHP_FUNCTION(mb_list_mime_names); PHP_FUNCTION(mb_convert_kana); PHP_FUNCTION(mb_encode_mimeheader); PHP_FUNCTION(mb_decode_mimeheader); @@ -163,7 +161,6 @@ MBSTRING_API int php_mb_stripos(int mode, char *old_haystack, int old_haystack_l ZEND_BEGIN_MODULE_GLOBALS(mbstring) enum mbfl_no_language language; - enum mbfl_no_language current_language; enum mbfl_no_encoding internal_encoding; enum mbfl_no_encoding current_internal_encoding; #ifdef ZEND_MULTIBYTE diff --git a/ext/mbstring/oniguruma/enc/utf16_be.c b/ext/mbstring/oniguruma/enc/utf16_be.c index 536d107d6..33b520a23 100755 --- a/ext/mbstring/oniguruma/enc/utf16_be.c +++ b/ext/mbstring/oniguruma/enc/utf16_be.c @@ -2,7 +2,7 @@ utf16_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/enc/utf16_le.c b/ext/mbstring/oniguruma/enc/utf16_le.c index cefcb60ad..94fa8c3a7 100755 --- a/ext/mbstring/oniguruma/enc/utf16_le.c +++ b/ext/mbstring/oniguruma/enc/utf16_le.c @@ -2,7 +2,7 @@ utf16_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/enc/utf32_be.c b/ext/mbstring/oniguruma/enc/utf32_be.c index c1f066897..1ed127087 100755 --- a/ext/mbstring/oniguruma/enc/utf32_be.c +++ b/ext/mbstring/oniguruma/enc/utf32_be.c @@ -2,7 +2,7 @@ utf32_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/enc/utf32_le.c b/ext/mbstring/oniguruma/enc/utf32_le.c index c10cbfa77..13fcd65d9 100755 --- a/ext/mbstring/oniguruma/enc/utf32_le.c +++ b/ext/mbstring/oniguruma/enc/utf32_le.c @@ -2,7 +2,7 @@ utf32_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/enc/utf8.c b/ext/mbstring/oniguruma/enc/utf8.c index 42ce807f9..ec3e5f76b 100644 --- a/ext/mbstring/oniguruma/enc/utf8.c +++ b/ext/mbstring/oniguruma/enc/utf8.c @@ -2,7 +2,7 @@ utf8.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/oniguruma.h b/ext/mbstring/oniguruma/oniguruma.h index 5fb6ec154..154ec5d74 100644 --- a/ext/mbstring/oniguruma/oniguruma.h +++ b/ext/mbstring/oniguruma/oniguruma.h @@ -4,7 +4,7 @@ oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regcomp.c b/ext/mbstring/oniguruma/regcomp.c index a679a20b2..726f4b531 100644 --- a/ext/mbstring/oniguruma/regcomp.c +++ b/ext/mbstring/oniguruma/regcomp.c @@ -2,7 +2,7 @@ regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regenc.h b/ext/mbstring/oniguruma/regenc.h index 833dd2af4..c4ad678ca 100644 --- a/ext/mbstring/oniguruma/regenc.h +++ b/ext/mbstring/oniguruma/regenc.h @@ -4,7 +4,7 @@ regenc.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regerror.c b/ext/mbstring/oniguruma/regerror.c index 46dc6ae15..f0db90bb2 100644 --- a/ext/mbstring/oniguruma/regerror.c +++ b/ext/mbstring/oniguruma/regerror.c @@ -2,7 +2,7 @@ regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index a1685c8c6..e34c8ea36 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -2,7 +2,7 @@ regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regext.c b/ext/mbstring/oniguruma/regext.c index 1586012b8..e9ddbdabd 100755 --- a/ext/mbstring/oniguruma/regext.c +++ b/ext/mbstring/oniguruma/regext.c @@ -2,7 +2,7 @@ regext.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/reggnu.c b/ext/mbstring/oniguruma/reggnu.c index fdc7974ae..449b09709 100644 --- a/ext/mbstring/oniguruma/reggnu.c +++ b/ext/mbstring/oniguruma/reggnu.c @@ -2,7 +2,7 @@ reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regint.h b/ext/mbstring/oniguruma/regint.h index 4eff34c3b..cd238bb51 100644 --- a/ext/mbstring/oniguruma/regint.h +++ b/ext/mbstring/oniguruma/regint.h @@ -4,7 +4,7 @@ regint.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regparse.c b/ext/mbstring/oniguruma/regparse.c index 26fc35b11..1f87b2d09 100644 --- a/ext/mbstring/oniguruma/regparse.c +++ b/ext/mbstring/oniguruma/regparse.c @@ -2,7 +2,7 @@ regparse.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regparse.h b/ext/mbstring/oniguruma/regparse.h index c0cdded7b..62e9326e9 100644 --- a/ext/mbstring/oniguruma/regparse.h +++ b/ext/mbstring/oniguruma/regparse.h @@ -4,7 +4,7 @@ regparse.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regposix.c b/ext/mbstring/oniguruma/regposix.c index 23ae95693..2362657d3 100644 --- a/ext/mbstring/oniguruma/regposix.c +++ b/ext/mbstring/oniguruma/regposix.c @@ -2,7 +2,7 @@ regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regsyntax.c b/ext/mbstring/oniguruma/regsyntax.c index 542e599c8..54e320a6a 100644 --- a/ext/mbstring/oniguruma/regsyntax.c +++ b/ext/mbstring/oniguruma/regsyntax.c @@ -2,7 +2,7 @@ regsyntax.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/ext/mbstring/oniguruma/regversion.c b/ext/mbstring/oniguruma/regversion.c index cbebdb026..c430bc5c4 100644 --- a/ext/mbstring/oniguruma/regversion.c +++ b/ext/mbstring/oniguruma/regversion.c @@ -2,7 +2,7 @@ regversion.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2009 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -47,7 +47,7 @@ onig_copyright(void) { static char s[58]; - sprintf(s, "Oniguruma %d.%d.%d : Copyright (C) 2002-2008 K.Kosako", + sprintf(s, "Oniguruma %d.%d.%d : Copyright (C) 2002-2009 K.Kosako", ONIGURUMA_VERSION_MAJOR, ONIGURUMA_VERSION_MINOR, ONIGURUMA_VERSION_TEENY); diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index be4921edd..4c61f13db 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mbregex.c,v 1.53.2.1.2.7 2008/02/17 02:04:12 hirokawa Exp $ */ +/* $Id: php_mbregex.c,v 1.53.2.1.2.9 2008/12/31 11:17:39 sebastian Exp $ */ #ifdef HAVE_CONFIG_H @@ -66,6 +66,7 @@ void _php_mb_regex_globals_dtor(zend_mbstring_globals *pglobals TSRMLS_DC) /* {{{ PHP_MINIT_FUNCTION(mb_regex) */ PHP_MINIT_FUNCTION(mb_regex) { + onig_init(); return SUCCESS; } /* }}} */ @@ -73,6 +74,7 @@ PHP_MINIT_FUNCTION(mb_regex) /* {{{ PHP_MSHUTDOWN_FUNCTION(mb_regex) */ PHP_MSHUTDOWN_FUNCTION(mb_regex) { + onig_end(); return SUCCESS; } /* }}} */ diff --git a/ext/mbstring/php_mbregex.h b/ext/mbstring/php_mbregex.h index e583b0063..11d4d8ba0 100644 --- a/ext/mbstring/php_mbregex.h +++ b/ext/mbstring/php_mbregex.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mbregex.h,v 1.12.2.1.2.2 2007/12/31 07:20:07 sebastian Exp $ */ +/* $Id: php_mbregex.h,v 1.12.2.1.2.3 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef _PHP_MBREGEX_H #define _PHP_MBREGEX_H diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c index d90cabb84..ee22f4c9a 100644 --- a/ext/mbstring/php_unicode.c +++ b/ext/mbstring/php_unicode.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -308,7 +308,7 @@ MBSTRING_API char *php_unicode_convert_case(int case_mode, char *srcstr, size_t for (i = 0; i < unicode_len; i+=4) { int res = php_unicode_is_prop( BE_ARY_TO_UINT32(&unicode_ptr[i]), - UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT, 0); + UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT|UC_PO|UC_OS, 0); if (mode) { if (res) { UINT32_TO_BE_ARY(&unicode_ptr[i], diff --git a/ext/mbstring/php_unicode.h b/ext/mbstring/php_unicode.h index 1bbc77830..3df050009 100644 --- a/ext/mbstring/php_unicode.h +++ b/ext/mbstring/php_unicode.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/mbstring/tests/bug43840.phpt b/ext/mbstring/tests/bug43840.phpt new file mode 100644 index 000000000..626cd70f8 --- /dev/null +++ b/ext/mbstring/tests/bug43840.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test mb_strpos() function : mb_strpos bounds check is byte count rather than a character count +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +-- Offset is 20 -- +--Multibyte String:-- +int(20) +--ASCII String:-- +int(20) + +-- Offset is 21 -- +--Multibyte String:-- +bool(false) +--ASCII String:-- +bool(false) + +-- Offset is 22 -- +--Multibyte String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--ASCII String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +-- Offset is 53 -- +--Multibyte String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--ASCII String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +-- Offset is 54 -- +--Multibyte String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--ASCII String:-- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) diff --git a/ext/mbstring/tests/bug43841.phpt b/ext/mbstring/tests/bug43841.phpt new file mode 100644 index 000000000..9f2583286 --- /dev/null +++ b/ext/mbstring/tests/bug43841.phpt @@ -0,0 +1,85 @@ +--TEST-- +Test mb_strrpos() function : mb_strrpos offset is byte count for negative values +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- + +-- Offset is -25 -- +Multibyte String: + +Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +ASCII String: +mb_strrpos: + +Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +strrpos: + +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Offset is -24 -- +Multibyte String: + +Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +ASCII String: +mb_strrpos: + +Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +strrpos: + +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Offset is -13 -- +Multibyte String: +bool(false) +ASCII String: +mb_strrpos: +bool(false) +strrpos: +bool(false) + +-- Offset is -12 -- +Multibyte String: +int(9) +ASCII String: +mb_strrpos: +int(9) +strrpos: +int(9) diff --git a/ext/mbstring/tests/bug43993.phpt b/ext/mbstring/tests/bug43993.phpt new file mode 100644 index 000000000..662045d3a --- /dev/null +++ b/ext/mbstring/tests/bug43993.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #43993 (mb_substr_count() behaves differently to substr_count() with overlapping needles) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(1) +int(3) +int(2) +int(3) +int(4) +int(5) +int(0) +int(10) +int(0) diff --git a/ext/mbstring/tests/bug43994.phpt b/ext/mbstring/tests/bug43994.phpt new file mode 100644 index 000000000..39a39f642 --- /dev/null +++ b/ext/mbstring/tests/bug43994.phpt @@ -0,0 +1,129 @@ +--TEST-- +Test mb_ereg() function : mb_ereg 'successfully' matching incorrectly +--SKIPIF-- + +--FILE-- + + +--EXPECTF---- + +-- Iteration 1 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 2 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 3 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 4 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 5 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 6 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 7 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL + +-- Iteration 8 -- +Without $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +With $regs arg: + +Warning: mb_ereg(): empty pattern in %s on line %d +bool(false) +NULL diff --git a/ext/mbstring/tests/bug43998.phpt b/ext/mbstring/tests/bug43998.phpt new file mode 100644 index 000000000..da5e599da --- /dev/null +++ b/ext/mbstring/tests/bug43998.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test mb_strtolower() function : Two error messages returned for incorrect encoding for mb_strto[upper|lower] +--SKIPIF-- + +--FILE-- + +--EXPECTF-- + +-- Iteration 1 -- + +Warning: mb_strtolower(): Unknown encoding "12345" in %s on line %d +bool(false) + +Warning: mb_strtoupper(): Unknown encoding "12345" in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: mb_strtolower(): Unknown encoding "1.23456789E-9" in %s on line %d +bool(false) + +Warning: mb_strtoupper(): Unknown encoding "1.23456789E-9" in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: mb_strtolower(): Unknown encoding "1" in %s on line %d +bool(false) + +Warning: mb_strtoupper(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: mb_strtolower(): Unknown encoding "" in %s on line %d +bool(false) + +Warning: mb_strtoupper(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: mb_strtolower(): Unknown encoding "" in %s on line %d +bool(false) + +Warning: mb_strtoupper(): Unknown encoding "" in %s on line %d +bool(false) diff --git a/ext/mbstring/tests/bug45239.phpt b/ext/mbstring/tests/bug45239.phpt new file mode 100644 index 000000000..8d8ef4831 --- /dev/null +++ b/ext/mbstring/tests/bug45239.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #45239 (encoding detector hangs with mbstring.strict_detection enabled) +--INI-- +mbstring.strict_detection=1 +mbstring.http_input=UTF-8 +mbstring.internal_encoding=UTF-8 +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(5) "UTF-8" diff --git a/ext/mbstring/tests/bug45722.phpt b/ext/mbstring/tests/bug45722.phpt new file mode 100644 index 000000000..c05a010a8 --- /dev/null +++ b/ext/mbstring/tests/bug45722.phpt @@ -0,0 +1,8 @@ +--TEST-- +Bug #45722 (mb_check_encoding() crashes) +--FILE-- + +--EXPECT-- +bool(false) diff --git a/ext/mbstring/tests/bug45923.phpt b/ext/mbstring/tests/bug45923.phpt new file mode 100644 index 000000000..2d184ab01 --- /dev/null +++ b/ext/mbstring/tests/bug45923.phpt @@ -0,0 +1,202 @@ +--TEST-- +Bug #45923 (mb_st[r]ripos() offset not handled correctly) +--SKIPIF-- + +--INI-- +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECTF-- +int(0) +int(4) +int(8) +bool(false) +bool(false) + +Warning: strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: strpos(): Offset not contained in string in %s on line %d +bool(false) +int(0) +int(4) +int(8) +bool(false) +bool(false) + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +int(0) +int(4) +int(8) +bool(false) +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +int(0) +int(4) +int(8) +bool(false) +bool(false) + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +int(8) +int(8) +int(8) +bool(false) +bool(false) + +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +int(8) +int(8) +int(4) +int(8) +int(8) +int(8) +bool(false) +bool(false) + +Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +int(8) +int(8) +int(4) +int(8) +int(8) +int(8) +bool(false) +bool(false) + +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +int(8) +int(8) +int(4) +int(8) +int(8) +int(8) +bool(false) +bool(false) + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +int(8) +int(8) +int(4) diff --git a/ext/mbstring/tests/bug46843.phpt b/ext/mbstring/tests/bug46843.phpt new file mode 100644 index 000000000..136195cfe --- /dev/null +++ b/ext/mbstring/tests/bug46843.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #46843 (CP936 euro symbol is not converted properly) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(4) "20ac" +string(2) "80" diff --git a/ext/mbstring/tests/bug47399.phpt b/ext/mbstring/tests/bug47399.phpt new file mode 100644 index 000000000..79618688a --- /dev/null +++ b/ext/mbstring/tests/bug47399.phpt @@ -0,0 +1,523 @@ +--TEST-- +Bug #47399 (mb_check_encoding() returns true for some illegal SJIS characters) +--FILE-- + +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) diff --git a/ext/mbstring/tests/mb_convert_encoding_variation1.phpt b/ext/mbstring/tests/mb_convert_encoding_variation1.phpt new file mode 100644 index 000000000..74cd12869 --- /dev/null +++ b/ext/mbstring/tests/mb_convert_encoding_variation1.phpt @@ -0,0 +1,206 @@ +--TEST-- +Test mb_convert_encoding() function : usage variations - pass different data types as $to_encoding arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_convert_encoding() : usage variations *** + +-- Iteration 1 -- + +Warning: mb_convert_encoding(): Unknown encoding "0" in %s on line %d +string(0) "" + +-- Iteration 2 -- + +Warning: mb_convert_encoding(): Unknown encoding "1" in %s on line %d +string(0) "" + +-- Iteration 3 -- + +Warning: mb_convert_encoding(): Unknown encoding "12345" in %s on line %d +string(0) "" + +-- Iteration 4 -- + +Warning: mb_convert_encoding(): Unknown encoding "-2345" in %s on line %d +string(0) "" + +-- Iteration 5 -- + +Warning: mb_convert_encoding(): Unknown encoding "10.5" in %s on line %d +string(0) "" + +-- Iteration 6 -- + +Warning: mb_convert_encoding(): Unknown encoding "-10.5" in %s on line %d +string(0) "" + +-- Iteration 7 -- + +Warning: mb_convert_encoding(): Unknown encoding "123456789000" in %s on line %d +string(0) "" + +-- Iteration 8 -- + +Warning: mb_convert_encoding(): Unknown encoding "1.23456789E-9" in %s on line %d +string(0) "" + +-- Iteration 9 -- + +Warning: mb_convert_encoding(): Unknown encoding "0.5" in %s on line %d +string(0) "" + +-- Iteration 10 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 11 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 12 -- + +Warning: mb_convert_encoding(): Unknown encoding "1" in %s on line %d +string(0) "" + +-- Iteration 13 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 14 -- + +Warning: mb_convert_encoding(): Unknown encoding "1" in %s on line %d +string(0) "" + +-- Iteration 15 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 16 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 17 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 18 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 19 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 20 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 21 -- + +Warning: mb_convert_encoding(): Unknown encoding "Class A object" in %s on line %d +string(0) "" + +-- Iteration 22 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 23 -- +string(24) "68656c6c6f2c20776f726c64" + +-- Iteration 24 -- + +Warning: mb_convert_encoding(): Unknown encoding "Resource id #%d" in %s on line %d +string(0) "" +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_decode_mimeheader_basic.phpt b/ext/mbstring/tests/mb_decode_mimeheader_basic.phpt new file mode 100644 index 000000000..5374c31c1 --- /dev/null +++ b/ext/mbstring/tests/mb_decode_mimeheader_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_decode_mimeheader() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_decode_mimeheader() : basic functionality *** +string(60) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e38082" +string(60) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e38082" +===DONE=== diff --git a/ext/mbstring/tests/mb_decode_mimeheader_error.phpt b/ext/mbstring/tests/mb_decode_mimeheader_error.phpt new file mode 100644 index 000000000..c40cdbd64 --- /dev/null +++ b/ext/mbstring/tests/mb_decode_mimeheader_error.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test mb_decode_mimeheader() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_decode_mimeheader() : error conditions *** + +-- Testing mb_decode_mimeheader() function with Zero arguments -- + +Warning: mb_decode_mimeheader() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing mb_decode_mimeheader() function with more than expected no. of arguments -- + +Warning: mb_decode_mimeheader() expects exactly 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/mbstring/tests/mb_decode_mimeheader_variation1.phpt b/ext/mbstring/tests/mb_decode_mimeheader_variation1.phpt new file mode 100644 index 000000000..7a1c8868c --- /dev/null +++ b/ext/mbstring/tests/mb_decode_mimeheader_variation1.phpt @@ -0,0 +1,209 @@ +--TEST-- +p8_only +Title: Test mb_decode_mimeheader() function : usage variation +Internal Reason: we output an extra warning message +P8 only feature: Yes +Author: D. Kelsey +Date: 01/09/2008 +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for string + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_decode_mimeheader($value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_decode_mimeheader() : usage variation *** + +--int 0-- +string(1) "0" + +--int 1-- +string(1) "1" + +--int 12345-- +string(5) "12345" + +--int -12345-- +string(5) "-2345" + +--float 10.5-- +string(4) "10.5" + +--float -10.5-- +string(5) "-10.5" + +--float 12.3456789000e10-- +string(12) "123456789000" + +--float -12.3456789000e10-- +string(13) "-123456789000" + +--float .5-- +string(3) "0.5" + +--empty array-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +string(0) "" + +--lowercase null-- +string(0) "" + +--lowercase true-- +string(1) "1" + +--lowercase false-- +string(0) "" + +--uppercase TRUE-- +string(1) "1" + +--uppercase FALSE-- +string(0) "" + +--empty string DQ-- +string(0) "" + +--empty string SQ-- +string(0) "" + +--instance of classWithToString-- +string(14) "Class A object" + +--instance of classWithoutToString-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, object given, %s(%d) +NULL + +--undefined var-- +string(0) "" + +--unset var-- +string(0) "" + +--resource-- +Error: 2 - mb_decode_mimeheader() expects parameter 1 to be string, resource given, %s(%d) +NULL +===DONE=== diff --git a/ext/mbstring/tests/mb_decode_mimeheader_variation2.phpt b/ext/mbstring/tests/mb_decode_mimeheader_variation2.phpt new file mode 100644 index 000000000..7527c9aa5 --- /dev/null +++ b/ext/mbstring/tests/mb_decode_mimeheader_variation2.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mb_decode_mimeheader() function : variation +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_decode_mimeheader() : variation *** +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +===DONE=== diff --git a/ext/mbstring/tests/mb_decode_mimeheader_variation3.phpt b/ext/mbstring/tests/mb_decode_mimeheader_variation3.phpt new file mode 100644 index 000000000..968e76eaf --- /dev/null +++ b/ext/mbstring/tests/mb_decode_mimeheader_variation3.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test mb_decode_mimeheader() function : variation +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_decode_mimeheader() : variation *** +string(48) "e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f3f4f5f6f7f8f9" +===DONE=== diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt index fb0c28166..0487a194f 100644 --- a/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt +++ b/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt @@ -21,13 +21,22 @@ function_exists('mb_encode_mimeheader') or die("skip mb_encode_mimeheader() is n */ echo "*** Testing mb_encode_mimeheader() : basic ***\n"; -mb_internal_encoding('utf-8'); -$inputs = array('English' => 'This is an English string. 0123456789', - 'Japanese' => base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CC'), +$english = array('English' => 'This is an English string. 0123456789'); +$nonEnglish = array('Japanese' => base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CC'), 'Greek' => base64_decode('zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==')); -foreach ($inputs as $lang => $input) { +foreach ($english as $lang => $input) { + echo "\nLanguage: $lang\n"; + echo "-- Base 64: --\n"; + var_dump(mb_encode_mimeheader($input, 'UTF-8', 'B')); + echo "-- Quoted-Printable --\n"; + var_dump(mb_encode_mimeheader($input, 'UTF-8', 'Q')); +} + +mb_internal_encoding('utf-8'); + +foreach ($nonEnglish as $lang => $input) { echo "\nLanguage: $lang\n"; echo "-- Base 64: --\n"; var_dump(mb_encode_mimeheader($input, 'UTF-8', 'B')); diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt new file mode 100644 index 000000000..cd52fa526 --- /dev/null +++ b/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test mb_encode_mimeheader() function : basic functionality +--SKIPIF-- + + +--FILE-- + $sjis_string, + 'JIS' => $jis_string, + 'EUC_JP' => $euc_jp_string); + +foreach ($inputs as $lang => $input) { + echo "\nLanguage: $lang\n"; + echo "-- Base 64: --\n"; + mb_internal_encoding($lang); + $outEncoding = "UTF-8"; + var_dump(mb_encode_mimeheader($input, $outEncoding, 'B')); + echo "-- Quoted-Printable --\n"; + var_dump(mb_encode_mimeheader($input, $outEncoding, 'Q')); +} + +echo "Done"; +?> +--EXPECTF-- +*** Testing mb_encode_mimeheader() : basic2 *** + +Language: SJIS +-- Base 64: -- +string(99) "=?UTF-8?B?5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJc=?= + =?UTF-8?B?77yY77yZ44CC?=" +-- Quoted-Printable -- +string(201) "=?UTF-8?Q?=E6=97=A5=E6=9C=AC=E8=AA=9E=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= + =?UTF-8?Q?=E3=81=A7=E3=81=99=E3=80=82=30=31=32=33=34=EF=BC=95=EF=BC=96?= + =?UTF-8?Q?=EF=BC=97=EF=BC=98=EF=BC=99=E3=80=82?=" + +Language: JIS +-- Base 64: -- +string(99) "=?UTF-8?B?5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJc=?= + =?UTF-8?B?77yY77yZ44CC?=" +-- Quoted-Printable -- +string(201) "=?UTF-8?Q?=E6=97=A5=E6=9C=AC=E8=AA=9E=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= + =?UTF-8?Q?=E3=81=A7=E3=81=99=E3=80=82=30=31=32=33=34=EF=BC=95=EF=BC=96?= + =?UTF-8?Q?=EF=BC=97=EF=BC=98=EF=BC=99=E3=80=82?=" + +Language: EUC_JP +-- Base 64: -- +string(99) "=?UTF-8?B?5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJc=?= + =?UTF-8?B?77yY77yZ44CC?=" +-- Quoted-Printable -- +string(201) "=?UTF-8?Q?=E6=97=A5=E6=9C=AC=E8=AA=9E=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= + =?UTF-8?Q?=E3=81=A7=E3=81=99=E3=80=82=30=31=32=33=34=EF=BC=95=EF=BC=96?= + =?UTF-8?Q?=EF=BC=97=EF=BC=98=EF=BC=99=E3=80=82?=" +Done diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt new file mode 100644 index 000000000..b2f0c8b7d --- /dev/null +++ b/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test mb_encode_mimeheader() function : basic functionality +--SKIPIF-- + + +--FILE-- + $sjis_string, + 'JIS' => $jis_string, + 'EUC_JP' => $euc_jp_string); + +foreach ($inputs as $lang => $input) { + echo "\nLanguage: $lang\n"; + echo "-- Base 64: --\n"; + mb_internal_encoding($lang); + $outEncoding = $lang; + var_dump(mb_encode_mimeheader($input, $outEncoding, 'B')); + echo "-- Quoted-Printable --\n"; + var_dump(mb_encode_mimeheader($input, $outEncoding, 'Q')); +} + +echo "Done"; +?> +--EXPECTF-- +*** Testing mb_encode_mimeheader() : basic2 *** + +Language: SJIS +-- Base 64: -- +string(68) "=?Shift_JIS?B?k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==?=" +-- Quoted-Printable -- +string(124) "=?Shift_JIS?Q?=93=FA=96=7B=8C=EA=83e=83L=83X=83g=82=C5=82=B7=81B=30=31=32?= + =?Shift_JIS?Q?=33=34=82T=82U=82V=82W=82X=81B?=" + +Language: JIS +-- Base 64: -- +string(115) "=?ISO-2022-JP?B?GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYbKEI=?= + =?ISO-2022-JP?B?GyRCIzcjOCM5ISMbKEI=?=" +-- Quoted-Printable -- +string(209) "=?ISO-2022-JP?Q?=1B=24BF=7CK=5C=38l=25F=25-=25=39=25H=24G=24=39=1B=28B?= + =?ISO-2022-JP?Q?=1B=24B!=23=1B=28B=30=31=32=33=34=1B=24B=23=35=1B=28B?= + =?ISO-2022-JP?Q?=1B=24B=23=36=23=37=23=38=23=39!=23=1B=28B?=" + +Language: EUC_JP +-- Base 64: -- +string(65) "=?EUC-JP?B?xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow==?=" +-- Quoted-Printable -- +string(140) "=?EUC-JP?Q?=C6=FC=CB=DC=B8=EC=A5=C6=A5=AD=A5=B9=A5=C8=A4=C7=A4=B9=A1=A3?= + =?EUC-JP?Q?=30=31=32=33=34=A3=B5=A3=B6=A3=B7=A3=B8=A3=B9=A1=A3?=" +Done diff --git a/ext/mbstring/tests/mb_encode_mimeheader_indent.phpt b/ext/mbstring/tests/mb_encode_mimeheader_indent.phpt new file mode 100644 index 000000000..11fe23f53 --- /dev/null +++ b/ext/mbstring/tests/mb_encode_mimeheader_indent.phpt @@ -0,0 +1,901 @@ +--TEST-- +Test mb_encode_mimeheader() function : basic functionality, indent +--SKIPIF-- + + +--FILE-- + +--EXPECT-- +*** Testing mb_encode_mimeheader() : indent *** + +-- Iteration 0 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 1 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 2 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 3 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 4 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrU=?= + =?UTF-8?B?zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9?= + =?UTF-8?Q?=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36?= + =?UTF-8?Q?=37=38=39=2E?=" + +-- Iteration 5 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrU=?= + =?UTF-8?B?zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9?= + =?UTF-8?Q?=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36?= + =?UTF-8?Q?=37=38=39=2E?=" + +-- Iteration 6 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrU=?= + =?UTF-8?B?zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9?= + =?UTF-8?Q?=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36?= + =?UTF-8?Q?=37=38=39=2E?=" + +-- Iteration 7 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrU=?= + =?UTF-8?B?zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 8 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66?= + =?UTF-8?B?zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 9 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66?= + =?UTF-8?B?zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 10 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66?= + =?UTF-8?B?zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 11 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66?= + =?UTF-8?B?zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 12 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+M?= + =?UTF-8?B?IM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1?= + =?UTF-8?Q?=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20?= + =?UTF-8?Q?=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34?= + =?UTF-8?Q?=35=36=37=38=39=2E?=" + +-- Iteration 13 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+M?= + =?UTF-8?B?IM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 14 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+M?= + =?UTF-8?B?IM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 15 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+M?= + =?UTF-8?B?IM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 16 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrk=?= + =?UTF-8?B?zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 17 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrk=?= + =?UTF-8?B?zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 18 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrk=?= + =?UTF-8?B?zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD?= + =?UTF-8?Q?=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C?= + =?UTF-8?Q?=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33?= + =?UTF-8?Q?=34=35=36=37=38=39=2E?=" + +-- Iteration 19 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrk=?= + =?UTF-8?B?zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 20 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869?= + =?UTF-8?B?zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 21 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869?= + =?UTF-8?B?zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 22 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869?= + =?UTF-8?B?zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 23 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869?= + =?UTF-8?B?zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 24 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrs=?= + =?UTF-8?B?zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF?= + =?UTF-8?Q?=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA?= + =?UTF-8?Q?=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31?= + =?UTF-8?Q?=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 25 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrs=?= + =?UTF-8?B?zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 26 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrs=?= + =?UTF-8?B?zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 27 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrs=?= + =?UTF-8?B?zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 28 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67?= + =?UTF-8?B?zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 29 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67?= + =?UTF-8?B?zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 30 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67?= + =?UTF-8?B?zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9?= + =?UTF-8?Q?=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20?= + =?UTF-8?Q?=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 31 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67?= + =?UTF-8?B?zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 32 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSA=?= + =?UTF-8?B?zrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 33 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSA=?= + =?UTF-8?B?zrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 34 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSA=?= + =?UTF-8?B?zrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 35 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSA=?= + =?UTF-8?B?zrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 36 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrE=?= + =?UTF-8?B?zrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4?= + =?UTF-8?B?OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20?= + =?UTF-8?Q?=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD?= + =?UTF-8?Q?=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF?= + =?UTF-8?Q?=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 37 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrE=?= + =?UTF-8?B?zrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4?= + =?UTF-8?B?OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C?= + =?UTF-8?Q?=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7?= + =?UTF-8?Q?=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD?= + =?UTF-8?Q?=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 38 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrE=?= + =?UTF-8?B?zrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4?= + =?UTF-8?B?OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C?= + =?UTF-8?Q?=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7?= + =?UTF-8?Q?=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD?= + =?UTF-8?Q?=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 39 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrE=?= + =?UTF-8?B?zrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEyMzQ1Njc4?= + =?UTF-8?B?OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C?= + =?UTF-8?Q?=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB=CE=B7?= + =?UTF-8?Q?=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5=CE=BD?= + =?UTF-8?Q?=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 40 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869?= + =?UTF-8?B?zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2?= + =?UTF-8?B?Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 41 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869?= + =?UTF-8?B?zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2?= + =?UTF-8?B?Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 42 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869?= + =?UTF-8?B?zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2?= + =?UTF-8?B?Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 43 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869?= + =?UTF-8?B?zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2?= + =?UTF-8?B?Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 44 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrU=?= + =?UTF-8?B?zq/Ovc6xzrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEy?= + =?UTF-8?B?MzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 45 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrU=?= + =?UTF-8?B?zq/Ovc6xzrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEy?= + =?UTF-8?B?MzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84?= + =?UTF-8?Q?=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB=CE=BB?= + =?UTF-8?Q?=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC=CE=B5?= + =?UTF-8?Q?=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 46 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrU=?= + =?UTF-8?B?zq/Ovc6xzrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEy?= + =?UTF-8?B?MzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85?= + =?UTF-8?Q?=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB?= + =?UTF-8?Q?=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC?= + =?UTF-8?Q?=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 47 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wgzrU=?= + =?UTF-8?B?zq/Ovc6xzrkgzrXOu867zrfOvc65zrrPjCDOus61zq/OvM61zr3Ovy4gMDEy?= + =?UTF-8?B?MzQ1Njc4OS4=?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85?= + =?UTF-8?Q?=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB?= + =?UTF-8?Q?=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC?= + =?UTF-8?Q?=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 48 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wg?= + =?UTF-8?B?zrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAw?= + =?UTF-8?B?MTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85?= + =?UTF-8?Q?=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB?= + =?UTF-8?Q?=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC?= + =?UTF-8?Q?=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 49 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wg?= + =?UTF-8?B?zrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAw?= + =?UTF-8?B?MTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85?= + =?UTF-8?Q?=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB?= + =?UTF-8?Q?=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC?= + =?UTF-8?Q?=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 50 -- +string(130) "=?UTF-8?B?zpHPhc+Ez4wg?= + =?UTF-8?B?zrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAw?= + =?UTF-8?B?MTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85?= + =?UTF-8?Q?=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20=CE=B5=CE=BB?= + =?UTF-8?Q?=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5=CE=AF=CE=BC?= + =?UTF-8?Q?=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38=39=2E?=" + +-- Iteration 51 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 52 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 53 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 54 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 55 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 56 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 57 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 58 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 59 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 60 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 61 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 62 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 63 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 64 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 65 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 66 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 67 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 68 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 69 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 70 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 71 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 72 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 73 -- +string(118) " + =?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(252) " + =?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 74 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 75 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 76 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 77 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 78 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 79 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 80 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 81 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 82 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 83 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 84 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 85 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 86 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 87 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 88 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 89 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 90 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 91 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 92 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 93 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 94 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 95 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 96 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 97 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 98 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" + +-- Iteration 99 -- +string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868?= + =?UTF-8?B?zrXOvc6/LiAwMTIzNDU2Nzg5Lg==?=" +string(249) "=?UTF-8?Q?=CE=91=CF=85=CF=84=CF=8C=20=CE=B5=CE=AF=CE=BD=CE=B1=CE=B9=20?= + =?UTF-8?Q?=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CF=8C=20=CE=BA=CE=B5?= + =?UTF-8?Q?=CE=AF=CE=BC=CE=B5=CE=BD=CE=BF=2E=20=30=31=32=33=34=35=36=37=38?= + =?UTF-8?Q?=39=2E?=" +Done + diff --git a/ext/mbstring/tests/mb_encode_mimeheader_variation1.phpt b/ext/mbstring/tests/mb_encode_mimeheader_variation1.phpt index f440e1d44..7b5bd3066 100644 --- a/ext/mbstring/tests/mb_encode_mimeheader_variation1.phpt +++ b/ext/mbstring/tests/mb_encode_mimeheader_variation1.phpt @@ -19,8 +19,6 @@ function_exists('mb_encode_mimeheader') or die("skip mb_encode_mimeheader() is n echo "*** Testing mb_encode_mimeheader() : usage variations ***\n"; -mb_internal_encoding('utf-8'); - // Initialise function arguments not being substituted $charset = 'utf-8'; $transfer_encoding = 'B'; diff --git a/ext/mbstring/tests/mb_ereg.phpt b/ext/mbstring/tests/mb_ereg.phpt index d069b2593..8fc5b94da 100644 --- a/ext/mbstring/tests/mb_ereg.phpt +++ b/ext/mbstring/tests/mb_ereg.phpt @@ -17,14 +17,13 @@ output_handler= mb_regex_encoding( $test_enc ); $pat = mb_convert_encoding( $pat, $test_enc, $in_enc ); $str = mb_convert_encoding( $str, $test_enc, $in_enc ); - - printf( "(%d)%s\n", mb_ereg( $pat, $str, $reg ), ( is_array( $reg )? mb_convert_encoding( implode( ' ', $reg ), $in_enc, $test_enc ) : '' ) ); + printf( "(%d)%s\n", mb_ereg( $pat, $str, $reg ), ( is_array( $reg )? bin2hex(mb_convert_encoding( implode( b' ', $reg ), $in_enc, $test_enc )) : '' ) ); } function do_tests( $enc ) { - test_ereg( $enc, 'abc ([a-z]+) ([a-z]+) ([a-z]+)$', "abc def ghi jkl" ); - $pat = '([£á-£ú]+) ([ ¤¢-¤«]+)([¤«-¤Ê]+) ([¤ï-¤ó]+)$'; - test_ereg( $enc, $pat, '£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó' ); - test_ereg( $enc, $pat, '£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð' ); + test_ereg( $enc, b'abc ([a-z]+) ([a-z]+) ([a-z]+)$', b"abc def ghi jkl" ); + $pat = b'([£á-£ú]+) ([ ¤¢-¤«]+)([¤«-¤Ê]+) ([¤ï-¤ó]+)$'; + test_ereg( $enc, $pat, b'£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó' ); + test_ereg( $enc, $pat, b'£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð' ); } foreach( $encs as $enc ) { @@ -33,15 +32,15 @@ output_handler= ?> --EXPECT-- -(15)abc def ghi jkl def ghi jkl -(27)£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó £á£â£ã ¤¢¤ª¤¤ ¤« ¤³¤Ê ¤ï¤ñ¤ó -(27)£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð £í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð -(15)abc def ghi jkl def ghi jkl -(27)£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó £á£â£ã ¤¢¤ª¤¤ ¤« ¤³¤Ê ¤ï¤ñ¤ó -(27)£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð £í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð -(15)abc def ghi jkl def ghi jkl -(27)£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó £á£â£ã ¤¢¤ª¤¤ ¤« ¤³¤Ê ¤ï¤ñ¤ó -(27)£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð £í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð -(15)abc def ghi jkl def ghi jkl -(39)£á£â£ã ¤¢¤ª¤¤ ¤«¤³¤Ê ¤ï¤ñ¤ó £á£â£ã ¤¢¤ª¤¤ ¤« ¤³¤Ê ¤ï¤ñ¤ó -(39)£í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð £í£ú£ø£æ£ð ¤¦¤ª¤« ¤­¤« ¤ò¤ð +(15)6162632064656620676869206a6b6c2064656620676869206a6b6c +(27)a3e1a3e2a3e320a4a2a4aaa4a420a4aba4b3a4ca20a4efa4f1a4f320a3e1a3e2a3e320a4a2a4aaa4a420a4ab20a4b3a4ca20a4efa4f1a4f3 +(27)a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab20a4ada4ab20a4f2a4f020a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab2020a4ada4ab20a4f2a4f0 +(15)6162632064656620676869206a6b6c2064656620676869206a6b6c +(27)a3e1a3e2a3e320a4a2a4aaa4a420a4aba4b3a4ca20a4efa4f1a4f320a3e1a3e2a3e320a4a2a4aaa4a420a4ab20a4b3a4ca20a4efa4f1a4f3 +(27)a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab20a4ada4ab20a4f2a4f020a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab2020a4ada4ab20a4f2a4f0 +(15)6162632064656620676869206a6b6c2064656620676869206a6b6c +(27)a3e1a3e2a3e320a4a2a4aaa4a420a4aba4b3a4ca20a4efa4f1a4f320a3e1a3e2a3e320a4a2a4aaa4a420a4ab20a4b3a4ca20a4efa4f1a4f3 +(27)a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab20a4ada4ab20a4f2a4f020a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab2020a4ada4ab20a4f2a4f0 +(15)6162632064656620676869206a6b6c2064656620676869206a6b6c +(39)a3e1a3e2a3e320a4a2a4aaa4a420a4aba4b3a4ca20a4efa4f1a4f320a3e1a3e2a3e320a4a2a4aaa4a420a4ab20a4b3a4ca20a4efa4f1a4f3 +(39)a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab20a4ada4ab20a4f2a4f020a3eda3faa3f8a3e6a3f020a4a6a4aaa4ab2020a4ada4ab20a4f2a4f0 \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_basic.phpt b/ext/mbstring/tests/mb_ereg_basic.phpt index 0bdaf74ee..db2822339 100644 --- a/ext/mbstring/tests/mb_ereg_basic.phpt +++ b/ext/mbstring/tests/mb_ereg_basic.phpt @@ -23,9 +23,9 @@ if(mb_regex_encoding('utf-8') == true) { } else { echo "Could not set regex encoding to utf-8\n"; } -$string_ascii = 'This is an English string. 0123456789.'; -$regex_ascii1 = '(.*is)+.*\.[[:blank:]][0-9]{9}'; -$regex_ascii2 = '.*is+'; +$string_ascii = b'This is an English string. 0123456789.'; +$regex_ascii1 = b'(.*is)+.*\.[[:blank:]][0-9]{9}'; +$regex_ascii2 = b'.*is+'; $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); $regex_mb1 = base64_decode('KOaXpeacrOiqnikuKj8oWzEtOV0rKQ=='); @@ -37,9 +37,9 @@ var_dump(mb_ereg($regex_ascii1, $string_ascii)); var_dump(mb_ereg($regex_ascii2, $string_ascii)); echo "--With \$regs argument --\n"; var_dump(mb_ereg($regex_ascii1, $string_ascii, $regs_ascii1)); -var_dump($regs_ascii1); +base64_encode_var_dump($regs_ascii1); var_dump(mb_ereg($regex_ascii2, $string_ascii, $regs_ascii2)); -var_dump($regs_ascii2); +base64_encode_var_dump($regs_ascii2); echo "\n**-- Multibyte String --**\n"; echo "-- Without \$regs argument --\n"; @@ -76,7 +76,7 @@ function base64_encode_var_dump($regs) { } ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_ereg() : basic functionality *** Regex encoding set to utf-8 @@ -88,14 +88,14 @@ int(1) int(36) array(2) { [0]=> - string(36) "This is an English string. 012345678" + string(48) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4gMDEyMzQ1Njc4" [1]=> - string(17) "This is an Englis" + string(24) "VGhpcyBpcyBhbiBFbmdsaXM=" } int(17) array(1) { [0]=> - string(17) "This is an Englis" + string(24) "VGhpcyBpcyBhbiBFbmdsaXM=" } **-- Multibyte String --** diff --git a/ext/mbstring/tests/mb_ereg_error.phpt b/ext/mbstring/tests/mb_ereg_error.phpt index 21216257c..3610aea4e 100644 --- a/ext/mbstring/tests/mb_ereg_error.phpt +++ b/ext/mbstring/tests/mb_ereg_error.phpt @@ -21,15 +21,15 @@ echo "*** Testing mb_ereg() : error conditions ***\n"; //Test mb_ereg with one more than the expected number of arguments echo "\n-- Testing mb_ereg() function with more than expected no. of arguments --\n"; -$pattern = 'string_val'; -$string = 'string_val'; +$pattern = b'string_val'; +$string = b'string_val'; $registers = array(1, 2); $extra_arg = 10; var_dump( mb_ereg($pattern, $string, $registers, $extra_arg) ); // Testing mb_ereg with one less than the expected number of arguments echo "\n-- Testing mb_ereg() function with less than expected no. of arguments --\n"; -$pattern = 'string_val'; +$pattern = b'string_val'; var_dump( mb_ereg($pattern) ); echo "Done"; diff --git a/ext/mbstring/tests/mb_ereg_match_basic.phpt b/ext/mbstring/tests/mb_ereg_match_basic.phpt new file mode 100644 index 000000000..56710a93e --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_match_basic.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test mb_ereg_match() function : basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECTF-- + +*** Testing mb_ereg_match() : basic functionality *** + +-- ASCII string 1 -- +bool(true) + +-- ASCII string 2 -- +bool(false) + +-- Multibyte string 1 -- +bool(true) + +-- Multibyte string 2 -- +bool(false) +Done diff --git a/ext/mbstring/tests/mb_ereg_match_error1.phpt b/ext/mbstring/tests/mb_ereg_match_error1.phpt new file mode 100644 index 000000000..b36c68621 --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_match_error1.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test mb_ereg_match() function : error conditions - pass function incorrect number of arguments +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_match() : error conditions *** + +-- Testing mb_ereg_match() function with more than expected no. of arguments -- + +Warning: mb_ereg_match() expects at most 3 parameters, 4 given in %s on line %d +bool(false) + +-- Testing mb_ereg_match() function with less than expected no. of arguments -- + +Warning: mb_ereg_match() expects at least 2 parameters, 1 given in %s on line %d +bool(false) + +-- Testing mb_ereg_match() function with zero arguments -- + +Warning: mb_ereg_match() expects at least 2 parameters, 0 given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_replace_basic.phpt b/ext/mbstring/tests/mb_ereg_replace_basic.phpt new file mode 100644 index 000000000..5a07004d5 --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_basic.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test mb_ereg_replace() function : basic +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing mb_ereg_replace() : basic functionality *** + +-- ASCII string 1 -- +string(16) "6162632020313233" + +-- ASCII string 2 -- +string(14) "61626320646566" + +-- Multibyte string 1 -- +string(72) "e697a5e69cace8aa9e5f5f5f5f5f31323334efbc95efbc96efbc97efbc98efbc99e38082" + +-- Multibyte string 2 -- +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_replace_error.phpt b/ext/mbstring/tests/mb_ereg_replace_error.phpt new file mode 100644 index 000000000..bc98be8ba --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_error.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test mb_ereg_replace() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_replace() : error conditions *** + +-- Testing mb_ereg_replace() function with more than expected no. of arguments -- + +Warning: mb_ereg_replace() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_ereg_replace() function with less than expected no. of arguments -- + +Warning: mb_ereg_replace() expects at least 3 parameters, 2 given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_ereg_replace_variation1.phpt b/ext/mbstring/tests/mb_ereg_replace_variation1.phpt new file mode 100644 index 000000000..3e24979cd --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_variation1.phpt @@ -0,0 +1,170 @@ +--TEST-- +Test mb_ereg_replace() function : usage variations - +--INI-- +error_reporting=E_ALL & ~E_NOTICE +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_replace() : usage variations *** + +-- Iteration 1 -- +string(10) "string_val" + +-- Iteration 2 -- +string(10) "string_val" + +-- Iteration 3 -- +string(10) "string_val" + +-- Iteration 4 -- +string(10) "string_val" + +-- Iteration 5 -- +string(10) "string_val" + +-- Iteration 6 -- +string(10) "string_val" + +-- Iteration 7 -- +string(10) "string_val" + +-- Iteration 8 -- +string(10) "string_val" + +-- Iteration 9 -- +string(10) "string_val" + +-- Iteration 10 -- +string(10) "string_val" + +-- Iteration 11 -- +string(10) "string_val" + +-- Iteration 12 -- +string(10) "string_val" + +-- Iteration 13 -- +string(10) "string_val" + +-- Iteration 14 -- +string(10) "string_val" + +-- Iteration 15 -- +string(10) "string_val" + +-- Iteration 16 -- +string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val" + +-- Iteration 17 -- +string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val" + +-- Iteration 18 -- +string(10) "string_val" + +-- Iteration 19 -- +string(10) "string_val" + +-- Iteration 20 -- +string(10) "string_val" + +-- Iteration 21 -- +string(10) "string_val" + +-- Iteration 22 -- +string(10) "string_val" + +-- Iteration 23 -- +string(10) "string_val" +Done diff --git a/ext/mbstring/tests/mb_ereg_replace_variation2.phpt b/ext/mbstring/tests/mb_ereg_replace_variation2.phpt new file mode 100644 index 000000000..37a89fcba --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_variation2.phpt @@ -0,0 +1,178 @@ +--TEST-- +Test mb_ereg_replace() function : usage variations +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_replace() : usage variations *** + +-- Iteration 1 -- +string(10) "000000_000" + +-- Iteration 2 -- +string(10) "111111_111" + +-- Iteration 3 -- +string(46) "123451234512345123451234512345_123451234512345" + +-- Iteration 4 -- +string(46) "-2345-2345-2345-2345-2345-2345_-2345-2345-2345" + +-- Iteration 5 -- +string(37) "10.510.510.510.510.510.5_10.510.510.5" + +-- Iteration 6 -- +string(46) "-10.5-10.5-10.5-10.5-10.5-10.5_-10.5-10.5-10.5" + +-- Iteration 7 -- +string(109) "123456789000123456789000123456789000123456789000123456789000123456789000_123456789000123456789000123456789000" + +-- Iteration 8 -- +string(118) "1.23456789E-91.23456789E-91.23456789E-91.23456789E-91.23456789E-91.23456789E-9_1.23456789E-91.23456789E-91.23456789E-9" + +-- Iteration 9 -- +string(28) "0.50.50.50.50.50.5_0.50.50.5" + +-- Iteration 10 -- +string(1) "_" + +-- Iteration 11 -- +string(1) "_" + +-- Iteration 12 -- +string(10) "111111_111" + +-- Iteration 13 -- +string(1) "_" + +-- Iteration 14 -- +string(10) "111111_111" + +-- Iteration 15 -- +string(1) "_" + +-- Iteration 16 -- +string(1) "_" + +-- Iteration 17 -- +string(1) "_" + +-- Iteration 18 -- +string(46) "UTF-8UTF-8UTF-8UTF-8UTF-8UTF-8_UTF-8UTF-8UTF-8" + +-- Iteration 19 -- +string(46) "UTF-8UTF-8UTF-8UTF-8UTF-8UTF-8_UTF-8UTF-8UTF-8" + +-- Iteration 20 -- +string(46) "UTF-8UTF-8UTF-8UTF-8UTF-8UTF-8_UTF-8UTF-8UTF-8" + +-- Iteration 21 -- +string(46) "UTF-8UTF-8UTF-8UTF-8UTF-8UTF-8_UTF-8UTF-8UTF-8" + +-- Iteration 22 -- +string(1) "_" + +-- Iteration 23 -- +string(1) "_" + +-- Iteration 24 -- + +Warning: mb_ereg_replace() expects parameter 2 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_replace_variation3.phpt b/ext/mbstring/tests/mb_ereg_replace_variation3.phpt new file mode 100644 index 000000000..09da6cd3e --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_variation3.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test mb_ereg_replace() function : usage variations +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_replace() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(5) "12345" + +-- Iteration 4 -- +string(5) "-2345" + +-- Iteration 5 -- +string(4) "10.5" + +-- Iteration 6 -- +string(5) "-10.5" + +-- Iteration 7 -- +string(12) "123456789000" + +-- Iteration 8 -- +string(13) "1.23456789E-9" + +-- Iteration 9 -- +string(3) "0.5" + +-- Iteration 10 -- +string(0) "" + +-- Iteration 11 -- +string(0) "" + +-- Iteration 12 -- +string(1) "1" + +-- Iteration 13 -- +string(0) "" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(0) "" + +-- Iteration 16 -- +string(0) "" + +-- Iteration 17 -- +string(0) "" + +-- Iteration 18 -- +string(5) "UTF-8" + +-- Iteration 19 -- +string(5) "UTF-8" + +-- Iteration 20 -- +string(5) "UTF-8" + +-- Iteration 21 -- +string(5) "UTF-8" + +-- Iteration 22 -- +string(0) "" + +-- Iteration 23 -- +string(0) "" + +-- Iteration 24 -- + +Warning: mb_ereg_replace() expects parameter 3 to be string, resource given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_ereg_replace_variation4.phpt b/ext/mbstring/tests/mb_ereg_replace_variation4.phpt new file mode 100644 index 000000000..05b4f60da --- /dev/null +++ b/ext/mbstring/tests/mb_ereg_replace_variation4.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test mb_ereg_replace() function : usage variations +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_ereg_replace() : usage variations *** + +-- Iteration 1 -- +string(10) "str1n1_v1l" + +-- Iteration 2 -- +string(10) "str1n1_v1l" + +-- Iteration 3 -- +string(10) "str1n1_v1l" + +-- Iteration 4 -- +string(10) "str1n1_v1l" + +-- Iteration 5 -- +string(10) "str1n1_v1l" + +-- Iteration 6 -- +string(10) "str1n1_v1l" + +-- Iteration 7 -- +string(10) "str1n1_v1l" + +-- Iteration 8 -- +string(10) "str1n1_v1l" + +-- Iteration 9 -- +string(10) "str1n1_v1l" + +-- Iteration 10 -- +string(10) "str1n1_v1l" + +-- Iteration 11 -- +string(10) "str1n1_v1l" + +-- Iteration 12 -- +string(10) "str1n1_v1l" + +-- Iteration 13 -- +string(10) "str1n1_v1l" + +-- Iteration 14 -- +string(10) "str1n1_v1l" + +-- Iteration 15 -- +string(10) "str1n1_v1l" + +-- Iteration 16 -- +string(10) "str1n1_v1l" + +-- Iteration 17 -- +string(10) "str1n1_v1l" + +-- Iteration 18 -- +string(10) "str1n1_v1l" + +-- Iteration 19 -- +string(10) "str1n1_v1l" + +-- Iteration 20 -- +string(10) "str1n1_v1l" + +-- Iteration 21 -- +string(10) "str1n1_v1l" + +-- Iteration 22 -- +string(10) "str1n1_v1l" + +-- Iteration 23 -- +string(10) "str1n1_v1l" + +-- Iteration 24 -- + +Warning: mb_ereg_replace() expects parameter 4 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_variation3.phpt b/ext/mbstring/tests/mb_ereg_variation3.phpt index 0236e4410..d30ddc786 100644 --- a/ext/mbstring/tests/mb_ereg_variation3.phpt +++ b/ext/mbstring/tests/mb_ereg_variation3.phpt @@ -21,18 +21,18 @@ echo "*** Testing mb_ereg() : variation ***\n"; mb_regex_encoding('utf-8'); // have to set otherwise won't match $mb properly $mb = base64_decode('5pel5pys6Kqe'); -$character_classes = array ('aB1' => '[[:alnum:]]+', /*1*/ - 'aBcD' => '[[:alpha:]]+', - 'ab/=' => '[[:ascii:]]+', - " \t" => '[[:blank:]]+', - '234' => '[[:digit:]]+', /*5*/ - "$mb" => '[[:graph:]]+', - 'fjds' => '[[:lower:]]+', - "$mb\t" => '[[:print:]]+', - '.!"*@' => '[[:punct:]]+', - "\t" => '[[:space:]]+', /*10*/ - 'IDSJV' => '[[:upper:]]+', - '3b5D' => '[[:xdigit:]]+'); /*12*/ +$character_classes = array (b'aB1' => b'[[:alnum:]]+', /*1*/ + b'aBcD' => b'[[:alpha:]]+', + b'ab/=' => b'[[:ascii:]]+', + b" \t" => b'[[:blank:]]+', + b'234' => b'[[:digit:]]+', /*5*/ + "$mb" => b'[[:graph:]]+', + b'fjds' => b'[[:lower:]]+', + b"$mb\t" => b'[[:print:]]+', + b'.!"*@' => b'[[:punct:]]+', + b"\t" => b'[[:space:]]+', /*10*/ + b'IDSJV' => b'[[:upper:]]+', + b'3b5D' => b'[[:xdigit:]]+'); /*12*/ $iterator = 1; foreach($character_classes as $string => $pattern) { @@ -42,11 +42,7 @@ foreach($character_classes as $string => $pattern) { // make sure any multibyte output is in base 64 echo "\n-- Iteration $iterator --\n"; var_dump(mb_ereg($pattern, $string, $regs)); - if (strpos($string, $mb) === FALSE) { - var_dump($regs); - } else { - base64_encode_var_dump($regs); - } + base64_encode_var_dump($regs); $iterator++; } /** @@ -74,42 +70,42 @@ function base64_encode_var_dump($regs) { echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_ereg() : variation *** -- Iteration 1 -- int(3) array(1) { [0]=> - string(3) "aB1" + string(4) "YUIx" } -- Iteration 2 -- int(4) array(1) { [0]=> - string(4) "aBcD" + string(8) "YUJjRA==" } -- Iteration 3 -- int(4) array(1) { [0]=> - string(4) "ab/=" + string(8) "YWIvPQ==" } -- Iteration 4 -- int(2) array(1) { [0]=> - string(2) " " + string(4) "IAk=" } -- Iteration 5 -- int(3) array(1) { [0]=> - string(3) "234" + string(4) "MjM0" } -- Iteration 6 -- @@ -123,7 +119,7 @@ array(1) { int(4) array(1) { [0]=> - string(4) "fjds" + string(8) "Zmpkcw==" } -- Iteration 8 -- @@ -137,27 +133,27 @@ array(1) { int(5) array(1) { [0]=> - string(5) ".!"*@" + string(8) "LiEiKkA=" } -- Iteration 10 -- int(1) array(1) { [0]=> - string(1) " " + string(4) "CQ==" } -- Iteration 11 -- int(5) array(1) { [0]=> - string(5) "IDSJV" + string(8) "SURTSlY=" } -- Iteration 12 -- int(4) array(1) { [0]=> - string(4) "3b5D" + string(8) "M2I1RA==" } Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_ereg_variation4.phpt b/ext/mbstring/tests/mb_ereg_variation4.phpt index 7f7d6dfc9..788d4feff 100644 --- a/ext/mbstring/tests/mb_ereg_variation4.phpt +++ b/ext/mbstring/tests/mb_ereg_variation4.phpt @@ -23,19 +23,19 @@ mb_regex_encoding('utf-8'); //contains japanese characters, ASCII digits and different, UTF-8 encoded digits $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); -$character_classes = array ('[[:alnum:]]+', /*1*/ - '[[:alpha:]]+', - '[[:ascii:]]+', - '[[:blank:]]+', - '[[:cntrl:]]+',/*5*/ - '[[:digit:]]+', - '[[:graph:]]+', - '[[:lower:]]+', - '[[:print:]]+', - '[[:punct:]]+', /*10*/ - '[[:space:]]+', - '[[:upper:]]+', - '[[:xdigit:]]+'); /*13*/ +$character_classes = array (b'[[:alnum:]]+', /*1*/ + b'[[:alpha:]]+', + b'[[:ascii:]]+', + b'[[:blank:]]+', + b'[[:cntrl:]]+',/*5*/ + b'[[:digit:]]+', + b'[[:graph:]]+', + b'[[:lower:]]+', + b'[[:print:]]+', + b'[[:punct:]]+', /*10*/ + b'[[:space:]]+', + b'[[:upper:]]+', + b'[[:xdigit:]]+'); /*13*/ $iterator = 1; foreach ($character_classes as $pattern) { diff --git a/ext/mbstring/tests/mb_ereg_variation5.phpt b/ext/mbstring/tests/mb_ereg_variation5.phpt index 95bc59919..1cecb0942 100644 --- a/ext/mbstring/tests/mb_ereg_variation5.phpt +++ b/ext/mbstring/tests/mb_ereg_variation5.phpt @@ -20,16 +20,16 @@ echo "*** Testing mb_ereg() : usage variations ***\n"; mb_regex_encoding('utf-8'); -$string_ascii = 'This is an English string. 0123456789.'; +$string_ascii = b'This is an English string. 0123456789.'; $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); -$regex = '^.*?[[:blank:]]?[[:punct:][:digit:]]+\.?$'; +$regex = b'^.*?[[:blank:]]?[[:punct:][:digit:]]+\.?$'; echo "\nASCII String without \$regs arg:\t\t"; var_dump(mb_ereg($regex, $string_ascii)); echo "ASCII String with \$regs arg:\n"; var_dump(mb_ereg($regex, $string_ascii, $regs_ascii)); -var_dump($regs_ascii); +base64_encode_var_dump($regs_ascii); echo "\nMultibyte String without \$regs arg:\t"; var_dump(mb_ereg($regex, $string_mb)); @@ -69,7 +69,7 @@ ASCII String with $regs arg: int(38) array(1) { [0]=> - string(38) "This is an English string. 0123456789." + string(52) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4gMDEyMzQ1Njc4OS4=" } Multibyte String without $regs arg: int(1) diff --git a/ext/mbstring/tests/mb_ereg_variation6.phpt b/ext/mbstring/tests/mb_ereg_variation6.phpt index 33d2ee571..0d8687b95 100644 --- a/ext/mbstring/tests/mb_ereg_variation6.phpt +++ b/ext/mbstring/tests/mb_ereg_variation6.phpt @@ -24,20 +24,27 @@ if(mb_regex_encoding('utf-8') == true) { echo "Could not set regex encoding to utf-8\n"; } -$regex_char = array ('\w+', '\W+', '\s+', '\S+', '\d+', '\D+', '\b', '\B'); - -$string_ascii = 'This is an English string. 0123456789.'; +$regex_char = array ('\w+' => b'\w+', + '\W+' => b'\W+', + '\s+' => b'\s+', + '\S+' => b'\S+', + '\d+' => b'\d+', + '\D+' => b'\D+', + '\b' => b'\b', + '\B' => b'\B'); + +$string_ascii = b'This is an English string. 0123456789.'; $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); -foreach ($regex_char as $char) { - echo "\n--** Pattern is: $char **--\n"; +foreach ($regex_char as $displayChar => $char) { + echo "\n--** Pattern is: $displayChar **--\n"; if (@$regs_ascii || @$regs_mb) { $regs_ascii = null; $regs_mb = null; } echo "-- ASCII String: --\n"; var_dump(mb_ereg($char, $string_ascii, $regs_ascii)); - var_dump($regs_ascii); + base64_encode_var_dump($regs_ascii); echo "-- Multibyte String: --\n"; var_dump(mb_ereg($char, $string_mb, $regs_mb)); @@ -70,7 +77,7 @@ function base64_encode_var_dump($regs) { echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_ereg() : usage variations *** Regex encoding set to utf-8 @@ -79,7 +86,7 @@ Regex encoding set to utf-8 int(4) array(1) { [0]=> - string(4) "This" + string(8) "VGhpcw==" } -- Multibyte String: -- int(27) @@ -93,7 +100,7 @@ array(1) { int(1) array(1) { [0]=> - string(1) " " + string(4) "IA==" } -- Multibyte String: -- int(3) @@ -107,7 +114,7 @@ array(1) { int(1) array(1) { [0]=> - string(1) " " + string(4) "IA==" } -- Multibyte String: -- bool(false) @@ -118,7 +125,7 @@ NULL int(4) array(1) { [0]=> - string(4) "This" + string(8) "VGhpcw==" } -- Multibyte String: -- int(53) @@ -132,7 +139,7 @@ array(1) { int(10) array(1) { [0]=> - string(10) "0123456789" + string(16) "MDEyMzQ1Njc4OQ==" } -- Multibyte String: -- int(20) @@ -146,7 +153,7 @@ array(1) { int(27) array(1) { [0]=> - string(27) "This is an English string. " + string(36) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4g" } -- Multibyte String: -- int(30) diff --git a/ext/mbstring/tests/mb_ereg_variation7.phpt b/ext/mbstring/tests/mb_ereg_variation7.phpt index 81c958957..170497d80 100644 --- a/ext/mbstring/tests/mb_ereg_variation7.phpt +++ b/ext/mbstring/tests/mb_ereg_variation7.phpt @@ -27,10 +27,10 @@ if(mb_regex_encoding('utf-8') == true) { echo "Could not set regex encoding to utf-8\n"; } -$string_ascii = 'This is an English string. 0123456789.'; -$regex_ascii = '([A-Z]\w{1,4}is( [aeiou]|h)) ?.*\.\s[0-9]+(5([6-9][79]){2})[[:punct:]]$'; +$string_ascii = b'This is an English string. 0123456789.'; +$regex_ascii = b'([A-Z]\w{1,4}is( [aeiou]|h)) ?.*\.\s[0-9]+(5([6-9][79]){2})[[:punct:]]$'; var_dump(mb_ereg($regex_ascii, $string_ascii, $regs_ascii)); -var_dump($regs_ascii); +base64_encode_var_dump($regs_ascii); $string_mb = base64_decode('zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg=='); $regex_mb = base64_decode("W86RLc6pXShcdysgKSvOtVvOsS3PiVxzXSvOui4qKM+MfM6/KS4qXC5cc1swLTldKyg1KFs2LTldWzc5XSl7Mn0pW1s6cHVuY3Q6XV0k"); @@ -62,21 +62,21 @@ function base64_encode_var_dump($regs) { echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_ereg() : usage variations *** Regex encoding set to utf-8 int(38) array(5) { [0]=> - string(38) "This is an English string. 0123456789." + string(52) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4gMDEyMzQ1Njc4OS4=" [1]=> - string(6) "This i" + string(8) "VGhpcyBp" [2]=> - string(2) " i" + string(4) "IGk=" [3]=> - string(5) "56789" + string(8) "NTY3ODk=" [4]=> - string(2) "89" + string(4) "ODk=" } int(64) array(5) { diff --git a/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt b/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt new file mode 100644 index 000000000..241e1a692 --- /dev/null +++ b/ext/mbstring/tests/mb_internal_encoding_ini_basic2.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test INI mbstring.internal_encoding basic - encoding when valid specified +--SKIPIF-- + +--INI-- +mbstring.internal_encoding=ISO-8859-7 +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing INI mbstring.internal_encoding : basic functionality *** +ISO-8859-7 +ISO-8859-7 +UTF-8 +ISO-8859-7 +===DONE=== diff --git a/ext/mbstring/tests/mb_regex_encoding_variation2.phpt b/ext/mbstring/tests/mb_regex_encoding_variation2.phpt new file mode 100644 index 000000000..fc9c60037 --- /dev/null +++ b/ext/mbstring/tests/mb_regex_encoding_variation2.phpt @@ -0,0 +1,420 @@ +--TEST-- +Test mb_regex_encoding() function : usage variations - test different encodings +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_regex_encoding() : usage variations *** + +-- Iteration 1 -- +string(%d) "%s" +bool(true) +string(5) "UCS-4" + +-- Iteration 2 -- +string(5) "UCS-4" + +Warning: mb_regex_encoding(): Unknown encoding "UCS-4BE" in %s on line %d +bool(false) +string(5) "UCS-4" + +-- Iteration 3 -- +string(5) "UCS-4" +bool(true) +string(7) "UCS-4LE" + +-- Iteration 4 -- +string(7) "UCS-4LE" + +Warning: mb_regex_encoding(): Unknown encoding "UCS-2" in %s on line %d +bool(false) +string(7) "UCS-4LE" + +-- Iteration 5 -- +string(7) "UCS-4LE" + +Warning: mb_regex_encoding(): Unknown encoding "UCS-2BE" in %s on line %d +bool(false) +string(7) "UCS-4LE" + +-- Iteration 6 -- +string(7) "UCS-4LE" + +Warning: mb_regex_encoding(): Unknown encoding "UCS-2LE" in %s on line %d +bool(false) +string(7) "UCS-4LE" + +-- Iteration 7 -- +string(7) "UCS-4LE" +bool(true) +string(5) "UCS-4" + +-- Iteration 8 -- +string(5) "UCS-4" +bool(true) +string(5) "UCS-4" + +-- Iteration 9 -- +string(5) "UCS-4" +bool(true) +string(7) "UCS-4LE" + +-- Iteration 10 -- +string(7) "UCS-4LE" +bool(true) +string(6) "UTF-16" + +-- Iteration 11 -- +string(6) "UTF-16" +bool(true) +string(6) "UTF-16" + +-- Iteration 12 -- +string(6) "UTF-16" +bool(true) +string(8) "UTF-16LE" + +-- Iteration 13 -- +string(8) "UTF-16LE" + +Warning: mb_regex_encoding(): Unknown encoding "UTF-7" in %s on line %d +bool(false) +string(8) "UTF-16LE" + +-- Iteration 14 -- +string(8) "UTF-16LE" + +Warning: mb_regex_encoding(): Unknown encoding "UTF7-IMAP" in %s on line %d +bool(false) +string(8) "UTF-16LE" + +-- Iteration 15 -- +string(8) "UTF-16LE" +bool(true) +string(5) "UTF-8" + +-- Iteration 16 -- +string(5) "UTF-8" +bool(true) +string(5) "ASCII" + +-- Iteration 17 -- +string(5) "ASCII" +bool(true) +string(6) "EUC-JP" + +-- Iteration 18 -- +string(6) "EUC-JP" +bool(true) +string(4) "SJIS" + +-- Iteration 19 -- +string(4) "SJIS" +bool(true) +string(6) "EUC-JP" + +-- Iteration 20 -- +string(6) "EUC-JP" +bool(true) +string(4) "SJIS" + +-- Iteration 21 -- +string(4) "SJIS" + +Warning: mb_regex_encoding(): Unknown encoding "ISO-2022-JP" in %s on line %d +bool(false) +string(4) "SJIS" + +-- Iteration 22 -- +string(4) "SJIS" + +Warning: mb_regex_encoding(): Unknown encoding "JIS" in %s on line %d +bool(false) +string(4) "SJIS" + +-- Iteration 23 -- +string(4) "SJIS" +bool(true) +string(10) "ISO-8859-1" + +-- Iteration 24 -- +string(10) "ISO-8859-1" +bool(true) +string(10) "ISO-8859-2" + +-- Iteration 25 -- +string(10) "ISO-8859-2" +bool(true) +string(10) "ISO-8859-3" + +-- Iteration 26 -- +string(10) "ISO-8859-3" +bool(true) +string(10) "ISO-8859-4" + +-- Iteration 27 -- +string(10) "ISO-8859-4" +bool(true) +string(10) "ISO-8859-5" + +-- Iteration 28 -- +string(10) "ISO-8859-5" +bool(true) +string(10) "ISO-8859-6" + +-- Iteration 29 -- +string(10) "ISO-8859-6" +bool(true) +string(10) "ISO-8859-7" + +-- Iteration 30 -- +string(10) "ISO-8859-7" +bool(true) +string(10) "ISO-8859-8" + +-- Iteration 31 -- +string(10) "ISO-8859-8" +bool(true) +string(10) "ISO-8859-9" + +-- Iteration 32 -- +string(10) "ISO-8859-9" +bool(true) +string(11) "ISO-8859-10" + +-- Iteration 33 -- +string(11) "ISO-8859-10" +bool(true) +string(11) "ISO-8859-13" + +-- Iteration 34 -- +string(11) "ISO-8859-13" +bool(true) +string(11) "ISO-8859-14" + +-- Iteration 35 -- +string(11) "ISO-8859-14" +bool(true) +string(11) "ISO-8859-15" + +-- Iteration 36 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "byte2be" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 37 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "byte2le" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 38 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "byte4be" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 39 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "byte4le" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 40 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "BASE64" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 41 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "HTML-ENTITIES" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 42 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "7bit" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 43 -- +string(11) "ISO-8859-15" + +Warning: mb_regex_encoding(): Unknown encoding "8bit" in %s on line %d +bool(false) +string(11) "ISO-8859-15" + +-- Iteration 44 -- +string(11) "ISO-8859-15" +bool(true) +string(6) "EUC-CN" + +-- Iteration 45 -- +string(6) "EUC-CN" + +Warning: mb_regex_encoding(): Unknown encoding "CP936" in %s on line %d +bool(false) +string(6) "EUC-CN" + +-- Iteration 46 -- +string(6) "EUC-CN" + +Warning: mb_regex_encoding(): Unknown encoding "HZ" in %s on line %d +bool(false) +string(6) "EUC-CN" + +-- Iteration 47 -- +string(6) "EUC-CN" +bool(true) +string(6) "EUC-TW" + +-- Iteration 48 -- +string(6) "EUC-TW" + +Warning: mb_regex_encoding(): Unknown encoding "CP950" in %s on line %d +bool(false) +string(6) "EUC-TW" + +-- Iteration 49 -- +string(6) "EUC-TW" +bool(true) +string(4) "BIG5" + +-- Iteration 50 -- +string(4) "BIG5" +bool(true) +string(6) "EUC-KR" + +-- Iteration 51 -- +string(6) "EUC-KR" + +Warning: mb_regex_encoding(): Unknown encoding "UHC" in %s on line %d +bool(false) +string(6) "EUC-KR" + +-- Iteration 52 -- +string(6) "EUC-KR" + +Warning: mb_regex_encoding(): Unknown encoding "ISO-2022-KR" in %s on line %d +bool(false) +string(6) "EUC-KR" + +-- Iteration 53 -- +string(6) "EUC-KR" + +Warning: mb_regex_encoding(): Unknown encoding "Windows-1251" in %s on line %d +bool(false) +string(6) "EUC-KR" + +-- Iteration 54 -- +string(6) "EUC-KR" + +Warning: mb_regex_encoding(): Unknown encoding "Windows-1252" in %s on line %d +bool(false) +string(6) "EUC-KR" + +-- Iteration 55 -- +string(6) "EUC-KR" + +Warning: mb_regex_encoding(): Unknown encoding "CP866" in %s on line %d +bool(false) +string(6) "EUC-KR" + +-- Iteration 56 -- +string(6) "EUC-KR" +bool(true) +string(5) "KOI8R" +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_split.phpt b/ext/mbstring/tests/mb_split.phpt index abe12763e..6c0283fe8 100644 --- a/ext/mbstring/tests/mb_split.phpt +++ b/ext/mbstring/tests/mb_split.phpt @@ -23,15 +23,15 @@ mbstring.func_overload=0 } } - var_dump( mb_split( " ", "a b c d e f g" ) - == mb_split( "[[:space:]]", "a\nb\tc\nd e f g" ) ); + var_dump( mb_split( b" ", b"a b c d e f g" ) + == mb_split( b"[[:space:]]", b"a\nb\tc\nd e f g" ) ); for ( $i = 0; $i < 5; ++$i ) { - verify_split( " ", "a\tb\tc\td e\tf g", $i ); + verify_split( b" ", b"a\tb\tc\td e\tf g", $i ); } for ( $i = 1; $i < 5; ++$i ) { - verify_split( "\xa1\xa1+", "\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1", $i ); + verify_split( b"\xa1\xa1+", b"\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1", $i ); } ?> diff --git a/ext/mbstring/tests/mb_split_error.phpt b/ext/mbstring/tests/mb_split_error.phpt new file mode 100644 index 000000000..b48e21520 --- /dev/null +++ b/ext/mbstring/tests/mb_split_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test mb_split() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_split() : error conditions *** + +-- Testing mb_split() function with more than expected no. of arguments -- + +Warning: mb_split() expects at most 3 parameters, 4 given in %s on line %d +bool(false) + +-- Testing mb_split() function with less than expected no. of arguments -- + +Warning: mb_split() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_split_variation1.phpt b/ext/mbstring/tests/mb_split_variation1.phpt new file mode 100644 index 000000000..be3230e96 --- /dev/null +++ b/ext/mbstring/tests/mb_split_variation1.phpt @@ -0,0 +1,262 @@ +--TEST-- +Test mb_split() function : usage variations - different parameter types for pattern +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_split() : usage variations *** + +-- Iteration 1 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 2 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 3 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 4 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 5 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 6 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 7 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 8 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 9 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 10 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 11 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 12 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 13 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 14 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 15 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 16 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 17 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 18 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 19 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 20 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 21 -- +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 22 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 23 -- + +Warning: mb_split(): Empty regular expression in %s on line %d +array(1) { + [0]=> + string(13) "a b c d e f g" +} + +-- Iteration 24 -- + +Warning: mb_split() expects parameter 1 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_split_variation2.phpt b/ext/mbstring/tests/mb_split_variation2.phpt new file mode 100644 index 000000000..a6db2cc04 --- /dev/null +++ b/ext/mbstring/tests/mb_split_variation2.phpt @@ -0,0 +1,248 @@ +--TEST-- +Test mb_split() function : usage variations - different parameter types for string +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_split() : usage variations *** + +-- Iteration 1 -- +array(1) { + [0]=> + string(1) "0" +} + +-- Iteration 2 -- +array(1) { + [0]=> + string(1) "1" +} + +-- Iteration 3 -- +array(1) { + [0]=> + string(5) "12345" +} + +-- Iteration 4 -- +array(1) { + [0]=> + string(5) "-2345" +} + +-- Iteration 5 -- +array(1) { + [0]=> + string(4) "10.5" +} + +-- Iteration 6 -- +array(1) { + [0]=> + string(5) "-10.5" +} + +-- Iteration 7 -- +array(1) { + [0]=> + string(12) "123456789000" +} + +-- Iteration 8 -- +array(1) { + [0]=> + string(13) "1.23456789E-9" +} + +-- Iteration 9 -- +array(1) { + [0]=> + string(3) "0.5" +} + +-- Iteration 10 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 11 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 12 -- +array(1) { + [0]=> + string(1) "1" +} + +-- Iteration 13 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 14 -- +array(1) { + [0]=> + string(1) "1" +} + +-- Iteration 15 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 16 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 17 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 18 -- +array(1) { + [0]=> + string(5) "UTF-8" +} + +-- Iteration 19 -- +array(1) { + [0]=> + string(5) "UTF-8" +} + +-- Iteration 20 -- +array(1) { + [0]=> + string(5) "UTF-8" +} + +-- Iteration 21 -- +array(1) { + [0]=> + string(5) "UTF-8" +} + +-- Iteration 22 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 23 -- +array(1) { + [0]=> + string(0) "" +} + +-- Iteration 24 -- + +Warning: mb_split() expects parameter 2 to be string, resource given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_split_variation3.phpt b/ext/mbstring/tests/mb_split_variation3.phpt new file mode 100644 index 000000000..5422b169c --- /dev/null +++ b/ext/mbstring/tests/mb_split_variation3.phpt @@ -0,0 +1,331 @@ +--TEST-- +Test mb_split() function : usage variations - different parameter types for limit +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_split() : usage variations *** + +-- Iteration 1 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 2 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 3 -- +array(10) { + [0]=> + string(0) "" + [1]=> + string(0) "" + [2]=> + string(0) "" + [3]=> + string(0) "" + [4]=> + string(0) "" + [5]=> + string(0) "" + [6]=> + string(1) "_" + [7]=> + string(0) "" + [8]=> + string(0) "" + [9]=> + string(0) "" +} + +-- Iteration 4 -- +array(10) { + [0]=> + string(0) "" + [1]=> + string(0) "" + [2]=> + string(0) "" + [3]=> + string(0) "" + [4]=> + string(0) "" + [5]=> + string(0) "" + [6]=> + string(1) "_" + [7]=> + string(0) "" + [8]=> + string(0) "" + [9]=> + string(0) "" +} + +-- Iteration 5 -- +array(10) { + [0]=> + string(0) "" + [1]=> + string(0) "" + [2]=> + string(0) "" + [3]=> + string(0) "" + [4]=> + string(0) "" + [5]=> + string(0) "" + [6]=> + string(1) "_" + [7]=> + string(0) "" + [8]=> + string(0) "" + [9]=> + string(0) "" +} + +-- Iteration 6 -- +array(10) { + [0]=> + string(0) "" + [1]=> + string(0) "" + [2]=> + string(0) "" + [3]=> + string(0) "" + [4]=> + string(0) "" + [5]=> + string(0) "" + [6]=> + string(1) "_" + [7]=> + string(0) "" + [8]=> + string(0) "" + [9]=> + string(0) "" +} + +-- Iteration 7 -- +array(10) { + [0]=> + string(0) "" + [1]=> + string(0) "" + [2]=> + string(0) "" + [3]=> + string(0) "" + [4]=> + string(0) "" + [5]=> + string(0) "" + [6]=> + string(1) "_" + [7]=> + string(0) "" + [8]=> + string(0) "" + [9]=> + string(0) "" +} + +-- Iteration 8 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 9 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 10 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 11 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 12 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 13 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 14 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 15 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 16 -- + +Warning: mb_split() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: mb_split() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: mb_split() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: mb_split() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: mb_split() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: mb_split() expects parameter 3 to be long, object given in %s on line %d +bool(false) + +-- Iteration 22 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 23 -- +array(1) { + [0]=> + string(10) "string_val" +} + +-- Iteration 24 -- + +Warning: mb_split() expects parameter 3 to be long, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_stripos.phpt b/ext/mbstring/tests/mb_stripos.phpt new file mode 100644 index 000000000..c21cdf3a5 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos.phpt @@ -0,0 +1,178 @@ +--TEST-- +mb_stripos() +--SKIPIF-- + +--FILE-- + + +--EXPECT-- +== POSITIVE OFFSET == +10 +0 +3 +0 +34 +30 +33 +30 +== NEGATIVE OFFSET == +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +ERR: Warning +OK_NEGATIVE_OFFSET +== OUT OF RANGE == +OK_OUT_RANGE +OK_OUT_RANGE +OK_OUT_RANGE +OK_OUT_RANGE +== NON-EXISTENT == +OK_STR +OK_NEWLINE +== NO ENCODING PARAMETER == +10 +0 +3 +0 +OK_STR +OK_NEWLINE +== NO OFFSET AND ENCODING PARAMETER == +10 +0 +3 +0 +OK_STR +OK_NEWLINE +== INVALID PARAMETER TEST == +ERR: Warning +OK_NULL +ERR: Warning +OK_ARRAY +ERR: Warning +OK_OBJECT +ERR: Warning +OK_BAD_ENCODING + diff --git a/ext/mbstring/tests/mb_stripos_basic.phpt b/ext/mbstring/tests/mb_stripos_basic.phpt new file mode 100644 index 000000000..bb33bb107 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_basic.phpt @@ -0,0 +1,158 @@ +--TEST-- +Test mb_stripos() function : basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : basic functionality*** + + -- ASCII Strings, needle should be found -- +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) +int(4) + + -- ASCII Strings, needle should not be found -- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + + -- Greek Strings, needle should be found -- +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) + + -- ASCII Strings, needle should not be found -- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +Done diff --git a/ext/mbstring/tests/mb_stripos_basic2.phpt b/ext/mbstring/tests/mb_stripos_basic2.phpt new file mode 100644 index 000000000..f9131d987 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_basic2.phpt @@ -0,0 +1,129 @@ +--TEST-- +Test mb_stripos() function : basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : basic functionality*** + + -- ASCII Strings -- +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) +int(4) +int(13) + + -- Greek Strings -- +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +int(2) +int(11) +Done + diff --git a/ext/mbstring/tests/mb_stripos_error1.phpt b/ext/mbstring/tests/mb_stripos_error1.phpt new file mode 100644 index 000000000..c4ea5d771 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_error1.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mb_stripos() function : error conditions - Pass incorrect number of args +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : error conditions *** + +-- Testing mb_stripos() function with more than expected no. of arguments -- + +Warning: mb_stripos() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_stripos() function with less than expected no. of arguments -- + +Warning: mb_stripos() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_stripos_error2.phpt b/ext/mbstring/tests/mb_stripos_error2.phpt new file mode 100644 index 000000000..c5e5c8d3b --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_stripos() function : error conditions - Pass unknown encoding +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : error conditions *** + +Warning: mb_stripos(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_stripos_variation1.phpt b/ext/mbstring/tests/mb_stripos_variation1.phpt new file mode 100644 index 000000000..ab7f75ee5 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_variation1.phpt @@ -0,0 +1,183 @@ +--TEST-- +Test mb_stripos() function : usage variations - pass different data types to $haystack arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- +bool(false) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- + +Warning: mb_stripos() expects parameter 1 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_stripos_variation2.phpt b/ext/mbstring/tests/mb_stripos_variation2.phpt new file mode 100644 index 000000000..47a891fb7 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_variation2.phpt @@ -0,0 +1,183 @@ +--TEST-- +Test mb_stripos() function : usage variations - pass different data types as $needle arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- + +Warning: mb_stripos() expects parameter 2 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_stripos_variation3.phpt b/ext/mbstring/tests/mb_stripos_variation3.phpt new file mode 100644 index 000000000..41a365abf --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_variation3.phpt @@ -0,0 +1,203 @@ +--TEST-- +Test mb_stripos() function : usage variations - pass different data types as $offset arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_stripos() : usage variations *** + +-- Iteration 1 -- +int(8) + +-- Iteration 2 -- +int(8) + +-- Iteration 3 -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +-- Iteration 8 -- +int(8) + +-- Iteration 9 -- +int(8) + +-- Iteration 10 -- +int(8) + +-- Iteration 11 -- +int(8) + +-- Iteration 12 -- +int(8) + +-- Iteration 13 -- +int(8) + +-- Iteration 14 -- +int(8) + +-- Iteration 15 -- +int(8) + +-- Iteration 16 -- + +Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: mb_stripos() expects parameter 3 to be long, object given in %s on line %d +bool(false) + +-- Iteration 22 -- +int(8) + +-- Iteration 23 -- +int(8) + +-- Iteration 24 -- + +Warning: mb_stripos() expects parameter 3 to be long, resource given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_stripos_variation4.phpt b/ext/mbstring/tests/mb_stripos_variation4.phpt new file mode 100644 index 000000000..f330bbdae --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_variation4.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test mb_stripos() function : usage variations - pass different data types as $encoding arg +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- +*** Testing mb_stripos() : usage variations *** + +-- Iteration 1 -- + +Warning: mb_stripos(): Unknown encoding "0" in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: mb_stripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: mb_stripos(): Unknown encoding "12345" in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: mb_stripos(): Unknown encoding "-2345" in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: mb_stripos(): Unknown encoding "10.5" in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: mb_stripos(): Unknown encoding "-10.5" in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: mb_stripos(): Unknown encoding "123456789000" in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: mb_stripos(): Unknown encoding "1.23456789E-9" in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: mb_stripos(): Unknown encoding "0.5" in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: mb_stripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: mb_stripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 18 -- +int(7) + +-- Iteration 19 -- +int(7) + +-- Iteration 20 -- +int(7) + +-- Iteration 21 -- +int(7) + +-- Iteration 22 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: mb_stripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: mb_stripos() expects parameter 4 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_stripos_variation5_Bug45923.phpt b/ext/mbstring/tests/mb_stripos_variation5_Bug45923.phpt new file mode 100644 index 000000000..134a4c3ec --- /dev/null +++ b/ext/mbstring/tests/mb_stripos_variation5_Bug45923.phpt @@ -0,0 +1,119 @@ +--TEST-- +Test mb_stripos() function : usage variations - Pass different integers as $offset argument +--XFAIL-- +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- +*** Testing mb_stripos() : usage variations *** + +**-- Offset is: -10 --** +-- ASCII String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 0 --** +-- ASCII String -- +int(9) +--Multibyte String -- +int(9) + +**-- Offset is: 10 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 20 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 30 --** +-- ASCII String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 40 --** +-- ASCII String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 50 --** +-- ASCII String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 60 --** +-- ASCII String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_stripos(): Offset not contained in string in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_stristr_basic.phpt b/ext/mbstring/tests/mb_stristr_basic.phpt new file mode 100644 index 000000000..9340d3511 --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_basic.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test mb_stristr() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_stristr() : basic functionality *** + +-- ASCII string: needle exists -- +string(10) "6263646566" +string(10) "6263646566" +string(2) "61" + +-- ASCII string: needle doesn't exist -- +bool(false) + +-- Multibyte string: needle exists -- +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +string(44) "ceb1ceb2ceb3ceb4ceb5ceb6ceb7ceb8ceb9cebacebb" + +-- Multibyte string: needle doesn't exist -- +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_error1.phpt b/ext/mbstring/tests/mb_stristr_error1.phpt new file mode 100644 index 000000000..3c766c4fa --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test mb_stristr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : error conditions *** + +-- Testing mb_stristr() function with more than expected no. of arguments -- + +Warning: mb_stristr() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_stristr() function with less than expected no. of arguments -- + +Warning: mb_stristr() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_error2.phpt b/ext/mbstring/tests/mb_stristr_error2.phpt new file mode 100644 index 000000000..73f13dc85 --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_stristr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : error conditions *** + +-- Testing mb_stristr() with unknown encoding -- + +Warning: mb_stristr(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_variation1.phpt b/ext/mbstring/tests/mb_stristr_variation1.phpt new file mode 100644 index 000000000..ecea23eca --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_variation1.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_stristr() function : usage variation - various haystacks, needle won't be found +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for haystack + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_stristr($value, $needle, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_stristr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_stristr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_stristr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_stristr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_stristr() expects parameter 1 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_stristr() expects parameter 1 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_variation2.phpt b/ext/mbstring/tests/mb_stristr_variation2.phpt new file mode 100644 index 000000000..714c0e570 --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_variation2.phpt @@ -0,0 +1,215 @@ +--TEST-- +Test mb_stristr() function : usage variation - different types of needle. +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for needle + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_stristr($haystack, $value, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_stristr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_stristr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_stristr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_stristr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_stristr() expects parameter 2 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_stristr(): Empty delimiter, %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_stristr() expects parameter 2 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_variation3.phpt b/ext/mbstring/tests/mb_stristr_variation3.phpt new file mode 100644 index 000000000..30a7e4989 --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_variation3.phpt @@ -0,0 +1,232 @@ +--TEST-- +Test mb_stristr() function : usage variation - different values for part +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for part + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mb_stristr($haystack, $needle, $value, $encoding); + if ($res === false) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : usage variation *** + +--int 0-- +string(8) "5f76616c" + +--int 1-- +string(12) "737472696e67" + +--int 12345-- +string(12) "737472696e67" + +--int -12345-- +string(12) "737472696e67" + +--float 10.5-- +string(12) "737472696e67" + +--float -10.5-- +string(12) "737472696e67" + +--float 12.3456789000e10-- +string(12) "737472696e67" + +--float -12.3456789000e10-- +string(12) "737472696e67" + +--float .5-- +string(12) "737472696e67" + +--empty array-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +string(8) "5f76616c" + +--lowercase null-- +string(8) "5f76616c" + +--lowercase true-- +string(12) "737472696e67" + +--lowercase false-- +string(8) "5f76616c" + +--uppercase TRUE-- +string(12) "737472696e67" + +--uppercase FALSE-- +string(8) "5f76616c" + +--empty string DQ-- +string(8) "5f76616c" + +--empty string SQ-- +string(8) "5f76616c" + +--string DQ-- +string(12) "737472696e67" + +--string SQ-- +string(12) "737472696e67" + +--mixed case string-- +string(12) "737472696e67" + +--heredoc-- +string(12) "737472696e67" + +--instance of classWithToString-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +string(8) "5f76616c" + +--unset var-- +string(8) "5f76616c" + +--resource-- +Error: 2 - mb_stristr() expects parameter 3 to be boolean, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_variation4.phpt b/ext/mbstring/tests/mb_stristr_variation4.phpt new file mode 100644 index 000000000..d547543ae --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_variation4.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test mb_stristr() function : usage variation - different encoding types +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for encoding + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_stristr($haystack, $needle, $part, $value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_stristr() : usage variation *** + +--int 0-- +Error: 2 - mb_stristr(): Unknown encoding "0", %s(%d) +bool(false) + +--int 1-- +Error: 2 - mb_stristr(): Unknown encoding "1", %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mb_stristr(): Unknown encoding "12345", %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mb_stristr(): Unknown encoding "-2345", %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mb_stristr(): Unknown encoding "10.5", %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mb_stristr(): Unknown encoding "-10.5", %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mb_stristr(): Unknown encoding "123456789000", %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mb_stristr(): Unknown encoding "-123456789000", %s(%d) +bool(false) + +--float .5-- +Error: 2 - mb_stristr(): Unknown encoding "0.5", %s(%d) +bool(false) + +--empty array-- +Error: 2 - mb_stristr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_stristr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_stristr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_stristr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mb_stristr(): Unknown encoding "1", %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mb_stristr(): Unknown encoding "1", %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mb_stristr(): Unknown encoding "invalid", %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_stristr() expects parameter 4 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_stristr(): Unknown encoding "", %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_stristr() expects parameter 4 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_stristr_variation5.phpt b/ext/mbstring/tests/mb_stristr_variation5.phpt new file mode 100644 index 000000000..5d5482010 --- /dev/null +++ b/ext/mbstring/tests/mb_stristr_variation5.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test mb_stristr() function : usage variation - multiple needles +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_stristr() : basic functionality *** + +-- ASCII string: needle exists -- +string(24) "6263446566207a4263447978" +string(2) "61" +string(24) "6263446566207a4263447978" +string(2) "61" +string(24) "6263446566207a4263447978" +string(2) "61" + +-- Multibyte string: needle exists -- +string(54) "cebccebdcebece9fcea0cea120cebacebbce9cce9dcebecebfcea0" +string(8) "cebacebb" +string(54) "cebccebdcebece9fcea0cea120cebacebbce9cce9dcebecebfcea0" +string(8) "cebacebb" +string(54) "cebccebdcebece9fcea0cea120cebacebbce9cce9dcebecebfcea0" +string(8) "cebacebb" +===DONE=== diff --git a/ext/mbstring/tests/mb_strlen_basic.phpt b/ext/mbstring/tests/mb_strlen_basic.phpt index 6214f3069..a5dbe512b 100644 --- a/ext/mbstring/tests/mb_strlen_basic.phpt +++ b/ext/mbstring/tests/mb_strlen_basic.phpt @@ -18,7 +18,7 @@ function_exists('mb_strlen') or die("skip mb_strlen() is not available in this b echo "*** Testing mb_strlen() : basic functionality***\n"; -$string_ascii = 'abc def'; +$string_ascii = b'abc def'; //Japanese string in UTF-8 $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); diff --git a/ext/mbstring/tests/mb_strlen_variation1.phpt b/ext/mbstring/tests/mb_strlen_variation1.phpt index a64fad17e..3c9cfe3c8 100644 --- a/ext/mbstring/tests/mb_strlen_variation1.phpt +++ b/ext/mbstring/tests/mb_strlen_variation1.phpt @@ -29,12 +29,12 @@ unset ($unset_var); class classA { public function __toString() { - return "Class A object"; + return b"Class A object"; } } // heredoc string -$heredoc = << ---EXPECTF-- +--EXPECT-- *** Testing mb_strpos() : basic functionality*** -- ASCII string 1 -- diff --git a/ext/mbstring/tests/mb_strpos_variation2.phpt b/ext/mbstring/tests/mb_strpos_variation2.phpt index ed62ea8aa..d6feb4923 100644 --- a/ext/mbstring/tests/mb_strpos_variation2.phpt +++ b/ext/mbstring/tests/mb_strpos_variation2.phpt @@ -19,7 +19,7 @@ function_exists('mb_strpos') or die("skip mb_strpos() is not available in this b echo "*** Testing mb_strpos() : usage variations ***\n"; // Initialise function arguments not being substituted -$haystack = 'string_val'; +$haystack = b'string_val'; $offset = 0; $encoding = 'utf-8'; @@ -31,12 +31,12 @@ unset ($unset_var); class classA { public function __toString() { - return "Class A object"; + return b"Class A object"; } } // heredoc string -$heredoc = << +--FILE-- + + +--EXPECTF-- +*** Testing mb_strpos() : usage variations *** + +**-- Offset is: -10 --** +-- ASCII String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 0 --** +-- ASCII String -- +int(9) +--Multibyte String -- +int(9) + +**-- Offset is: 10 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 20 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 30 --** +-- ASCII String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 40 --** +-- ASCII String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 50 --** +-- ASCII String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) + +**-- Offset is: 60 --** +-- ASCII String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strpos(): Offset not contained in string in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strrchr_basic.phpt b/ext/mbstring/tests/mb_strrchr_basic.phpt new file mode 100644 index 000000000..595d808d4 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_basic.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test mb_strrchr() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strrchr() : basic functionality *** + +-- ASCII string: needle exists -- +string(6) "646566" +string(6) "646566" +string(8) "61626320" + +-- ASCII string: needle doesn't exist -- +bool(false) + +-- Multibyte string: needle exists -- +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(0) "" + +-- Multibyte string: needle doesn't exist -- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strrchr_error1.phpt b/ext/mbstring/tests/mb_strrchr_error1.phpt new file mode 100644 index 000000000..5ebb3d06f --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test mb_strrchr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : error conditions *** + +-- Testing mb_strrchr() function with more than expected no. of arguments -- + +Warning: mb_strrchr() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_strrchr() function with less than expected no. of arguments -- + +Warning: mb_strrchr() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_error2.phpt b/ext/mbstring/tests/mb_strrchr_error2.phpt new file mode 100644 index 000000000..cfbcd66a0 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_strrchr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : error conditions *** + +-- Testing mb_strrchr() with unknown encoding -- + +Warning: mb_strrchr(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation1.phpt b/ext/mbstring/tests/mb_strrchr_variation1.phpt new file mode 100644 index 000000000..18eb52ea2 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation1.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_strrchr() function : usage variation - various haystacks, needle won't be found +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for haystack + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrchr($value, $needle, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_strrchr() expects parameter 1 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation2.phpt b/ext/mbstring/tests/mb_strrchr_variation2.phpt new file mode 100644 index 000000000..f9b710783 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation2.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_strrchr() function : usage variation - different types of needle. +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for needle + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrchr($haystack, $value, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_strrchr() expects parameter 2 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation3.phpt b/ext/mbstring/tests/mb_strrchr_variation3.phpt new file mode 100644 index 000000000..4a16f55b4 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation3.phpt @@ -0,0 +1,232 @@ +--TEST-- +Test mb_strrchr() function : usage variation - different values for part +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for part + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mb_strrchr($haystack, $needle, $value, $encoding); + if ($res === false) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : usage variation *** + +--int 0-- +string(8) "5f76616c" + +--int 1-- +string(12) "737472696e67" + +--int 12345-- +string(12) "737472696e67" + +--int -12345-- +string(12) "737472696e67" + +--float 10.5-- +string(12) "737472696e67" + +--float -10.5-- +string(12) "737472696e67" + +--float 12.3456789000e10-- +string(12) "737472696e67" + +--float -12.3456789000e10-- +string(12) "737472696e67" + +--float .5-- +string(12) "737472696e67" + +--empty array-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +string(8) "5f76616c" + +--lowercase null-- +string(8) "5f76616c" + +--lowercase true-- +string(12) "737472696e67" + +--lowercase false-- +string(8) "5f76616c" + +--uppercase TRUE-- +string(12) "737472696e67" + +--uppercase FALSE-- +string(8) "5f76616c" + +--empty string DQ-- +string(8) "5f76616c" + +--empty string SQ-- +string(8) "5f76616c" + +--string DQ-- +string(12) "737472696e67" + +--string SQ-- +string(12) "737472696e67" + +--mixed case string-- +string(12) "737472696e67" + +--heredoc-- +string(12) "737472696e67" + +--instance of classWithToString-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +string(8) "5f76616c" + +--unset var-- +string(8) "5f76616c" + +--resource-- +Error: 2 - mb_strrchr() expects parameter 3 to be boolean, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation4.phpt b/ext/mbstring/tests/mb_strrchr_variation4.phpt new file mode 100644 index 000000000..b9e014706 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation4.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test mb_strrchr() function : usage variation - different encoding types +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for encoding + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrchr($haystack, $needle, $part, $value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrchr() : usage variation *** + +--int 0-- +Error: 2 - mb_strrchr(): Unknown encoding "0", %s(%d) +bool(false) + +--int 1-- +Error: 2 - mb_strrchr(): Unknown encoding "1", %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mb_strrchr(): Unknown encoding "12345", %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mb_strrchr(): Unknown encoding "-2345", %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mb_strrchr(): Unknown encoding "10.5", %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mb_strrchr(): Unknown encoding "-10.5", %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mb_strrchr(): Unknown encoding "123456789000", %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mb_strrchr(): Unknown encoding "-123456789000", %s(%d) +bool(false) + +--float .5-- +Error: 2 - mb_strrchr(): Unknown encoding "0.5", %s(%d) +bool(false) + +--empty array-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mb_strrchr(): Unknown encoding "1", %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mb_strrchr(): Unknown encoding "1", %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mb_strrchr(): Unknown encoding "invalid", %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_strrchr(): Unknown encoding "", %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_strrchr() expects parameter 4 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation5.phpt b/ext/mbstring/tests/mb_strrchr_variation5.phpt new file mode 100644 index 000000000..84a73a2f5 --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation5.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test mb_strrchr() function : variation - multiple needles +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strrchr() : variation *** +-- Ascii data -- +string(10) "6263647978" +string(16) "616263646566207a" +-- mb data in utf-8 -- +string(30) "e8aa9ee38386e382ade382b9e38388" +string(70) "e697a5e69cace8aa9ee38386e382ade382b9e383883334efbc95efbc96e697a5e69cac" +===DONE=== diff --git a/ext/mbstring/tests/mb_strrchr_variation6.phpt b/ext/mbstring/tests/mb_strrchr_variation6.phpt new file mode 100644 index 000000000..86009496e --- /dev/null +++ b/ext/mbstring/tests/mb_strrchr_variation6.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test mb_strrchr() function : variation - case sensitivity +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strrchr() : variation *** +-- Ascii data -- +string(10) "6263646566" +bool(false) +bool(false) +-- mb data in utf-8 -- +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +bool(false) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strrichr_basic.phpt b/ext/mbstring/tests/mb_strrichr_basic.phpt new file mode 100644 index 000000000..5a38e6506 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_basic.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test mb_strrichr() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strrichr() : basic functionality *** + +-- ASCII string: needle exists -- +string(10) "6263646566" +string(10) "6263646566" +string(2) "61" + +-- ASCII string: needle doesn't exist -- +bool(false) + +-- Multibyte string: needle exists -- +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +string(44) "ceb1ceb2ceb3ceb4ceb5ceb6ceb7ceb8ceb9cebacebb" + +-- Multibyte string: needle doesn't exist -- +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_error1.phpt b/ext/mbstring/tests/mb_strrichr_error1.phpt new file mode 100644 index 000000000..2c2ed6114 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test mb_strrichr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : error conditions *** + +-- Testing mb_strrichr() function with more than expected no. of arguments -- + +Warning: mb_strrichr() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_strrichr() function with less than expected no. of arguments -- + +Warning: mb_strrichr() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_error2.phpt b/ext/mbstring/tests/mb_strrichr_error2.phpt new file mode 100644 index 000000000..e8f98ef44 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_strrichr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : error conditions *** + +-- Testing mb_strrichr() with unknown encoding -- + +Warning: mb_strrichr(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_variation1.phpt b/ext/mbstring/tests/mb_strrichr_variation1.phpt new file mode 100644 index 000000000..d826ccf40 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_variation1.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_strrichr() function : usage variation - various haystacks, needle won't be found +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for haystack + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrichr($value, $needle, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_strrichr() expects parameter 1 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_variation2.phpt b/ext/mbstring/tests/mb_strrichr_variation2.phpt new file mode 100644 index 000000000..1a4a73fe4 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_variation2.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_strrichr() function : usage variation - different types of needle. +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for needle + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrichr($haystack, $value, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_strrichr() expects parameter 2 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_variation3.phpt b/ext/mbstring/tests/mb_strrichr_variation3.phpt new file mode 100644 index 000000000..68e8083bd --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_variation3.phpt @@ -0,0 +1,232 @@ +--TEST-- +Test mb_strrichr() function : usage variation - different values for part +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for part + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mb_strrichr($haystack, $needle, $value, $encoding); + if ($res === false) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : usage variation *** + +--int 0-- +string(8) "5f76616c" + +--int 1-- +string(12) "737472696e67" + +--int 12345-- +string(12) "737472696e67" + +--int -12345-- +string(12) "737472696e67" + +--float 10.5-- +string(12) "737472696e67" + +--float -10.5-- +string(12) "737472696e67" + +--float 12.3456789000e10-- +string(12) "737472696e67" + +--float -12.3456789000e10-- +string(12) "737472696e67" + +--float .5-- +string(12) "737472696e67" + +--empty array-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +string(8) "5f76616c" + +--lowercase null-- +string(8) "5f76616c" + +--lowercase true-- +string(12) "737472696e67" + +--lowercase false-- +string(8) "5f76616c" + +--uppercase TRUE-- +string(12) "737472696e67" + +--uppercase FALSE-- +string(8) "5f76616c" + +--empty string DQ-- +string(8) "5f76616c" + +--empty string SQ-- +string(8) "5f76616c" + +--string DQ-- +string(12) "737472696e67" + +--string SQ-- +string(12) "737472696e67" + +--mixed case string-- +string(12) "737472696e67" + +--heredoc-- +string(12) "737472696e67" + +--instance of classWithToString-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +string(8) "5f76616c" + +--unset var-- +string(8) "5f76616c" + +--resource-- +Error: 2 - mb_strrichr() expects parameter 3 to be boolean, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_variation4.phpt b/ext/mbstring/tests/mb_strrichr_variation4.phpt new file mode 100644 index 000000000..d2e5754c1 --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_variation4.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test mb_strrichr() function : usage variation - different encoding types +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for encoding + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strrichr($haystack, $needle, $part, $value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strrichr() : usage variation *** + +--int 0-- +Error: 2 - mb_strrichr(): Unknown encoding "0", %s(%d) +bool(false) + +--int 1-- +Error: 2 - mb_strrichr(): Unknown encoding "1", %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mb_strrichr(): Unknown encoding "12345", %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mb_strrichr(): Unknown encoding "-2345", %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mb_strrichr(): Unknown encoding "10.5", %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mb_strrichr(): Unknown encoding "-10.5", %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mb_strrichr(): Unknown encoding "123456789000", %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mb_strrichr(): Unknown encoding "-123456789000", %s(%d) +bool(false) + +--float .5-- +Error: 2 - mb_strrichr(): Unknown encoding "0.5", %s(%d) +bool(false) + +--empty array-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mb_strrichr(): Unknown encoding "1", %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mb_strrichr(): Unknown encoding "1", %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mb_strrichr(): Unknown encoding "invalid", %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_strrichr(): Unknown encoding "", %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_strrichr() expects parameter 4 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strrichr_variation5.phpt b/ext/mbstring/tests/mb_strrichr_variation5.phpt new file mode 100644 index 000000000..417f53fde --- /dev/null +++ b/ext/mbstring/tests/mb_strrichr_variation5.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test mb_strrichr() function : usage variation - multiple needles +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strrichr() : basic functionality *** + +-- ASCII string: needle exists -- +string(10) "4263447978" +string(16) "616263446566207a" +string(10) "4263447978" +string(16) "616263446566207a" +string(10) "4263447978" +string(16) "616263446566207a" + +-- Multibyte string: needle exists -- +string(20) "ce9cce9dcebecebfcea0" +string(42) "cebacebbcebccebdcebece9fcea0cea120cebacebb" +string(20) "ce9cce9dcebecebfcea0" +string(42) "cebacebbcebccebdcebece9fcea0cea120cebacebb" +string(20) "ce9cce9dcebecebfcea0" +string(42) "cebacebbcebccebdcebece9fcea0cea120cebacebb" +===DONE=== \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strripos_basic.phpt b/ext/mbstring/tests/mb_strripos_basic.phpt new file mode 100644 index 000000000..32787a6eb --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_basic.phpt @@ -0,0 +1,158 @@ +--TEST-- +Test mb_strripos() function : basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : basic functionality*** + + -- ASCII Strings, needle should be found -- +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) +int(13) + + -- ASCII Strings, needle should not be found -- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) + + -- Greek Strings, needle should be found -- +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) +int(11) + + -- ASCII Strings, needle should not be found -- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strripos_basic2.phpt b/ext/mbstring/tests/mb_strripos_basic2.phpt new file mode 100644 index 000000000..9d7befc93 --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_basic2.phpt @@ -0,0 +1,128 @@ +--TEST-- +Test mb_strripos() function : basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : basic functionality*** + + -- ASCII Strings -- +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) +int(13) +bool(false) + + -- Greek Strings -- +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +int(11) +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strripos_error1.phpt b/ext/mbstring/tests/mb_strripos_error1.phpt new file mode 100644 index 000000000..9d114d55a --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_error1.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mb_strripos() function : error conditions - Pass incorrect number of args +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : error conditions *** + +-- Testing mb_strripos() function with more than expected no. of arguments -- + +Warning: mb_strripos() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_strripos() function with less than expected no. of arguments -- + +Warning: mb_strripos() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strripos_error2.phpt b/ext/mbstring/tests/mb_strripos_error2.phpt new file mode 100644 index 000000000..4790ffbcb --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_strripos() function : error conditions - Pass unknown encoding +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : error conditions *** + +Warning: mb_strripos(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strripos_variation1.phpt b/ext/mbstring/tests/mb_strripos_variation1.phpt new file mode 100644 index 000000000..704b50177 --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_variation1.phpt @@ -0,0 +1,183 @@ +--TEST-- +Test mb_strripos() function : usage variations - pass different data types to $haystack arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- +bool(false) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- + +Warning: mb_strripos() expects parameter 1 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strripos_variation2.phpt b/ext/mbstring/tests/mb_strripos_variation2.phpt new file mode 100644 index 000000000..61196f007 --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_variation2.phpt @@ -0,0 +1,183 @@ +--TEST-- +Test mb_strripos() function : usage variations - pass different data types as $needle arg +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- + +Warning: mb_strripos() expects parameter 2 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt b/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt new file mode 100644 index 000000000..eb23d801b --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt @@ -0,0 +1,206 @@ +--TEST-- +Test mb_strripos() function : usage variations - pass different data types as $offset arg +--XFAIL-- +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing mb_strripos() : usage variations *** + +-- Iteration 1 -- +int(8) + +-- Iteration 2 -- +int(8) + +-- Iteration 3 -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +-- Iteration 8 -- +int(8) + +-- Iteration 9 -- +int(8) + +-- Iteration 10 -- +int(8) + +-- Iteration 11 -- +int(8) + +-- Iteration 12 -- +int(8) + +-- Iteration 13 -- +int(8) + +-- Iteration 14 -- +int(8) + +-- Iteration 15 -- +int(8) + +-- Iteration 16 -- + +Warning: mb_strripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: mb_strripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: mb_strripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: mb_strripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: mb_strripos() expects parameter 3 to be long, string given in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: mb_strripos() expects parameter 3 to be long, object given in %s on line %d +bool(false) + +-- Iteration 22 -- +int(8) + +-- Iteration 23 -- +int(8) + +-- Iteration 24 -- + +Warning: mb_strripos() expects parameter 3 to be long, resource given in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strripos_variation4.phpt b/ext/mbstring/tests/mb_strripos_variation4.phpt new file mode 100644 index 000000000..d617872ef --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_variation4.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test mb_strripos() function : usage variations - pass different data types as $encoding arg +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- +*** Testing mb_strripos() : usage variations *** + +-- Iteration 1 -- + +Warning: mb_strripos(): Unknown encoding "0" in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: mb_strripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: mb_strripos(): Unknown encoding "12345" in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: mb_strripos(): Unknown encoding "-2345" in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: mb_strripos(): Unknown encoding "10.5" in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: mb_strripos(): Unknown encoding "-10.5" in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: mb_strripos(): Unknown encoding "123456789000" in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: mb_strripos(): Unknown encoding "1.23456789E-9" in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: mb_strripos(): Unknown encoding "0.5" in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: mb_strripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: mb_strripos(): Unknown encoding "1" in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 18 -- +int(7) + +-- Iteration 19 -- +int(7) + +-- Iteration 20 -- +int(7) + +-- Iteration 21 -- +int(7) + +-- Iteration 22 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: mb_strripos(): Unknown encoding "" in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: mb_strripos() expects parameter 4 to be string, resource given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strripos_variation5_Bug45923.phpt b/ext/mbstring/tests/mb_strripos_variation5_Bug45923.phpt new file mode 100644 index 000000000..8c40a6fa6 --- /dev/null +++ b/ext/mbstring/tests/mb_strripos_variation5_Bug45923.phpt @@ -0,0 +1,115 @@ +--TEST-- +Test mb_strripos() function : usage variations - Pass different integers as $offset argument +--XFAIL-- +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- +*** Testing mb_strripos() : usage variations *** + +**-- Offset is: -10 --** +-- ASCII String -- +int(9) +--Multibyte String -- +int(9) + +**-- Offset is: 0 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 10 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 20 --** +-- ASCII String -- +int(20) +--Multibyte String -- +int(20) + +**-- Offset is: 30 --** +-- ASCII String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +**-- Offset is: 40 --** +-- ASCII String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +**-- Offset is: 50 --** +-- ASCII String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) + +**-- Offset is: 60 --** +-- ASCII String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +--Multibyte String -- + +Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d +bool(false) +Done diff --git a/ext/mbstring/tests/mb_strrpos_basic.phpt b/ext/mbstring/tests/mb_strrpos_basic.phpt index 9de0388f4..ec6b86c29 100644 --- a/ext/mbstring/tests/mb_strrpos_basic.phpt +++ b/ext/mbstring/tests/mb_strrpos_basic.phpt @@ -20,15 +20,15 @@ echo "*** Testing mb_strrpos() : basic ***\n"; mb_internal_encoding('UTF-8'); -$string_ascii = 'This is an English string. 0123456789.'; +$string_ascii = b'This is an English string. 0123456789.'; //Japanese string in UTF-8 $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); echo "\n-- ASCII string 1 --\n"; -var_dump(mb_strrpos($string_ascii, 'is', 4, 'ISO-8859-1')); +var_dump(mb_strrpos($string_ascii, b'is', 4, 'ISO-8859-1')); echo "\n-- ASCII string 2 --\n"; -var_dump(mb_strrpos($string_ascii, 'hello, world')); +var_dump(mb_strrpos($string_ascii, b'hello, world')); echo "\n-- Multibyte string 1 --\n"; $needle1 = base64_decode('44CC'); diff --git a/ext/mbstring/tests/mb_strrpos_variation1.phpt b/ext/mbstring/tests/mb_strrpos_variation1.phpt index 922cb73fd..2d2db9003 100644 --- a/ext/mbstring/tests/mb_strrpos_variation1.phpt +++ b/ext/mbstring/tests/mb_strrpos_variation1.phpt @@ -19,7 +19,7 @@ function_exists('mb_strrpos') or die("skip mb_strrpos() is not available in this echo "*** Testing mb_strrpos() : usage variations ***\n"; // Initialise function arguments not being substituted -$needle = 'world'; +$needle = b'world'; $offset = 0; $encoding = 'utf-8'; @@ -31,12 +31,12 @@ unset ($unset_var); class classA { public function __toString() { - return "hello, world"; + return b"hello, world"; } } // heredoc string -$heredoc = << +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strstr() : basic functionality *** + +-- ASCII string: needle exists -- +string(6) "646566" +string(6) "646566" +string(8) "61626320" + +-- ASCII string: needle doesn't exist -- +bool(false) + +-- Multibyte string: needle exists -- +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(106) "e697a5e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +string(0) "" + +-- Multibyte string: needle doesn't exist -- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/mbstring/tests/mb_strstr_error1.phpt b/ext/mbstring/tests/mb_strstr_error1.phpt new file mode 100644 index 000000000..f38d5c9cc --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_error1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test mb_strstr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : error conditions *** + +-- Testing mb_strstr() function with more than expected no. of arguments -- + +Warning: mb_strstr() expects at most 4 parameters, 5 given in %s on line %d +bool(false) + +-- Testing mb_strstr() function with less than expected no. of arguments -- + +Warning: mb_strstr() expects at least 2 parameters, 1 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_error2.phpt b/ext/mbstring/tests/mb_strstr_error2.phpt new file mode 100644 index 000000000..163c80026 --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_error2.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mb_strstr() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : error conditions *** + +-- Testing mb_strstr() with unknown encoding -- + +Warning: mb_strstr(): Unknown encoding "unknown-encoding" in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation1.phpt b/ext/mbstring/tests/mb_strstr_variation1.phpt new file mode 100644 index 000000000..48e7c537e --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation1.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test mb_strstr() function : usage variation - various haystacks, needle won't be found +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for haystack + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strstr($value, $needle, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strstr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strstr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strstr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strstr() expects parameter 1 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strstr() expects parameter 1 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +Error: 2 - mb_strstr() expects parameter 1 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation2.phpt b/ext/mbstring/tests/mb_strstr_variation2.phpt new file mode 100644 index 000000000..f70bb67ad --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation2.phpt @@ -0,0 +1,215 @@ +--TEST-- +Test mb_strstr() function : usage variation - different types of needle. +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for needle + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strstr($haystack, $value, $part, $encoding) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : usage variation *** + +--int 0-- +bool(false) + +--int 1-- +bool(false) + +--int 12345-- +bool(false) + +--int -12345-- +bool(false) + +--float 10.5-- +bool(false) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +bool(false) + +--empty array-- +Error: 2 - mb_strstr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strstr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strstr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strstr() expects parameter 2 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--lowercase true-- +bool(false) + +--lowercase false-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--uppercase TRUE-- +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strstr() expects parameter 2 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_strstr(): Empty delimiter, %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_strstr() expects parameter 2 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation3.phpt b/ext/mbstring/tests/mb_strstr_variation3.phpt new file mode 100644 index 000000000..55c8f31d9 --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation3.phpt @@ -0,0 +1,232 @@ +--TEST-- +Test mb_strstr() function : usage variation - different values for part +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for part + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mb_strstr($haystack, $needle, $value, $encoding); + if ($res === false) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : usage variation *** + +--int 0-- +string(8) "5f76616c" + +--int 1-- +string(12) "737472696e67" + +--int 12345-- +string(12) "737472696e67" + +--int -12345-- +string(12) "737472696e67" + +--float 10.5-- +string(12) "737472696e67" + +--float -10.5-- +string(12) "737472696e67" + +--float 12.3456789000e10-- +string(12) "737472696e67" + +--float -12.3456789000e10-- +string(12) "737472696e67" + +--float .5-- +string(12) "737472696e67" + +--empty array-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +string(8) "5f76616c" + +--lowercase null-- +string(8) "5f76616c" + +--lowercase true-- +string(12) "737472696e67" + +--lowercase false-- +string(8) "5f76616c" + +--uppercase TRUE-- +string(12) "737472696e67" + +--uppercase FALSE-- +string(8) "5f76616c" + +--empty string DQ-- +string(8) "5f76616c" + +--empty string SQ-- +string(8) "5f76616c" + +--string DQ-- +string(12) "737472696e67" + +--string SQ-- +string(12) "737472696e67" + +--mixed case string-- +string(12) "737472696e67" + +--heredoc-- +string(12) "737472696e67" + +--instance of classWithToString-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +string(8) "5f76616c" + +--unset var-- +string(8) "5f76616c" + +--resource-- +Error: 2 - mb_strstr() expects parameter 3 to be boolean, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation4.phpt b/ext/mbstring/tests/mb_strstr_variation4.phpt new file mode 100644 index 000000000..3a208d312 --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation4.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test mb_strstr() function : usage variation - different encoding types +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for encoding + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_strstr($haystack, $needle, $part, $value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_strstr() : usage variation *** + +--int 0-- +Error: 2 - mb_strstr(): Unknown encoding "0", %s(%d) +bool(false) + +--int 1-- +Error: 2 - mb_strstr(): Unknown encoding "1", %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mb_strstr(): Unknown encoding "12345", %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mb_strstr(): Unknown encoding "-2345", %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mb_strstr(): Unknown encoding "10.5", %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mb_strstr(): Unknown encoding "-10.5", %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mb_strstr(): Unknown encoding "123456789000", %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mb_strstr(): Unknown encoding "-123456789000", %s(%d) +bool(false) + +--float .5-- +Error: 2 - mb_strstr(): Unknown encoding "0.5", %s(%d) +bool(false) + +--empty array-- +Error: 2 - mb_strstr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - mb_strstr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - mb_strstr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - mb_strstr() expects parameter 4 to be string, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mb_strstr(): Unknown encoding "1", %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mb_strstr(): Unknown encoding "1", %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mb_strstr(): Unknown encoding "invalid", %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - mb_strstr() expects parameter 4 to be string, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_strstr(): Unknown encoding "", %s(%d) +bool(false) + +--resource-- +Error: 2 - mb_strstr() expects parameter 4 to be string, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation5.phpt b/ext/mbstring/tests/mb_strstr_variation5.phpt new file mode 100644 index 000000000..3bfbd6164 --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation5.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test mb_strstr() function : variation - multiple needles +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strstr() : variation *** +-- Ascii data -- +string(24) "6263646566207a6263647978" +string(2) "61" +-- mb data in utf-8 -- +string(88) "e8aa9ee38386e382ade382b9e383883334efbc95efbc96e697a5e69cace8aa9ee38386e382ade382b9e38388" +string(12) "e697a5e69cac" +===DONE=== diff --git a/ext/mbstring/tests/mb_strstr_variation6.phpt b/ext/mbstring/tests/mb_strstr_variation6.phpt new file mode 100644 index 000000000..1242e02d1 --- /dev/null +++ b/ext/mbstring/tests/mb_strstr_variation6.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test mb_strstr() function : variation - case sensitivity +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_strstr() : variation *** +-- Ascii data -- +string(10) "6263646566" +bool(false) +bool(false) +-- mb data in utf-8 -- +string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89" +bool(false) +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_strtolower_variation1.phpt b/ext/mbstring/tests/mb_strtolower_variation1.phpt index ac468ca0d..3b151b96c 100644 --- a/ext/mbstring/tests/mb_strtolower_variation1.phpt +++ b/ext/mbstring/tests/mb_strtolower_variation1.phpt @@ -18,8 +18,6 @@ function_exists('mb_strtolower') or die("skip mb_strtolower() is not available i echo "*** Testing mb_strtolower() : usage variations ***\n"; -// Initialise function arguments not being substituted -$encoding = 'UTF-8'; //get an unset variable $unset_var = 10; @@ -93,7 +91,7 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_strtolower($input, $encoding) ); + var_dump( mb_strtolower($input) ); $iterator++; }; diff --git a/ext/mbstring/tests/mb_strtolower_variation2.phpt b/ext/mbstring/tests/mb_strtolower_variation2.phpt index c9a674f5c..293c9559a 100644 --- a/ext/mbstring/tests/mb_strtolower_variation2.phpt +++ b/ext/mbstring/tests/mb_strtolower_variation2.phpt @@ -20,7 +20,7 @@ function_exists('mb_strtolower') or die("skip mb_strtolower() is not available i echo "*** Testing mb_strtolower() : usage variations ***\n"; // Initialise function arguments not being substituted -$sourcestring = 'Hello, World'; +$sourcestring = b'Hello, World'; //get an unset variable $unset_var = 10; @@ -94,7 +94,13 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_strtolower($sourcestring, $input) ); + $res = mb_strtolower($sourcestring, $input); + if ($res === false || $res == NULL) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } $iterator++; }; @@ -191,16 +197,16 @@ Warning: mb_strtolower(): Unknown encoding "" in %s on line %d bool(false) -- Iteration 18 -- -string(12) "hello, world" +string(24) "68656c6c6f2c20776f726c64" -- Iteration 19 -- -string(12) "hello, world" +string(24) "68656c6c6f2c20776f726c64" -- Iteration 20 -- -string(12) "hello, world" +string(24) "68656c6c6f2c20776f726c64" -- Iteration 21 -- -string(12) "hello, world" +string(24) "68656c6c6f2c20776f726c64" -- Iteration 22 -- diff --git a/ext/mbstring/tests/mb_strtolower_variation4.phpt b/ext/mbstring/tests/mb_strtolower_variation4.phpt index f08b50879..37357a189 100644 --- a/ext/mbstring/tests/mb_strtolower_variation4.phpt +++ b/ext/mbstring/tests/mb_strtolower_variation4.phpt @@ -18,10 +18,10 @@ function_exists('mb_strtolower') or die("skip mb_strtolower() is not available i echo "*** Testing mb_strtolower() : usage variations ***\n"; -$uppers = array('Basic Latin' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', +$uppers = array('Basic Latin' => b'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'Characters With Accents' => base64_decode('w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlg=='), 'Russian' => base64_decode('0JDQkdCS0JPQlNCV0JbQlw==')); -$lowers = array('Basic Latin' => 'abcdefghijklmnopqrstuvwxyz', +$lowers = array('Basic Latin' => b'abcdefghijklmnopqrstuvwxyz', 'Characters With Accents' => base64_decode('w6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtg=='), 'Russian' => base64_decode('0LDQsdCy0LPQtNC10LbQtw==')); diff --git a/ext/mbstring/tests/mb_strtoupper_basic.phpt b/ext/mbstring/tests/mb_strtoupper_basic.phpt index b282647f8..e77646923 100644 --- a/ext/mbstring/tests/mb_strtoupper_basic.phpt +++ b/ext/mbstring/tests/mb_strtoupper_basic.phpt @@ -19,14 +19,14 @@ function_exists('mb_strtoupper') or die("skip mb_strtoupper() is not available i echo "*** Testing mb_strtoupper() : basic functionality ***\n"; mb_internal_encoding('utf-8'); -$ascii_lower = 'abcdefghijklmnopqrstuvwxyz'; -$ascii_upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; +$ascii_lower = b'abcdefghijklmnopqrstuvwxyz'; +$ascii_upper = b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $greek_lower = base64_decode('zrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4TPhc+Gz4fPiM+J'); $greek_upper = base64_decode('zpHOks6TzpTOlc6WzpfOmM6ZzprOm86czp3Ons6fzqDOoc6jzqTOpc6mzqfOqM6p'); echo "\n-- ASCII String --\n"; $ascii = mb_strtoupper($ascii_lower); -var_dump($ascii); +var_dump(base64_encode($ascii)); if($ascii == $ascii_upper) { echo "Correctly converted\n"; @@ -47,11 +47,11 @@ if ($mb == $greek_upper) { echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_strtoupper() : basic functionality *** -- ASCII String -- -string(26) "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +string(36) "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=" Correctly converted -- Multibyte String -- diff --git a/ext/mbstring/tests/mb_strtoupper_variation1.phpt b/ext/mbstring/tests/mb_strtoupper_variation1.phpt index b602f696b..efe884563 100644 --- a/ext/mbstring/tests/mb_strtoupper_variation1.phpt +++ b/ext/mbstring/tests/mb_strtoupper_variation1.phpt @@ -20,7 +20,6 @@ function_exists('mb_strtoupper') or die("skip mb_strtoupper() is not available i echo "*** Testing mb_strtoupper() : usage variations ***\n"; // Initialise function arguments not being substituted -$encoding = 'UTF-8'; //get an unset variable $unset_var = 10; @@ -94,7 +93,7 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_strtoupper($input, $encoding) ); + var_dump( mb_strtoupper($input) ); $iterator++; }; diff --git a/ext/mbstring/tests/mb_strtoupper_variation2.phpt b/ext/mbstring/tests/mb_strtoupper_variation2.phpt index 3291ce71c..035cd63f4 100644 --- a/ext/mbstring/tests/mb_strtoupper_variation2.phpt +++ b/ext/mbstring/tests/mb_strtoupper_variation2.phpt @@ -20,7 +20,7 @@ function_exists('mb_strtoupper') or die("skip mb_strtoupper() is not available i echo "*** Testing mb_strtoupper() : usage variations ***\n"; // Initialise function arguments not being substituted -$sourcestring = 'Hello, World'; +$sourcestring = b'Hello, World'; //get an unset variable $unset_var = 10; @@ -94,7 +94,13 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_strtoupper($sourcestring, $input) ); + $res = mb_strtoupper($sourcestring, $input); + if ($res === false || $res == NULL) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } $iterator++; }; @@ -192,16 +198,16 @@ Warning: mb_strtoupper(): Unknown encoding "" in %s on line %d bool(false) -- Iteration 18 -- -string(12) "HELLO, WORLD" +string(24) "48454c4c4f2c20574f524c44" -- Iteration 19 -- -string(12) "HELLO, WORLD" +string(24) "48454c4c4f2c20574f524c44" -- Iteration 20 -- -string(12) "HELLO, WORLD" +string(24) "48454c4c4f2c20574f524c44" -- Iteration 21 -- -string(12) "HELLO, WORLD" +string(24) "48454c4c4f2c20574f524c44" -- Iteration 22 -- diff --git a/ext/mbstring/tests/mb_strtoupper_variation4.phpt b/ext/mbstring/tests/mb_strtoupper_variation4.phpt index 8f5abe726..7d91c8a2d 100644 --- a/ext/mbstring/tests/mb_strtoupper_variation4.phpt +++ b/ext/mbstring/tests/mb_strtoupper_variation4.phpt @@ -19,10 +19,10 @@ function_exists('mb_strtoupper') or die("skip mb_strtoupper() is not available i echo "*** Testing mb_strtoupper() : usage variations ***\n"; -$uppers = array('Basic Latin' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', +$uppers = array('Basic Latin' => b'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'Characters With Accents' => base64_decode('w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlg=='), 'Russian' => base64_decode('0JDQkdCS0JPQlNCV0JbQlw==')); -$lowers = array('Basic Latin' => 'abcdefghijklmnopqrstuvwxyz', +$lowers = array('Basic Latin' => b'abcdefghijklmnopqrstuvwxyz', 'Characters With Accents' => base64_decode('w6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtg=='), 'Russian' => base64_decode('0LDQsdCy0LPQtNC10LbQtw==')); diff --git a/ext/mbstring/tests/mb_substitute_character.phpt b/ext/mbstring/tests/mb_substitute_character.phpt index 9f2131080..9f35f1d26 100644 --- a/ext/mbstring/tests/mb_substitute_character.phpt +++ b/ext/mbstring/tests/mb_substitute_character.phpt @@ -10,40 +10,36 @@ include_once('common.inc'); // Note: It does not return TRUE/FALSE for setting char -// Use Unicode val -$r = mb_substitute_character(0x3013); -//$r = mb_substitute_character('U+3013'); -($r === TRUE) ? print "OK_UTF\n" : print("NG_UTF: ".gettype($r)." $r\n"); -print mb_substitute_character() . "\n"; +var_dump(mb_substitute_character(0x3044)); +var_dump(mb_substitute_character()); +var_dump(bin2hex(mb_convert_encoding("\xe2\x99\xa0\xe3\x81\x82", "CP932", "UTF-8"))); +var_dump(mb_substitute_character('long')); +var_dump(mb_substitute_character()); +var_dump(bin2hex(mb_convert_encoding("\xe2\x99\xa0\xe3\x81\x82", "CP932", "UTF-8"))); -// Use "long" -$r = mb_substitute_character('long'); -($r === TRUE) ? print "OK_LONG\n" : print("NG_LONG: ".gettype($r)." $r\n"); -print mb_substitute_character() . "\n"; +var_dump(mb_substitute_character('none')); +var_dump(mb_substitute_character()); +var_dump(bin2hex(mb_convert_encoding("\xe2\x99\xa0\xe3\x81\x82", "CP932", "UTF-8"))); +var_dump(mb_substitute_character('entity')); +var_dump(mb_substitute_character()); +var_dump(bin2hex(mb_convert_encoding("\xe2\x99\xa0\xe3\x81\x82", "CP932", "UTF-8"))); -// Use "none" -$r = mb_substitute_character('none'); -($r === TRUE) ? print "OK_NONE\n" : print("NG_NONE: ".gettype($r)." $r\n"); -print mb_substitute_character() . "\n"; - - -// Set invalid string. Should fail. -print "== INVALID PARAMETER ==\n"; -$r = mb_substitute_character('BAD_NAME'); -($r === FALSE) ? print "OK_BAD_NAME\n" : print("NG_BAD_NAME: ".gettype($r)." $r\n"); - +var_dump(mb_substitute_character('BAD_NAME')); ?> - --EXPECT-- -OK_UTF -12307 -OK_LONG -long -OK_NONE -none -== INVALID PARAMETER == +bool(true) +int(12356) +string(8) "82a282a0" +bool(true) +string(4) "long" +string(16) "552b3236363082a0" +bool(true) +string(4) "none" +string(4) "82a0" +bool(true) +string(6) "entity" +string(20) "262378323636303b82a0" ERR: Warning -OK_BAD_NAME - +bool(false) diff --git a/ext/mbstring/tests/mb_substitute_character_basic.phpt b/ext/mbstring/tests/mb_substitute_character_basic.phpt new file mode 100644 index 000000000..30cda8a92 --- /dev/null +++ b/ext/mbstring/tests/mb_substitute_character_basic.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test mb_substitute_character() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_substitute_character() : basic functionality *** +int(63) +bool(true) +int(66) +bool(true) +int(1234) +bool(true) +string(4) "none" + +Warning: mb_substitute_character(): Unknown character. in %s on line %d +bool(false) +===DONE=== diff --git a/ext/mbstring/tests/mb_substitute_character_error.phpt b/ext/mbstring/tests/mb_substitute_character_error.phpt new file mode 100644 index 000000000..7576accd8 --- /dev/null +++ b/ext/mbstring/tests/mb_substitute_character_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test mb_substitute_character() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mb_substitute_character() : error conditions *** + +-- Testing mb_substitute_character() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for mb_substitute_character() in %s on line %d +NULL +===DONE=== diff --git a/ext/mbstring/tests/mb_substitute_character_variation1.phpt b/ext/mbstring/tests/mb_substitute_character_variation1.phpt new file mode 100644 index 000000000..435f95adf --- /dev/null +++ b/ext/mbstring/tests/mb_substitute_character_variation1.phpt @@ -0,0 +1,238 @@ +--TEST-- +Test mb_substitute_character() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for substchar + +mb_internal_encoding('utf-8'); +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( mb_substitute_character($value) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mb_substitute_character() : usage variation *** + +--int 0-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--int 1-- +bool(true) + +--int 12345-- +bool(true) + +--int -12345-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--float 10.5-- +bool(true) + +--float -10.5-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--float .5-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--empty array-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--lowercase true-- +bool(true) + +--lowercase false-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--string DQ-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--string SQ-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--heredoc-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--unset var-- +Error: 2 - mb_substitute_character(): Unknown character., %s(%d) +bool(false) + +--resource-- +bool(true) +===DONE=== diff --git a/ext/mbstring/tests/mb_substitute_character_variation2.phpt b/ext/mbstring/tests/mb_substitute_character_variation2.phpt new file mode 100644 index 000000000..202561afc --- /dev/null +++ b/ext/mbstring/tests/mb_substitute_character_variation2.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test mb_substitute_character() function : variation unmappable out char for convert encoding +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mb_substitute_character() : variation *** +string(14) "3f3f3f3f3f3f3f" +string(14) "42424242424242" +string(0) "" +string(0) "" +===DONE=== diff --git a/ext/mbstring/tests/mb_substr.phpt b/ext/mbstring/tests/mb_substr.phpt index 579e7ffb5..d9269c377 100644 --- a/ext/mbstring/tests/mb_substr.phpt +++ b/ext/mbstring/tests/mb_substr.phpt @@ -12,24 +12,24 @@ ini_set('include_path','.'); include_once('common.inc'); // EUC-JP -$euc_jp = '0123¤³¤Îʸ»úÎó¤ÏÆüËܸì¤Ç¤¹¡£EUC-JP¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ÆüËܸì¤ÏÌÌÅݽ­¤¤¡£'; +$euc_jp = b'0123¤³¤Îʸ»úÎó¤ÏÆüËܸì¤Ç¤¹¡£EUC-JP¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ÆüËܸì¤ÏÌÌÅݽ­¤¤¡£'; -print "1: ". mb_substr($euc_jp, 10, 10,'EUC-JP') . "\n"; -print "2: ". mb_substr($euc_jp, 0, 100,'EUC-JP') . "\n"; +print "1: ". bin2hex(mb_substr($euc_jp, 10, 10,'EUC-JP')) . "\n"; +print "2: ". bin2hex(mb_substr($euc_jp, 0, 100,'EUC-JP')) . "\n"; $str = mb_substr($euc_jp, 100, 10,'EUC-JP'); // Note: returns last character -($str === "") ? print "3 OK\n" : print "NG: $str\n"; +($str === "") ? print "3 OK\n" : print "NG: ".bin2hex($str)."\n"; $str = mb_substr($euc_jp, -100, 10,'EUC-JP'); -($str !== "") ? print "4 OK: $str\n" : print "NG: $str\n"; +($str !== "") ? print "4 OK: ".bin2hex($str)."\n" : print "NG: ".bin2hex($str)."\n"; ?> --EXPECT-- -1: ÆüËܸì¤Ç¤¹¡£EUC- -2: 0123¤³¤Îʸ»úÎó¤ÏÆüËܸì¤Ç¤¹¡£EUC-JP¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ÆüËܸì¤ÏÌÌÅݽ­¤¤¡£ +1: c6fccbdcb8eca4c7a4b9a1a34555432d +2: 30313233a4b3a4cecab8bbfacef3a4cfc6fccbdcb8eca4c7a4b9a1a34555432d4a50a4f2bbc8a4c3a4c6a4a4a4dea4b9a1a3c6fccbdcb8eca4cfccccc5ddbdada4a4a1a3 3 OK -4 OK: 0123¤³¤Îʸ»úÎó¤Ï +4 OK: 30313233a4b3a4cecab8bbfacef3a4cf diff --git a/ext/mbstring/tests/mb_substr_basic.phpt b/ext/mbstring/tests/mb_substr_basic.phpt index a43cf15bb..d6d6b75d2 100644 --- a/ext/mbstring/tests/mb_substr_basic.phpt +++ b/ext/mbstring/tests/mb_substr_basic.phpt @@ -5,6 +5,8 @@ Test mb_substr() function : basic functionality extension_loaded('mbstring') or die('skip'); function_exists('mb_substr') or die("skip mb_substr() is not available in this build"); ?> +--INI-- +mbstring.internal_encoding=ISO-8859-1 --FILE-- +--FILE-- + +--EXPECTF-- +*** Testing mb_substr_count() : usage variations *** + +-- ASCII String -- +int(1) + +-- Multibyte String -- +int(1) +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_substr_variation1.phpt b/ext/mbstring/tests/mb_substr_variation1.phpt index fd9d0db47..eae73da1d 100644 --- a/ext/mbstring/tests/mb_substr_variation1.phpt +++ b/ext/mbstring/tests/mb_substr_variation1.phpt @@ -21,7 +21,6 @@ echo "*** Testing mb_substr() : usage variations ***\n"; // Initialise function arguments not being substituted $start = 0; $length = 5; -$encoding = 'utf-8'; //get an unset variable $unset_var = 10; @@ -95,7 +94,7 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_substr($input, $start, $length, $encoding)); + var_dump( mb_substr($input, $start, $length)); $iterator++; }; diff --git a/ext/mbstring/tests/mb_substr_variation2.phpt b/ext/mbstring/tests/mb_substr_variation2.phpt index cb8a37af5..bdfd9102b 100644 --- a/ext/mbstring/tests/mb_substr_variation2.phpt +++ b/ext/mbstring/tests/mb_substr_variation2.phpt @@ -20,7 +20,7 @@ function_exists('mb_substr') or die("skip mb_substr() is not available in this b echo "*** Testing mb_substr() : usage variations ***\n"; // Initialise function arguments not being substituted -$str = 'string_val'; +$str = b'string_val'; $start = 1; $length = 5; @@ -96,7 +96,13 @@ $inputs = array( $iterator = 1; foreach($inputs as $input) { echo "\n-- Iteration $iterator --\n"; - var_dump( mb_substr($str, $start, $length, $input)); + $res = mb_substr($str, $start, $length, $input); + if ($res === false) { + var_dump($res); + } + else { + var_dump(bin2hex($res)); + } $iterator++; }; @@ -192,16 +198,16 @@ Warning: mb_substr(): Unknown encoding "" in %s on line %d bool(false) -- Iteration 18 -- -string(5) "tring" +string(10) "7472696e67" -- Iteration 19 -- -string(5) "tring" +string(10) "7472696e67" -- Iteration 20 -- -string(5) "tring" +string(10) "7472696e67" -- Iteration 21 -- -string(5) "tring" +string(10) "7472696e67" -- Iteration 22 -- diff --git a/ext/mbstring/tests/mb_substr_variation4.phpt b/ext/mbstring/tests/mb_substr_variation4.phpt index d2c4de3ce..c4a723a0a 100644 --- a/ext/mbstring/tests/mb_substr_variation4.phpt +++ b/ext/mbstring/tests/mb_substr_variation4.phpt @@ -20,7 +20,7 @@ echo "*** Testing mb_substr() : usage variations ***\n"; mb_internal_encoding('UTF-8'); -$string_ascii = '+Is an English string'; //21 chars +$string_ascii = b'+Is an English string'; //21 chars $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); //21 chars @@ -35,7 +35,8 @@ for ($i = -60; $i <= 60; $i += 10) { } echo "\n**-- Offset is: $i --**\n"; echo "-- ASCII String --\n"; - var_dump($a = mb_substr($string_ascii, $i, 4)); + $a = mb_substr($string_ascii, $i, 4); + var_dump(base64_encode($a)); echo "--Multibyte String --\n"; $b = mb_substr($string_mb, $i, 4, 'UTF-8'); if (strlen($a) == mb_strlen($b, 'UTF-8')) { // should return same length @@ -48,60 +49,60 @@ for ($i = -60; $i <= 60; $i += 10) { echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing mb_substr() : usage variations *** **-- Offset is: -60 --** -- ASCII String -- -string(4) "+Is " +string(8) "K0lzIA==" --Multibyte String -- string(16) "5pel5pys6Kqe44OG" **-- Offset is: -50 --** -- ASCII String -- -string(4) "+Is " +string(8) "K0lzIA==" --Multibyte String -- string(16) "5pel5pys6Kqe44OG" **-- Offset is: -40 --** -- ASCII String -- -string(4) "+Is " +string(8) "K0lzIA==" --Multibyte String -- string(16) "5pel5pys6Kqe44OG" **-- Offset is: -30 --** -- ASCII String -- -string(4) "+Is " +string(8) "K0lzIA==" --Multibyte String -- string(16) "5pel5pys6Kqe44OG" **-- Offset is: -20 --** -- ASCII String -- -string(4) "Is a" +string(8) "SXMgYQ==" --Multibyte String -- string(16) "5pys6Kqe44OG44Kt" **-- Offset is: -10 --** -- ASCII String -- -string(4) "ish " +string(8) "aXNoIA==" --Multibyte String -- string(8) "MTIzNA==" **-- Offset is: 0 --** -- ASCII String -- -string(4) "+Is " +string(8) "K0lzIA==" --Multibyte String -- string(16) "5pel5pys6Kqe44OG" **-- Offset is: 10 --** -- ASCII String -- -string(4) "lish" +string(8) "bGlzaA==" --Multibyte String -- string(8) "MDEyMw==" **-- Offset is: 20 --** -- ASCII String -- -string(1) "g" +string(4) "Zw==" --Multibyte String -- string(4) "44CC" diff --git a/ext/mbstring/tests/mb_substr_variation5.phpt b/ext/mbstring/tests/mb_substr_variation5.phpt index 02ea6d3aa..11caa9cab 100644 --- a/ext/mbstring/tests/mb_substr_variation5.phpt +++ b/ext/mbstring/tests/mb_substr_variation5.phpt @@ -6,7 +6,6 @@ extension_loaded('mbstring') or die('skip'); function_exists('mb_substr') or die("skip mb_substr() is not available in this build"); ?> --FILE-- - - ---EXPECTF-- +--EXPECT-- *** Testing mb_substr() : usage variations *** **-- Offset is: -60 --** @@ -86,7 +85,7 @@ string(0) "" **-- Offset is: -10 --** -- ASCII String -- -string(10) "Is an Engl" +string(16) "SXMgYW4gRW5nbA==" --Multibyte String -- string(40) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMA==" @@ -98,37 +97,37 @@ string(0) "" **-- Offset is: 10 --** -- ASCII String -- -string(10) "Is an Engl" +string(16) "SXMgYW4gRW5nbA==" --Multibyte String -- string(40) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMA==" **-- Offset is: 20 --** -- ASCII String -- -string(20) "Is an English string" +string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc=" --Multibyte String -- string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=" **-- Offset is: 30 --** -- ASCII String -- -string(20) "Is an English string" +string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc=" --Multibyte String -- string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=" **-- Offset is: 40 --** -- ASCII String -- -string(20) "Is an English string" +string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc=" --Multibyte String -- string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=" **-- Offset is: 50 --** -- ASCII String -- -string(20) "Is an English string" +string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc=" --Multibyte String -- string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=" **-- Offset is: 60 --** -- ASCII String -- -string(20) "Is an English string" +string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc=" --Multibyte String -- string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=" Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_substr_variation6.phpt b/ext/mbstring/tests/mb_substr_variation6.phpt new file mode 100644 index 000000000..20ee1ec15 --- /dev/null +++ b/ext/mbstring/tests/mb_substr_variation6.phpt @@ -0,0 +1,137 @@ +--TEST-- +Test mb_substr() function : usage variations - pass different integers to $start arg +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing mb_substr() : usage variations *** + +**-- Offset is: -60 --** +-- ASCII String -- +string(8) "2b497320" +--Multibyte String -- +string(24) "e697a5e69cace8aa9ee38386" + +**-- Offset is: -50 --** +-- ASCII String -- +string(8) "2b497320" +--Multibyte String -- +string(24) "e697a5e69cace8aa9ee38386" + +**-- Offset is: -40 --** +-- ASCII String -- +string(8) "2b497320" +--Multibyte String -- +string(24) "e697a5e69cace8aa9ee38386" + +**-- Offset is: -30 --** +-- ASCII String -- +string(8) "2b497320" +--Multibyte String -- +string(24) "e697a5e69cace8aa9ee38386" + +**-- Offset is: -20 --** +-- ASCII String -- +string(8) "49732061" +--Multibyte String -- +string(24) "e69cace8aa9ee38386e382ad" + +**-- Offset is: -10 --** +-- ASCII String -- +string(8) "69736820" +--Multibyte String -- +string(8) "31323334" + +**-- Offset is: 0 --** +-- ASCII String -- +string(8) "2b497320" +--Multibyte String -- +string(24) "e697a5e69cace8aa9ee38386" + +**-- Offset is: 10 --** +-- ASCII String -- +string(8) "6c697368" +--Multibyte String -- +string(8) "30313233" + +**-- Offset is: 20 --** +-- ASCII String -- +string(2) "67" +--Multibyte String -- +string(6) "e38082" + +**-- Offset is: 30 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: 40 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: 50 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: 60 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" +Done \ No newline at end of file diff --git a/ext/mbstring/tests/mb_substr_variation7.phpt b/ext/mbstring/tests/mb_substr_variation7.phpt new file mode 100644 index 000000000..4d68097df --- /dev/null +++ b/ext/mbstring/tests/mb_substr_variation7.phpt @@ -0,0 +1,138 @@ +--TEST-- +Test mb_substr() function : usage variations - pass different integers to $length arg +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing mb_substr() : usage variations *** + +**-- Offset is: -60 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: -50 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: -40 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: -30 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: -20 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: -10 --** +-- ASCII String -- +string(20) "497320616e20456e676c" +--Multibyte String -- +string(56) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e3808230" + +**-- Offset is: 0 --** +-- ASCII String -- +string(0) "" +--Multibyte String -- +string(0) "" + +**-- Offset is: 10 --** +-- ASCII String -- +string(20) "497320616e20456e676c" +--Multibyte String -- +string(56) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e3808230" + +**-- Offset is: 20 --** +-- ASCII String -- +string(40) "497320616e20456e676c69736820737472696e67" +--Multibyte String -- +string(100) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" + +**-- Offset is: 30 --** +-- ASCII String -- +string(40) "497320616e20456e676c69736820737472696e67" +--Multibyte String -- +string(100) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" + +**-- Offset is: 40 --** +-- ASCII String -- +string(40) "497320616e20456e676c69736820737472696e67" +--Multibyte String -- +string(100) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" + +**-- Offset is: 50 --** +-- ASCII String -- +string(40) "497320616e20456e676c69736820737472696e67" +--Multibyte String -- +string(100) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" + +**-- Offset is: 60 --** +-- ASCII String -- +string(40) "497320616e20456e676c69736820737472696e67" +--Multibyte String -- +string(100) "e69cace8aa9ee38386e382ade382b9e38388e381a7e38199e380823031323334efbc95efbc96efbc97efbc98efbc99e38082" +Done \ No newline at end of file diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c index a05b0314d..17a997ad9 100644 --- a/ext/mcrypt/mcrypt.c +++ b/ext/mcrypt/mcrypt.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Derick Rethans | +----------------------------------------------------------------------+ */ -/* $Id: mcrypt.c,v 1.91.2.3.2.12 2007/12/31 07:20:08 sebastian Exp $ */ +/* $Id: mcrypt.c,v 1.91.2.3.2.14 2008/12/31 11:17:39 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1041,15 +1041,17 @@ static void php_mcrypt_do_crypt (char* cipher, zval **key, zval **data, char *mo /* Check IV */ iv_s = NULL; iv_size = mcrypt_enc_get_iv_size (td); - if (argc == 5) { - if (iv_size != Z_STRLEN_PP(iv)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE); - } else { - iv_s = emalloc(iv_size + 1); - memcpy(iv_s, Z_STRVAL_PP(iv), iv_size); - } - } else if (argc == 4) { - if (iv_size != 0) { + + /* IV is required */ + if (mcrypt_enc_mode_has_iv(td) == 1) { + if (argc == 5) { + if (iv_size != Z_STRLEN_PP(iv)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, MCRYPT_IV_WRONG_SIZE); + } else { + iv_s = emalloc(iv_size + 1); + memcpy(iv_s, Z_STRVAL_PP(iv), iv_size); + } + } else if (argc == 4) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to use an empty IV, which is NOT recommend"); iv_s = emalloc(iv_size + 1); memset(iv_s, 0, iv_size + 1); diff --git a/ext/mcrypt/php_mcrypt.h b/ext/mcrypt/php_mcrypt.h index 428c90d00..a3ced7165 100644 --- a/ext/mcrypt/php_mcrypt.h +++ b/ext/mcrypt/php_mcrypt.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Derick Rethans | +----------------------------------------------------------------------+ */ -/* $Id: php_mcrypt.h,v 1.26.2.1.2.3 2007/12/31 07:20:08 sebastian Exp $ */ +/* $Id: php_mcrypt.h,v 1.26.2.1.2.4 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHP_MCRYPT_H #define PHP_MCRYPT_H diff --git a/ext/mcrypt/tests/bug46010.phpt b/ext/mcrypt/tests/bug46010.phpt new file mode 100644 index 000000000..5aeb3119d --- /dev/null +++ b/ext/mcrypt/tests/bug46010.phpt @@ -0,0 +1,14 @@ +--TEST--- +Bug #46010 (warnings incorrectly generated for iv in ecb mode) +--FILE-- + +--EXPECTF-- +string(16) "372eeb4a524b8d31" +string(16) "372eeb4a524b8d31" +string(16) "372eeb4a524b8d31" diff --git a/ext/mcrypt/tests/mcrypt_cbc.phpt b/ext/mcrypt/tests/mcrypt_cbc.phpt new file mode 100644 index 000000000..f9160db01 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc.phpt @@ -0,0 +1,23 @@ +--TEST-- +mcrypt_cbc +--SKIPIF-- + +--FILE-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(32) "736563726574206d6573736167650000" + +key length=20 +string(32) "736563726574206d6573736167650000" + +key length=24 +string(32) "736563726574206d6573736167650000" + +key length=26 + +Warning: mcrypt_cbc(): Size of key is too large for this algorithm in %s on line %d +string(32) "736563726574206d6573736167650000" + +--- testing different iv lengths + +iv length=4 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(32) "736563726574206d6573736167650000" + +iv length=8 +string(32) "736563726574206d6573736167650000" + +iv length=9 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(32) "736563726574206d6573736167650000" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_3des_encrypt.phpt b/ext/mcrypt/tests/mcrypt_cbc_3des_encrypt.phpt new file mode 100644 index 000000000..35fabd9ac --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_3des_encrypt.phpt @@ -0,0 +1,85 @@ +--TEST-- +Test mcrypt_cbc() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(112) "082b437d039d09418e20dc9de1dafa7ed6da5c6335b78950968441da1faf40c1f886e04da8ca177b80b376811e138c1bf51cb48dae2e7939" + +key length=20 +string(112) "0627351e0f8a082bf7981ae2c700a43fd3d44b270ac67b00fded1c5796eea935be0fef2a23da0b3f5e243929e62ac957bf0bf463aa90fc4f" + +key length=24 +string(112) "b85e21072239d60c63a80e7c9ae493cb741a1cd407e52f451c5f43a0d103f55a7b62617eb2e44213c2d44462d388bc0b8f119384b12c84ac" + +key length=26 + +Warning: mcrypt_cbc(): Size of key is too large for this algorithm in %s on line %d +string(112) "b85e21072239d60c63a80e7c9ae493cb741a1cd407e52f451c5f43a0d103f55a7b62617eb2e44213c2d44462d388bc0b8f119384b12c84ac" + +--- testing different iv lengths + +iv length=4 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(112) "440a6f54601969b127aad3c217ce7583c7f7b29989693130645569301db0020b29a34a3dcd104b2d0e3ba19d6cbd8a33d352b9c27cc34ef1" + +iv length=8 +string(112) "bac347506bf092c5557c4363c301745d78f047028e2953e84fd66b30aeb6005812dadbe8baa871b83278341599b0c448ddaaa52b5a378ce5" + +iv length=9 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(112) "440a6f54601969b127aad3c217ce7583c7f7b29989693130645569301db0020b29a34a3dcd104b2d0e3ba19d6cbd8a33d352b9c27cc34ef1" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_error.phpt b/ext/mcrypt/tests/mcrypt_cbc_error.phpt new file mode 100644 index 000000000..8b2f40316 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mcrypt_cbc() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : error conditions *** + +-- Testing mcrypt_cbc() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_cbc() in %s on line %d +NULL + +-- Testing mcrypt_cbc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_cbc() in %s on line %d +NULL +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_variation1.phpt b/ext/mcrypt/tests/mcrypt_cbc_variation1.phpt new file mode 100644 index 000000000..f20d1fd6e --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_variation1.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_cbc() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for cipher + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_cbc($value, $key, $data, $mode, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_cbc(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_variation2.phpt b/ext/mcrypt/tests/mcrypt_cbc_variation2.phpt new file mode 100644 index 000000000..1a52af85c --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_variation2.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_cbc() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for key + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_cbc($cipher, $value, $data, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : usage variation *** + +--int 0-- +string(32) "bc27b3a4e33b531d5983fc7df693cd09" + +--int 1-- +string(32) "bc27b3a4e33b531d5983fc7df693cd09" + +--int 12345-- +string(32) "d109b7973383127002474ae731c4b3a8" + +--int -12345-- +string(32) "3e82a931cedb03a38b91a637ff8c9f9e" + +--float 10.5-- +string(32) "de71833586c1d7132a289960ebeeca7a" + +--float -10.5-- +string(32) "7d0489dd2e99ae910ecc015573f3dd16" + +--float 12.3456789000e10-- +string(32) "978055b42c0506a8947e3c3c8d994baf" + +--float -12.3456789000e10-- +string(32) "4aa84ba400c2b8ef467d4d98372b4f4e" + +--float .5-- +string(32) "e731dc5059b84e0c8774ac490f77d6e6" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "b31472da397dea443db438ef0a4e78d7" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "b31472da397dea443db438ef0a4e78d7" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "b31472da397dea443db438ef0a4e78d7" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "b31472da397dea443db438ef0a4e78d7" + +--uppercase NULL-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--lowercase null-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--lowercase true-- +string(32) "bc27b3a4e33b531d5983fc7df693cd09" + +--lowercase false-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--uppercase TRUE-- +string(32) "bc27b3a4e33b531d5983fc7df693cd09" + +--uppercase FALSE-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--empty string DQ-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--empty string SQ-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--instance of classWithToString-- +string(32) "19420fa26f561ee82ed84abbcd2d284b" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(32) "18a3b947d8c233969284c4edd5364a08" + +--undefined var-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--unset var-- +string(32) "be722a5ffc361d721fbcab1eacc6acf5" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_variation3.phpt b/ext/mcrypt/tests/mcrypt_cbc_variation3.phpt new file mode 100644 index 000000000..7d0969c9f --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_variation3.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_cbc() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for data + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_cbc($cipher, $key, $value, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : usage variation *** + +--int 0-- +string(16) "ce5fcfe737859795" + +--int 1-- +string(16) "84df495f6cd82dd9" + +--int 12345-- +string(16) "905ab1ae27ee9991" + +--int -12345-- +string(16) "5835174e9c67c3e7" + +--float 10.5-- +string(16) "28ff0601ad9e47fa" + +--float -10.5-- +string(16) "ce9f2b6e2fc3d9f7" + +--float 12.3456789000e10-- +string(32) "24eb882ce9763e4018fba9b7f01b0c3e" + +--float -12.3456789000e10-- +string(32) "5eed30e428f32de1d7a7064d0ed4d3eb" + +--float .5-- +string(16) "bebf2a13676e1e30" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "10dc54a13dfa5318" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "10dc54a13dfa5318" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "10dc54a13dfa5318" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "10dc54a13dfa5318" + +--uppercase NULL-- +string(16) "206f6d3617a5ab32" + +--lowercase null-- +string(16) "206f6d3617a5ab32" + +--lowercase true-- +string(16) "84df495f6cd82dd9" + +--lowercase false-- +string(16) "206f6d3617a5ab32" + +--uppercase TRUE-- +string(16) "84df495f6cd82dd9" + +--uppercase FALSE-- +string(16) "206f6d3617a5ab32" + +--empty string DQ-- +string(16) "206f6d3617a5ab32" + +--empty string SQ-- +string(16) "206f6d3617a5ab32" + +--instance of classWithToString-- +string(32) "7c91cdf8f8c51485034a9ee528eb016b" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(16) "cb03344e2baced10" + +--undefined var-- +string(16) "206f6d3617a5ab32" + +--unset var-- +string(16) "206f6d3617a5ab32" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_variation4.phpt b/ext/mcrypt/tests/mcrypt_cbc_variation4.phpt new file mode 100644 index 000000000..f9a511f39 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_variation4.phpt @@ -0,0 +1,205 @@ +--TEST-- +Test mcrypt_cbc() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for mode + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_cbc($cipher, $key, $data, $value, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : usage variation *** + +--float 10.5-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--float -10.5-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--float 12.3456789000e10-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--float -12.3456789000e10-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--float .5-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--empty array-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--int indexed array-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--associative array-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--nested arrays-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--uppercase NULL-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--lowercase null-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--lowercase true-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--lowercase false-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--uppercase TRUE-- +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--uppercase FALSE-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--empty string DQ-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--empty string SQ-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--string DQ-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--string SQ-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--mixed case string-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--heredoc-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +string(32) "983d5edc5f77fe42e2372a0339dc22b0" + +--undefined var-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--unset var-- +string(32) "5f781523f696d596e4b809d72197a0cc" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbc_variation5.phpt b/ext/mcrypt/tests/mcrypt_cbc_variation5.phpt new file mode 100644 index 000000000..2fdc9a920 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbc_variation5.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_cbc() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for iv + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( bin2hex(mcrypt_cbc($cipher, $key, $data, $mode, $value)) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_cbc() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int 1-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int 12345-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int -12345-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float 10.5-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float -10.5-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float 12.3456789000e10-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float -12.3456789000e10-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float .5-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase NULL-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase null-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase true-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase false-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase TRUE-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase FALSE-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty string DQ-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty string SQ-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--instance of classWithToString-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--undefined var-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--unset var-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--resource-- +Error: 2 - mcrypt_cbc(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_cbf.phpt b/ext/mcrypt/tests/mcrypt_cbf.phpt new file mode 100644 index 000000000..8ec3cd7d3 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_cbf.phpt @@ -0,0 +1,23 @@ +--TEST-- +mcrypt_cbf +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(32) "736563726574206d6573736167650000" + +key length=20 +string(32) "736563726574206d6573736167650000" + +key length=24 +string(32) "736563726574206d6573736167650000" + +key length=26 + +Warning: mcrypt_decrypt(): Size of key is too large for this algorithm in %s on line %d +string(32) "736563726574206d6573736167650000" + +--- testing different iv lengths + +iv length=4 + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(32) "736563726574206d6573736167650000" + +iv length=8 +string(32) "736563726574206d6573736167650000" + +iv length=9 + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(32) "736563726574206d6573736167650000" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_3des_ecb.phpt b/ext/mcrypt/tests/mcrypt_decrypt_3des_ecb.phpt new file mode 100644 index 000000000..5f841c1b0 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_3des_ecb.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test mcrypt_decrypt() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(32) "736563726574206d6573736167650000" + +key length=20 +string(32) "736563726574206d6573736167650000" + +key length=24 +string(32) "736563726574206d6573736167650000" + +key length=26 + +Warning: mcrypt_decrypt(): Size of key is too large for this algorithm in %s on line %d +string(32) "736563726574206d6573736167650000" + +--- testing different iv lengths + +iv length=4 +string(32) "736563726574206d6573736167650000" + +iv length=8 +string(32) "736563726574206d6573736167650000" + +iv length=9 +string(32) "736563726574206d6573736167650000" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_error.phpt b/ext/mcrypt/tests/mcrypt_decrypt_error.phpt new file mode 100644 index 000000000..c231c2871 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mcrypt_decrypt() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : error conditions *** + +-- Testing mcrypt_decrypt() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_decrypt() in %s on line %d +NULL + +-- Testing mcrypt_decrypt() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_decrypt() in %s on line %d +NULL +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_variation1.phpt b/ext/mcrypt/tests/mcrypt_decrypt_variation1.phpt new file mode 100644 index 000000000..8f9b2593d --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_variation1.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_decrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for cipher + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_decrypt($value, $key, $data, $mode, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_variation2.phpt b/ext/mcrypt/tests/mcrypt_decrypt_variation2.phpt new file mode 100644 index 000000000..90a928929 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_variation2.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_decrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for key + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( bin2hex(mcrypt_decrypt($cipher, $value, $data, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : usage variation *** + +--int 0-- +string(32) "43a1ae011df36064589d06bc922ecd97" + +--int 1-- +string(32) "43a1ae011df36064589d06bc922ecd97" + +--int 12345-- +string(32) "e5885552e16c44d4eb6164f477b40200" + +--int -12345-- +string(32) "adf7873831a9035cda9f9dc3b7dc626b" + +--float 10.5-- +string(32) "08b0b9fac9c227437b7b5d0147e6153b" + +--float -10.5-- +string(32) "f470cc74d83471b42a3e28d4ec57799a" + +--float 12.3456789000e10-- +string(32) "36c618c00523fadc372b871eaa9c7b16" + +--float -12.3456789000e10-- +string(32) "a554a5bdb7a5ceb6ae6f20566ef02e49" + +--float .5-- +string(32) "bcb840ff76d3788a7911ed36f088a910" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "da1c25d8072b525eddc64d780289d3d2" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "da1c25d8072b525eddc64d780289d3d2" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "da1c25d8072b525eddc64d780289d3d2" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "da1c25d8072b525eddc64d780289d3d2" + +--uppercase NULL-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase null-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase true-- +string(32) "43a1ae011df36064589d06bc922ecd97" + +--lowercase false-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--uppercase TRUE-- +string(32) "43a1ae011df36064589d06bc922ecd97" + +--uppercase FALSE-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string DQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string SQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--instance of classWithToString-- +string(32) "478f9d080563835cc3136610802f1433" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(32) "54d78c815c202f7368ff00b4bd604b48" + +--undefined var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--unset var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--resource-- +string(%s) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_variation3.phpt b/ext/mcrypt/tests/mcrypt_decrypt_variation3.phpt new file mode 100644 index 000000000..27c325b01 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_variation3.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_decrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for data + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_decrypt($cipher, $key, $value, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : usage variation *** + +--int 0-- +string(16) "52833a00168e547f" + +--int 1-- +string(16) "82011a0a93098a13" + +--int 12345-- +string(16) "e8b71c21b6acc162" + +--int -12345-- +string(16) "db3c458e975563a8" + +--float 10.5-- +string(16) "6ee8764562f25913" + +--float -10.5-- +string(16) "d63b39fd5f65678e" + +--float 12.3456789000e10-- +string(32) "7712cc4828221be40672239d9c32e742" + +--float -12.3456789000e10-- +string(32) "caa892cb5d28b53c2b75b1e0799427c3" + +--float .5-- +string(16) "99880c86884385d9" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "262d0f1667fc7d74" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "262d0f1667fc7d74" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "262d0f1667fc7d74" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "262d0f1667fc7d74" + +--uppercase NULL-- +string(16) "d27689f6fd9700f4" + +--lowercase null-- +string(16) "d27689f6fd9700f4" + +--lowercase true-- +string(16) "82011a0a93098a13" + +--lowercase false-- +string(16) "d27689f6fd9700f4" + +--uppercase TRUE-- +string(16) "82011a0a93098a13" + +--uppercase FALSE-- +string(16) "d27689f6fd9700f4" + +--empty string DQ-- +string(16) "d27689f6fd9700f4" + +--empty string SQ-- +string(16) "d27689f6fd9700f4" + +--instance of classWithToString-- +string(32) "46677e368bc07ef375bd580e0c4b2594" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(16) "c4595fa6833ba9e3" + +--undefined var-- +string(16) "d27689f6fd9700f4" + +--unset var-- +string(16) "d27689f6fd9700f4" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_variation4.phpt b/ext/mcrypt/tests/mcrypt_decrypt_variation4.phpt new file mode 100644 index 000000000..12e44312d --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_variation4.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_decrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for mode + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_decrypt($cipher, $key, $data, $value, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_decrypt(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_decrypt_variation5.phpt b/ext/mcrypt/tests/mcrypt_decrypt_variation5.phpt new file mode 100644 index 000000000..30949f1a6 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_decrypt_variation5.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_decrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for iv + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_decrypt($cipher, $key, $data, $mode, $value))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_decrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--int 1-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--int 12345-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--int -12345-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--float 10.5-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--float -10.5-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--float 12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--float -12.3456789000e10-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--float .5-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--uppercase NULL-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--lowercase null-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--lowercase true-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--lowercase false-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--uppercase TRUE-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--uppercase FALSE-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--empty string DQ-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--empty string SQ-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--instance of classWithToString-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--undefined var-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--unset var-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "a80c6cef6b42c875e2372a0339dc22b0" + +--resource-- +Error: 2 - mcrypt_decrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb.phpt b/ext/mcrypt/tests/mcrypt_ecb.phpt new file mode 100644 index 000000000..3edc40715 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb.phpt @@ -0,0 +1,23 @@ +--TEST-- +mcrypt_ecb +--SKIPIF-- + +--FILE-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(32) "736563726574206d6573736167650000" + +key length=20 +string(32) "736563726574206d6573736167650000" + +key length=24 +string(32) "736563726574206d6573736167650000" + +key length=26 + +Warning: mcrypt_ecb(): Size of key is too large for this algorithm in %s on line %d +string(32) "736563726574206d6573736167650000" + +--- testing different iv lengths + +iv length=4 +string(32) "736563726574206d6573736167650000" + +iv length=8 +string(32) "736563726574206d6573736167650000" + +iv length=9 +string(32) "736563726574206d6573736167650000" +===DONE=== \ No newline at end of file diff --git a/ext/mcrypt/tests/mcrypt_ecb_3des_encrypt.phpt b/ext/mcrypt/tests/mcrypt_ecb_3des_encrypt.phpt new file mode 100644 index 000000000..da26b4ba8 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_3des_encrypt.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test mcrypt_ecb() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : basic functionality *** + +--- testing different key lengths + +key length=8 +string(112) "05c9c4cafb9937d950bdae60ee3abcb8d9f3e1f1fac8acaaa5b11d70b7ca02f3b76d447ab3dd85a4b5df5dedb4b4654595ccdf6da97fa93f" + +key length=20 +string(112) "0fc7045c4fb4dbcf44baf9ed15ab40331a42ff0632318a16b12ed5873f02e7945e4f63f408d6849534cbb7419c22c8854aaa85e0e05a28e6" + +key length=24 +string(112) "923eedcb20e18e3efa466a6ca1b842b34e6ac46aa3690ef739d0d68a26eb64e1a6ad42e7d18312ae8a57ab927e1dc892e5ff56c061864f27" + +key length=26 + +Warning: mcrypt_ecb(): Size of key is too large for this algorithm in %s on line %d +string(112) "923eedcb20e18e3efa466a6ca1b842b34e6ac46aa3690ef739d0d68a26eb64e1a6ad42e7d18312ae8a57ab927e1dc892e5ff56c061864f27" + +--- testing different iv lengths + +iv length=4 +string(112) "440a6f54601969b15e81df09cd381ef585fede5f3620587fd1a949c520aed9f6d10ebbabf2cea3e1f04c9251c2878c0ca37d51c80d490165" + +iv length=8 +string(112) "440a6f54601969b15e81df09cd381ef585fede5f3620587fd1a949c520aed9f6d10ebbabf2cea3e1f04c9251c2878c0ca37d51c80d490165" + +iv length=9 +string(112) "440a6f54601969b15e81df09cd381ef585fede5f3620587fd1a949c520aed9f6d10ebbabf2cea3e1f04c9251c2878c0ca37d51c80d490165" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_error.phpt b/ext/mcrypt/tests/mcrypt_ecb_error.phpt new file mode 100644 index 000000000..7e9fe57d2 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mcrypt_ecb() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : error conditions *** + +-- Testing mcrypt_ecb() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_ecb() in %s on line %d +NULL + +-- Testing mcrypt_ecb() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_ecb() in %s on line %d +NULL +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_variation1.phpt b/ext/mcrypt/tests/mcrypt_ecb_variation1.phpt new file mode 100644 index 000000000..ed4480ca7 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_variation1.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_ecb() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for cipher + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_ecb($value, $key, $data, $mode, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_ecb(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_variation2.phpt b/ext/mcrypt/tests/mcrypt_ecb_variation2.phpt new file mode 100644 index 000000000..efe89d817 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_variation2.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_ecb() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for key + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_ecb($cipher, $value, $data, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : usage variation *** + +--int 0-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--int 1-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--int 12345-- +string(32) "d74e5f51d1199bcfa61f80168e913007" + +--int -12345-- +string(32) "17fe485ed735abb34c1dd4455af7b79c" + +--float 10.5-- +string(32) "cd735509aa4013a130e011686d66ae01" + +--float -10.5-- +string(32) "a57d99d6d5813039abf50fc50d631e47" + +--float 12.3456789000e10-- +string(32) "f17ede0bfdaa4408f545f7f4c8b040d2" + +--float -12.3456789000e10-- +string(32) "326f64e3b9bd5a6beb0a9b52a09a5a48" + +--float .5-- +string(32) "2aedf7661cd4d8c7593f44c58718e2b8" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--uppercase NULL-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase null-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase true-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--lowercase false-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--uppercase TRUE-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--uppercase FALSE-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string DQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string SQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--instance of classWithToString-- +string(32) "1fd3514d8ced44d04d9dc7511fce33ef" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(32) "fb3ff12423b2c3ba38905e448d35f4c0" + +--undefined var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--unset var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_variation3.phpt b/ext/mcrypt/tests/mcrypt_ecb_variation3.phpt new file mode 100644 index 000000000..416a6b20d --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_variation3.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_ecb() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for data + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_ecb($cipher, $key, $value, $mode, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : usage variation *** + +--int 0-- +string(16) "51dc9cd9179b718b" + +--int 1-- +string(16) "619c335f8c4f9cbf" + +--int 12345-- +string(16) "b1258d67ab73de00" + +--int -12345-- +string(16) "8eecf134443bd6b9" + +--float 10.5-- +string(16) "34b5750a793baff5" + +--float -10.5-- +string(16) "7a605f2aacc8a11d" + +--float 12.3456789000e10-- +string(32) "74a0d7026ae586f476d4b17808851e86" + +--float -12.3456789000e10-- +string(32) "bfb155997017986c01090afebd62c7ca" + +--float .5-- +string(16) "cc60ac201164b6c7" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--uppercase NULL-- +string(16) "6ece228c41457539" + +--lowercase null-- +string(16) "6ece228c41457539" + +--lowercase true-- +string(16) "619c335f8c4f9cbf" + +--lowercase false-- +string(16) "6ece228c41457539" + +--uppercase TRUE-- +string(16) "619c335f8c4f9cbf" + +--uppercase FALSE-- +string(16) "6ece228c41457539" + +--empty string DQ-- +string(16) "6ece228c41457539" + +--empty string SQ-- +string(16) "6ece228c41457539" + +--instance of classWithToString-- +string(32) "749c3b4d16731d98370128754b7c930f" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(16) "e8c97e08755c2169" + +--undefined var-- +string(16) "6ece228c41457539" + +--unset var-- +string(16) "6ece228c41457539" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_variation4.phpt b/ext/mcrypt/tests/mcrypt_ecb_variation4.phpt new file mode 100644 index 000000000..599b4fbe7 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_variation4.phpt @@ -0,0 +1,205 @@ +--TEST-- +Test mcrypt_ecb() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for mode + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex(mcrypt_ecb($cipher, $key, $data, $value, $iv))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : usage variation *** + +--float 10.5-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--float -10.5-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--float 12.3456789000e10-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--float -12.3456789000e10-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--float .5-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty array-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--int indexed array-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--associative array-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--nested arrays-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--uppercase NULL-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--lowercase null-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--lowercase true-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--lowercase false-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--uppercase TRUE-- +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--uppercase FALSE-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty string DQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty string SQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--string DQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--string SQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--mixed case string-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--heredoc-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +string(32) "a80c6cef6b42c8759143586a57bb7dc6" + +--undefined var-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--unset var-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--resource-- +string(%d) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_ecb_variation5.phpt b/ext/mcrypt/tests/mcrypt_ecb_variation5.phpt new file mode 100644 index 000000000..05f55153e --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_ecb_variation5.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_ecb() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for iv + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump(bin2hex( mcrypt_ecb($cipher, $key, $data, $mode, $value))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_ecb() : usage variation *** + +--int 0-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--int 1-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--int 12345-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--int -12345-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--float 10.5-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--float -10.5-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--float 12.3456789000e10-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--float -12.3456789000e10-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--float .5-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "6438db90653c4d300909aa02fd6163c2" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "6438db90653c4d300909aa02fd6163c2" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "6438db90653c4d300909aa02fd6163c2" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "6438db90653c4d300909aa02fd6163c2" + +--uppercase NULL-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--lowercase null-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--lowercase true-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--lowercase false-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--uppercase TRUE-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--uppercase FALSE-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty string DQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--empty string SQ-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--instance of classWithToString-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(32) "6438db90653c4d300909aa02fd6163c2" + +--undefined var-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--unset var-- +string(32) "6438db90653c4d300909aa02fd6163c2" + +--resource-- +string(32) "6438db90653c4d300909aa02fd6163c2" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_enc_get_algorithms_name.phpt b/ext/mcrypt/tests/mcrypt_enc_get_algorithms_name.phpt new file mode 100644 index 000000000..5b0bb01b9 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_enc_get_algorithms_name.phpt @@ -0,0 +1,22 @@ +--TEST-- +mcrypt_enc_get_algorithms_name +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + + int(16) + [1]=> + int(24) + [2]=> + int(32) +} \ No newline at end of file diff --git a/ext/mcrypt/tests/mcrypt_enc_is_block_algorithm.phpt b/ext/mcrypt/tests/mcrypt_enc_is_block_algorithm.phpt new file mode 100644 index 000000000..21a0ed2b8 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_enc_is_block_algorithm.phpt @@ -0,0 +1,16 @@ +--TEST-- +mcrypt_enc_is_block_algorithm +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : TripleDES functionality *** + +--- testing different key lengths + +key length=8 +string(112) "082b437d039d09418e20dc9de1dafa7ed6da5c6335b78950968441da1faf40c1f886e04da8ca177b80b376811e138c1bf51cb48dae2e7939" + +key length=20 +string(112) "0627351e0f8a082bf7981ae2c700a43fd3d44b270ac67b00fded1c5796eea935be0fef2a23da0b3f5e243929e62ac957bf0bf463aa90fc4f" + +key length=24 +string(112) "b85e21072239d60c63a80e7c9ae493cb741a1cd407e52f451c5f43a0d103f55a7b62617eb2e44213c2d44462d388bc0b8f119384b12c84ac" + +key length=26 + +Warning: mcrypt_encrypt(): Size of key is too large for this algorithm in %s on line %d +string(112) "b85e21072239d60c63a80e7c9ae493cb741a1cd407e52f451c5f43a0d103f55a7b62617eb2e44213c2d44462d388bc0b8f119384b12c84ac" + +--- testing different iv lengths + +iv length=4 + +Warning: mcrypt_encrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(112) "440a6f54601969b127aad3c217ce7583c7f7b29989693130645569301db0020b29a34a3dcd104b2d0e3ba19d6cbd8a33d352b9c27cc34ef1" + +iv length=8 +string(112) "bac347506bf092c5557c4363c301745d78f047028e2953e84fd66b30aeb6005812dadbe8baa871b83278341599b0c448ddaaa52b5a378ce5" + +iv length=9 + +Warning: mcrypt_encrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(112) "440a6f54601969b127aad3c217ce7583c7f7b29989693130645569301db0020b29a34a3dcd104b2d0e3ba19d6cbd8a33d352b9c27cc34ef1" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_3des_ecb.phpt b/ext/mcrypt/tests/mcrypt_encrypt_3des_ecb.phpt new file mode 100644 index 000000000..1b3188f8e --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_3des_ecb.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test mcrypt_encrypt() function : TripleDES functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : TripleDES functionality *** + +--- testing different key lengths + +key length=8 +string(112) "05c9c4cafb9937d950bdae60ee3abcb8d9f3e1f1fac8acaaa5b11d70b7ca02f3b76d447ab3dd85a4b5df5dedb4b4654595ccdf6da97fa93f" + +key length=20 +string(112) "0fc7045c4fb4dbcf44baf9ed15ab40331a42ff0632318a16b12ed5873f02e7945e4f63f408d6849534cbb7419c22c8854aaa85e0e05a28e6" + +key length=24 +string(112) "923eedcb20e18e3efa466a6ca1b842b34e6ac46aa3690ef739d0d68a26eb64e1a6ad42e7d18312ae8a57ab927e1dc892e5ff56c061864f27" + +key length=26 + +Warning: mcrypt_encrypt(): Size of key is too large for this algorithm in %s on line %d +string(112) "923eedcb20e18e3efa466a6ca1b842b34e6ac46aa3690ef739d0d68a26eb64e1a6ad42e7d18312ae8a57ab927e1dc892e5ff56c061864f27" + +--- testing different iv lengths + +iv length=4 +string(112) "05c9c4cafb9937d950bdae60ee3abcb8d9f3e1f1fac8acaaa5b11d70b7ca02f3b76d447ab3dd85a4b5df5dedb4b4654595ccdf6da97fa93f" + +iv length=8 +string(112) "05c9c4cafb9937d950bdae60ee3abcb8d9f3e1f1fac8acaaa5b11d70b7ca02f3b76d447ab3dd85a4b5df5dedb4b4654595ccdf6da97fa93f" + +iv length=9 +string(112) "05c9c4cafb9937d950bdae60ee3abcb8d9f3e1f1fac8acaaa5b11d70b7ca02f3b76d447ab3dd85a4b5df5dedb4b4654595ccdf6da97fa93f" +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_error.phpt b/ext/mcrypt/tests/mcrypt_encrypt_error.phpt new file mode 100644 index 000000000..948e42549 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test mcrypt_encrypt() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : error conditions *** + +-- Testing mcrypt_encrypt() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_encrypt() in %s on line %d +NULL + +-- Testing mcrypt_encrypt() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for mcrypt_encrypt() in %s on line %d +NULL +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_variation1.phpt b/ext/mcrypt/tests/mcrypt_encrypt_variation1.phpt new file mode 100644 index 000000000..c1e270086 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_variation1.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_encrypt() function : usage variation - different types for cipher +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for cipher + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_encrypt($value, $key, $data, $mode, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_variation2.phpt b/ext/mcrypt/tests/mcrypt_encrypt_variation2.phpt new file mode 100644 index 000000000..86d34b884 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_variation2.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_encrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for key + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( bin2hex(mcrypt_encrypt($cipher, $value, $data, $mode, $iv) )); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : usage variation *** + +--int 0-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--int 1-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--int 12345-- +string(32) "d74e5f51d1199bcfa61f80168e913007" + +--int -12345-- +string(32) "17fe485ed735abb34c1dd4455af7b79c" + +--float 10.5-- +string(32) "cd735509aa4013a130e011686d66ae01" + +--float -10.5-- +string(32) "a57d99d6d5813039abf50fc50d631e47" + +--float 12.3456789000e10-- +string(32) "f17ede0bfdaa4408f545f7f4c8b040d2" + +--float -12.3456789000e10-- +string(32) "326f64e3b9bd5a6beb0a9b52a09a5a48" + +--float .5-- +string(32) "2aedf7661cd4d8c7593f44c58718e2b8" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(32) "3e67235c6c77c7795b69f7bf31ad63ec" + +--uppercase NULL-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase null-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--lowercase true-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--lowercase false-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--uppercase TRUE-- +string(32) "e469e6b066f9600e1eefd8f53365f96c" + +--uppercase FALSE-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string DQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--empty string SQ-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--instance of classWithToString-- +string(32) "1fd3514d8ced44d04d9dc7511fce33ef" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(32) "fb3ff12423b2c3ba38905e448d35f4c0" + +--undefined var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--unset var-- +string(32) "bfa2cb7240c8d2f6abeb34960c04f6d3" + +--resource-- +string(%s) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_variation3.phpt b/ext/mcrypt/tests/mcrypt_encrypt_variation3.phpt new file mode 100644 index 000000000..33c364327 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_variation3.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test mcrypt_encrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for data + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( bin2hex(mcrypt_encrypt($cipher, $key, $value, $mode, $iv) )); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : usage variation *** + +--int 0-- +string(16) "51dc9cd9179b718b" + +--int 1-- +string(16) "619c335f8c4f9cbf" + +--int 12345-- +string(16) "b1258d67ab73de00" + +--int -12345-- +string(16) "8eecf134443bd6b9" + +--float 10.5-- +string(16) "34b5750a793baff5" + +--float -10.5-- +string(16) "7a605f2aacc8a11d" + +--float 12.3456789000e10-- +string(32) "74a0d7026ae586f476d4b17808851e86" + +--float -12.3456789000e10-- +string(32) "bfb155997017986c01090afebd62c7ca" + +--float .5-- +string(16) "cc60ac201164b6c7" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(16) "c5f0f5425f13ef7c" + +--uppercase NULL-- +string(16) "6ece228c41457539" + +--lowercase null-- +string(16) "6ece228c41457539" + +--lowercase true-- +string(16) "619c335f8c4f9cbf" + +--lowercase false-- +string(16) "6ece228c41457539" + +--uppercase TRUE-- +string(16) "619c335f8c4f9cbf" + +--uppercase FALSE-- +string(16) "6ece228c41457539" + +--empty string DQ-- +string(16) "6ece228c41457539" + +--empty string SQ-- +string(16) "6ece228c41457539" + +--instance of classWithToString-- +string(32) "749c3b4d16731d98370128754b7c930f" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(16) "e8c97e08755c2169" + +--undefined var-- +string(16) "6ece228c41457539" + +--unset var-- +string(16) "6ece228c41457539" + +--resource-- +string(%s) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_variation4.phpt b/ext/mcrypt/tests/mcrypt_encrypt_variation4.phpt new file mode 100644 index 000000000..4c8cef1db --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_variation4.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test mcrypt_encrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for mode + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( mcrypt_encrypt($cipher, $key, $data, $value, $iv) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 1-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--float .5-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--unset var-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) + +--resource-- +Error: 2 - mcrypt_encrypt(): Module initialization failed, %s(%d) +bool(false) +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_encrypt_variation5.phpt b/ext/mcrypt/tests/mcrypt_encrypt_variation5.phpt new file mode 100644 index 000000000..f720e18ff --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_encrypt_variation5.phpt @@ -0,0 +1,236 @@ +--TEST-- +Test mcrypt_encrypt() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for iv + +foreach($inputs as $valueType =>$value) { + echo "\n--$valueType--\n"; + var_dump( bin2hex(mcrypt_encrypt($cipher, $key, $data, $mode, $value))); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing mcrypt_encrypt() : usage variation *** + +--int 0-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int 1-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int 12345-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int -12345-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float 10.5-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float -10.5-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float 12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float -12.3456789000e10-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--float .5-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase NULL-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase null-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase true-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--lowercase false-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase TRUE-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--uppercase FALSE-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty string DQ-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--empty string SQ-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--instance of classWithToString-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--undefined var-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--unset var-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(32) "6438db90653c4d3080c3ceab43618c05" + +--resource-- +Error: 2 - mcrypt_encrypt(): The IV parameter must be as long as the blocksize, %s(%d) +string(%s) %s +===DONE=== diff --git a/ext/mcrypt/tests/mcrypt_get_block_size.phpt b/ext/mcrypt/tests/mcrypt_get_block_size.phpt new file mode 100644 index 000000000..bf1f24df3 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_get_block_size.phpt @@ -0,0 +1,13 @@ +--TEST-- +mcrypt_get_block_size +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + + string(3) "cbc" + [1]=> + string(3) "cfb" + [2]=> + string(3) "ctr" + [3]=> + string(3) "ecb" + [4]=> + string(4) "ncfb" + [5]=> + string(4) "nofb" + [6]=> + string(3) "ofb" + [7]=> + string(6) "stream" +} \ No newline at end of file diff --git a/ext/mcrypt/tests/mcrypt_module_get_algo_block_size.phpt b/ext/mcrypt/tests/mcrypt_module_get_algo_block_size.phpt new file mode 100644 index 000000000..c89a44ad8 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_module_get_algo_block_size.phpt @@ -0,0 +1,19 @@ +--TEST-- +mcrypt_module_get_algo_block_size +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + + int(16) + [1]=> + int(24) + [2]=> + int(32) +} +array(0) { +} \ No newline at end of file diff --git a/ext/mcrypt/tests/mcrypt_module_is_block_algorithm.phpt b/ext/mcrypt/tests/mcrypt_module_is_block_algorithm.phpt new file mode 100644 index 000000000..2cfc87ddf --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_module_is_block_algorithm.phpt @@ -0,0 +1,15 @@ +--TEST-- +mcrypt_module_is_block_algorithm +--SKIPIF-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt : Rijndael128 functionality *** + +--- testing different key lengths + +key length=0 +string(128) "4fbf24aaa789f5194260ade1acd9499402c1845cc517e8fe43cfb5b90a0df294db33ecd1a836c47d6bf6d8600512ba415e17008a1e1991f81056258d82099397" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=0 +string(128) "4fbf24aaa789f5194260ade1acd9499402c1845cc517e8fe43cfb5b90a0df294db33ecd1a836c47d6bf6d8600512ba415e17008a1e1991f81056258d82099397" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=8 +string(128) "d6a3042b278fa5816dc6f46152acbe5fd7d1813c3808c27cd969d8e10a64d0238724edfda0322f4512308f22d142df0e92bed861c2b732f7650e234df59183dc" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=16 +string(128) "dc8f957ec530acf10cd95ba7da7b6405380fe19a2941e9a8de54680512f18491bc374e5464885ae6c2ae2aa7a6cdd2fbe12a06bbc4bd59dbbfaa15f09044f101" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +--- testing different iv lengths + +iv length=0 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "c082b3fabaae4c8c410eb8dba64bae10e48d79b5241fb8f24462cad43bd0b35ad2746b00817e9dcbc636b44df0ec60b46a57e7a310a308a0947724e3817a13b4" + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +iv length=0 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "c082b3fabaae4c8c410eb8dba64bae10e48d79b5241fb8f24462cad43bd0b35ad2746b00817e9dcbc636b44df0ec60b46a57e7a310a308a0947724e3817a13b4" + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +iv length=8 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "c082b3fabaae4c8c410eb8dba64bae10e48d79b5241fb8f24462cad43bd0b35ad2746b00817e9dcbc636b44df0ec60b46a57e7a310a308a0947724e3817a13b4" + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +iv length=16 +string(128) "dc8f957ec530acf10cd95ba7da7b6405380fe19a2941e9a8de54680512f18491bc374e5464885ae6c2ae2aa7a6cdd2fbe12a06bbc4bd59dbbfaa15f09044f101" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +iv length=17 + +Warning: mcrypt_cbc(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "c082b3fabaae4c8c410eb8dba64bae10e48d79b5241fb8f24462cad43bd0b35ad2746b00817e9dcbc636b44df0ec60b46a57e7a310a308a0947724e3817a13b4" + +Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize in %s on line %d +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" +===DONE=== \ No newline at end of file diff --git a/ext/mcrypt/tests/mcrypt_rijndael128_256BitKey.phpt b/ext/mcrypt/tests/mcrypt_rijndael128_256BitKey.phpt new file mode 100644 index 000000000..f69d36929 --- /dev/null +++ b/ext/mcrypt/tests/mcrypt_rijndael128_256BitKey.phpt @@ -0,0 +1,87 @@ +--TEST-- +Test mcrypt_encrypt() function : TripleDES functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mcrypt : Rijndael128 functionality *** + +--- testing different key lengths + +key length=20 +string(128) "6369830bfc89a39c9981c9a40e349e3bbc8599c28d7ffbd7a330a67690dac6dfb76a55814e95c83cced68eb1544cdd8406d272c249bd0a60fa5b605d4aefbaa0" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=24 +string(128) "8ecdf1ed5742aff16ef34c819c8d22c707c54f4d9ffc18e5f6ab79fe68c25705351e2c001a0b9f29e5def67570ca9da644efb69a8bb97940cb4bec094dae8bb5" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=30 +string(128) "f7731f0c0ab22270b2f516c7837256ed731ba6658ca8f78cda2ab1588e204f990843719ae88474f6572711674fcda9f40d99155e4cc4f5a31aa461ad36a7871d" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=32 +string(128) "f23bc103bfd0859a8318acee6d96e5f43dff68f3cdeae817a1e77c33492e32bdb82c5f660fcd1a2bfda70d9de4d5d8028ce179a9e2f7f9ee7dd61c7b4b409e95" +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" + +key length=40 + +Warning: mcrypt_encrypt(): Size of key is too large for this algorithm in %s on line %d +string(128) "f23bc103bfd0859a8318acee6d96e5f43dff68f3cdeae817a1e77c33492e32bdb82c5f660fcd1a2bfda70d9de4d5d8028ce179a9e2f7f9ee7dd61c7b4b409e95" + +Warning: mcrypt_decrypt(): Size of key is too large for this algorithm in %s on line %d +string(128) "546869732069732074686520736563726574206d657373616765207768696368206d75737420626520656e637279707465640000000000000000000000000000" +===DONE=== \ No newline at end of file diff --git a/ext/mhash/mhash.c b/ext/mhash/mhash.c index dccf0158b..c699fa73c 100644 --- a/ext/mhash/mhash.c +++ b/ext/mhash/mhash.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Nikos Mavroyanopoulos (HMAC, KEYGEN) | +----------------------------------------------------------------------+ */ -/* $Id: mhash.c,v 1.48.2.3.2.6 2007/12/31 07:20:08 sebastian Exp $ */ +/* $Id: mhash.c,v 1.48.2.3.2.7 2008/12/31 11:17:39 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/mhash/php_mhash.h b/ext/mhash/php_mhash.h index 0258c9e3f..67435e06a 100644 --- a/ext/mhash/php_mhash.h +++ b/ext/mhash/php_mhash.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Nikos Mavroyanopoulos (HMAC, KEYGEN) | +----------------------------------------------------------------------+ */ -/* $Id: php_mhash.h,v 1.12.2.1.2.2 2007/12/31 07:20:08 sebastian Exp $ */ +/* $Id: php_mhash.h,v 1.12.2.1.2.3 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHP_MHASH_H #define PHP_MHASH_H diff --git a/ext/mime_magic/mime_magic.c b/ext/mime_magic/mime_magic.c index f864f6079..6a4fa6b25 100644 --- a/ext/mime_magic/mime_magic.c +++ b/ext/mime_magic/mime_magic.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ - $Id: mime_magic.c,v 1.42.2.5.2.8 2007/12/31 07:20:08 sebastian Exp $ + $Id: mime_magic.c,v 1.42.2.5.2.9 2008/12/31 11:17:39 sebastian Exp $ This module contains a lot of stuff taken from Apache mod_mime_magic, so the license section is a little bit longer than usual: diff --git a/ext/mime_magic/php_mime_magic.h b/ext/mime_magic/php_mime_magic.h index 43f576ee1..5a346f8bf 100644 --- a/ext/mime_magic/php_mime_magic.h +++ b/ext/mime_magic/php_mime_magic.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: | +----------------------------------------------------------------------+ - $Id: php_mime_magic.h,v 1.11.2.1.2.2 2007/12/31 07:20:08 sebastian Exp $ + $Id: php_mime_magic.h,v 1.11.2.1.2.3 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHP_MIME_MAGIC_H diff --git a/ext/mime_magic/phpmimemagic.h b/ext/mime_magic/phpmimemagic.h index c8426722b..2b95b5a1c 100644 --- a/ext/mime_magic/phpmimemagic.h +++ b/ext/mime_magic/phpmimemagic.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: | +----------------------------------------------------------------------+ - $Id: phpmimemagic.h,v 1.3.2.2.2.2 2007/12/31 07:20:08 sebastian Exp $ + $Id: phpmimemagic.h,v 1.3.2.2.2.3 2008/12/31 11:17:39 sebastian Exp $ */ #ifndef PHPMIMEMAGIC_H diff --git a/ext/mime_magic/tests/magic.mime b/ext/mime_magic/tests/magic.mime new file mode 100644 index 000000000..d688e1c9d --- /dev/null +++ b/ext/mime_magic/tests/magic.mime @@ -0,0 +1,590 @@ +# This file is created from the magic.mime file from php.net 5.2.4 windows releaase +# fixing a few entries, plus taking entries from apache "magic" file. +# The first section is from php.net - magic.mime +0 leshort 0x602 application/x-alan-adventure-game +0 string TADS application/x-tads-game +0 short 0420 application/x-executable-file +0 short 0421 application/x-executable-file +0 leshort 0603 application/x-executable-file +0 string Core\001 application/x-executable-file +0 string AMANDA:\ TAPESTART\ DATE application/x-amanda-header +0 belong 0x000003f3 application/x-executable-file +0 belong 0x000003e7 application/x-library-file +0 belong 0x000001b3 video/mpeg +0 belong 0x000001ba video/mpeg +0 beshort&0xfff0 0xfff0 audio/mpeg +4 leshort 0xAF11 video/fli +4 leshort 0xAF12 video/flc +0 string MOVI video/x-sgi-movie +4 string moov video/quicktime +4 string mdat video/quicktime +0 long 0100554 application/x-apl-workspace +0 string FiLeStArTfIlEsTaRt text/x-apple-binscii +0 string \x0aGL application/data +0 string \x76\xff application/data +0 string NuFile application/data +0 string N\xf5F\xe9l\xe5 application/data +0 belong 0x00051600 application/data +0 belong 0x00051607 application/data +257 string ustar\0 application/x-tar +257 string ustar\040\040\0 application/x-gtar +0 short 070707 application/x-cpio +0 short 0143561 application/x-bcpio +0 string 070707 application/x-cpio +0 string 070701 application/x-cpio +0 string 070702 application/x-cpio +0 string !\ndebian application/x-dpkg +0 long 0177555 application/x-ar +0 short 0177555 application/data +0 long 0177545 application/data +0 short 0177545 application/data +0 long 0100554 application/x-apl-workspace +0 string = application/x-ar +0 string !\n__________E application/x-ar +0 string -h- application/data +0 string ! application/x-ar +0 string \ application/x-ar +0 string = application/x-ar +0 belong 0x65ff0000 application/x-ar +0 belong 0x3c61723e application/x-ar +0 long 0x213c6172 application/x-ar +0 lelong 0177555 application/data +0 leshort 0177555 application/data +0 lelong 0177545 application/data +0 leshort 0177545 application/data +0 lelong 0x39bed application/data +0 lelong 0x39bee application/data +0 lelong&0x8080ffff 0x0000081a application/x-arc +0 lelong&0x8080ffff 0x0000091a application/x-arc +0 lelong&0x8080ffff 0x0000021a application/x-arc +0 lelong&0x8080ffff 0x0000031a application/x-arc +0 lelong&0x8080ffff 0x0000041a application/x-arc +0 lelong&0x8080ffff 0x0000061a application/x-arc +0 string \032archive application/data +0 leshort 0xea60 application/x-arj +0 string HPAK application/data +0 string \351,\001JAM\ application/data +2 string -lh0- application/x-lha +2 string -lh1- application/x-lha +2 string -lz4- application/x-lha +2 string -lz5- application/x-lha +2 string -lzs- application/x-lha +2 string -lh\40- application/x-lha +2 string -lhd- application/x-lha +2 string -lh2- application/x-lha +2 string -lh3- application/x-lha +2 string -lh4- application/x-lha +2 string -lh5- application/x-lha +0 string Rar! application/x-rar +0 string SQSH application/data +0 string UC2\x1a application/data +0 string PK\003\004 application/zip +20 lelong 0xfdc4a7dc application/x-zoo +10 string #\ This\ is\ a\ shell\ archive application/x-shar +0 string *STA application/data +0 string 2278 application/data +0 beshort 0560 application/x-executable-file +0 beshort 0561 application/x-executable-file +0 string \000\004\036\212\200 application/core +0 string .snd audio/basic +0 lelong 0x0064732E audio/basic +0 string MThd audio/midi +0 string CTMF audio/x-cmf +0 string SBI audio/x-sbi +0 string Creative\ Voice\ File audio/x-voc +0 belong 0x4e54524b audio/x-multitrack +0 string RIFF audio/x-wav +0 string EMOD audio/x-emod +0 belong 0x2e7261fd audio/x-pn-realaudio +0 string MTM audio/x-multitrack +0 string if audio/x-669-mod +0 string FAR audio/mod +0 string MAS_U audio/x-multimate-mod +0x2c string SCRM audio/x-st3-mod +0 string GF1PATCH110\0ID#000002\0 audio/x-gus-patch +0 string GF1PATCH100\0ID#000002\0 audio/x-gus-patch +0 string JN audio/x-669-mod +0 string UN05 audio/x-mikmod-uni +0 string Extended\ Module: audio/x-ft2-mod +21 string !SCREAM! audio/x-st2-mod +1080 string M.K. audio/x-protracker-mod +1080 string M!K! audio/x-protracker-mod +1080 string FLT4 audio/x-startracker-mod +1080 string 4CHN audio/x-fasttracker-mod +1080 string 6CHN audio/x-fasttracker-mod +1080 string 8CHN audio/x-fasttracker-mod +1080 string CD81 audio/x-oktalyzer-mod +1080 string OKTA audio/x-oktalyzer-mod +1080 string 16CN audio/x-taketracker-mod +1080 string 32CN audio/x-taketracker-mod +0 string TOC audio/x-toc +0 short 03401 application/x-executable-file +0 long 0406 application/x-executable-file +0 short 0406 application/x-executable-file +0 short 03001 application/x-executable-file +0 lelong 000000314 application/x-executable-file +0 string // text/cpp +0 string \\1cw\ application/data +0 string \\1cw application/data +0 belong&0xffffff00 0x85011400 application/data +0 belong&0xffffff00 0x8501cb00 application/data +0 short 0575 application/x-executable-file +0 short 0577 application/x-executable-file +4 string pipe application/data +4 string prof application/data +0 string :\ shell application/data +0 string #!/bin/sh application/x-sh +0 string #!\ /bin/sh application/x-sh +0 string #!\ /bin/sh application/x-sh +0 string #!/bin/csh application/x-csh +0 string #!\ /bin/csh application/x-csh +0 string #!\ /bin/csh application/x-csh +0 string #!/bin/ksh application/x-ksh +0 string #!\ /bin/ksh application/x-ksh +0 string #!\ /bin/ksh application/x-ksh +0 string #!/bin/tcsh application/x-csh +0 string #!\ /bin/tcsh application/x-csh +0 string #!\ /bin/tcsh application/x-csh +0 string #!/usr/local/tcsh application/x-csh +0 string #!\ /usr/local/tcsh application/x-csh +0 string #!/usr/local/bin/tcsh application/x-csh +0 string #!\ /usr/local/bin/tcsh application/x-csh +0 string #!\ /usr/local/bin/tcsh application/x-csh +0 string #!/usr/local/bin/zsh application/x-zsh +0 string #!\ /usr/local/bin/zsh application/x-zsh +0 string #!\ /usr/local/bin/zsh application/x-zsh +0 string #!/usr/local/bin/ash application/x-sh +0 string #!\ /usr/local/bin/ash application/x-zsh +0 string #!\ /usr/local/bin/ash application/x-zsh +0 string #!/usr/local/bin/ae text/script +0 string #!\ /usr/local/bin/ae text/script +0 string #!\ /usr/local/bin/ae text/script +0 string #!/bin/nawk application/x-awk +0 string #!\ /bin/nawk application/x-awk +0 string #!\ /bin/nawk application/x-awk +0 string #!/usr/bin/nawk application/x-awk +0 string #!\ /usr/bin/nawk application/x-awk +0 string #!\ /usr/bin/nawk application/x-awk +0 string #!/usr/local/bin/nawk application/x-awk +0 string #!\ /usr/local/bin/nawk application/x-awk +0 string #!\ /usr/local/bin/nawk application/x-awk +0 string #!/bin/gawk application/x-awk +0 string #!\ /bin/gawk application/x-awk +0 string #!\ /bin/gawk application/x-awk +0 string #!/usr/bin/gawk application/x-awk +0 string #!\ /usr/bin/gawk application/x-awk +0 string #!\ /usr/bin/gawk application/x-awk +0 string #!/usr/local/bin/gawk application/x-awk +0 string #!\ /usr/local/bin/gawk application/x-awk +0 string #!\ /usr/local/bin/gawk application/x-awk +0 string #!/bin/awk application/x-awk +0 string #!\ /bin/awk application/x-awk +0 string #!\ /bin/awk application/x-awk +0 string #!/usr/bin/awk application/x-awk +0 string #!\ /usr/bin/awk application/x-awk +0 string #!\ /usr/bin/awk application/x-awk +0 string BEGIN application/x-awk +0 string #!/bin/perl application/x-perl +0 string #!\ /bin/perl application/x-perl +0 string #!\ /bin/perl application/x-perl +0 string eval\ "exec\ /bin/perl application/x-perl +0 string #!/usr/bin/perl application/x-perl +0 string #!\ /usr/bin/perl application/x-perl +0 string #!\ /usr/bin/perl application/x-perl +0 string eval\ "exec\ /usr/bin/perl application/x-perl +0 string #!/usr/local/bin/perl application/x-perl +0 string #!\ /usr/local/bin/perl application/x-perl +0 string #!\ /usr/local/bin/perl application/x-perl +0 string eval\ "exec\ /usr/local/bin/perl application/x-perl +0 string #!/bin/rc text/script +0 string #!\ /bin/rc text/script +0 string #!\ /bin/rc text/script +0 string #!/bin/bash application/x-sh +0 string #!\ /bin/bash application/x-sh +0 string #!\ /bin/bash application/x-sh +0 string #!/usr/local/bin/bash application/x-sh +0 string #!\ /usr/local/bin/bash application/x-sh +0 string #!\ /usr/local/bin/bash application/x-sh +0 string #!\ / text/script +0 string #!\ / text/script +0 string #!/ text/script +0 string #!\ text/script +0 string \037\235 application/compress +0 string \037\213 application/x-gzip +0 string \037\036 application/data +0 short 017437 application/data +0 short 0x1fff application/data +0 string \377\037 application/data +0 short 0145405 application/data +0 string BZh application/x-bzip2 +0 leshort 0xFF76 application/data +0 leshort 0xFE76 application/data +0 leshort 0xFD76 application/x-lzh +0 string \037\237 application/data +0 string \037\236 application/data +0 string \037\240 application/data +0 string BZ application/x-bzip +0 string \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a application/data +0 belong 0507 application/x-object-file +0 belong 0513 application/x-executable-file +0 belong 0515 application/x-executable-file +0 belong 0517 application/x-executable-file +0 belong 0x011257 application/core +24 belong 60011 application/data +24 belong 60012 application/data +24 belong 60013 application/data +24 belong 60014 application/data +0 belong 0601 application/x-object-file +0 belong application/core +0 belong 0607 application/data +0 belong 0x13579ace application/x-gdbm +0 lelong 0x13579ace application/x-gdbm +0 string GDBM application/x-gdbm +0 belong 0x061561 application/x-db +0 belong 0x053162 application/x-db +0 string =\n\n________64E application/data +0 leshort 0x183 application/x-executable-file +0 leshort 0x188 application/x-executable-file +0 leshort 0x18f application/x-object-file +0 string \377\377\177 application/data +0 string \377\377\174 application/data +0 string \377\377\176 application/data +0 string \033c\033 application/data +0 long 04553207 image/x11 +0 string !!\n application/x-prof +0 short 0x0501 application/x-locale +24 belong 60012 application/x-dump +24 belong 60011 application/x-dump +24 lelong 60012 application/x-dump +24 lelong 60011 application/x-dump +0 string \177ELF application/x-executable-file +0 short 0x154 application/data +0 short 0x155 application/x-executable-file +0x438 leshort 0xEF53 application/x-linux-ext2fs +0 string \366\366\366\366 application/x-pc-floppy +0774 beshort 0xdabe application/data +0x1FE leshort 0xAA55 application/data +0x410 leshort 0x137f application/x-filesystem +0x410 leshort 0x138f application/x-filesystem +0x410 leshort 0x2468 application/x-filesystem +0x410 leshort 0x2478 application/x-filesystem +0 string -rom1fs-\0 application/x-filesystem +0 lelong 0x1b031336 application/x-bootable +0x18b string OS/2 application/x-bootable +0 string FONT font/x-vfont +0 short 0436 font/x-vfont +0 short 017001 font/x-vfont +0 string %!PS-AdobeFont-1.0 font/type1 +6 string %!PS-AdobeFont-1.0 font/type1 +0 belong 00000004 font/x-snf +0 lelong 00000004 font/x-snf +0 string STARTFONT\040 font/x-bdf +0 string \001fcp font/x-pcf +0 string D1.0\015 font/x-speedo +0 string flf font/x-figlet +0 string flc application/x-font +0 belong 0x14025919 font/x-libgrx +0 belong 0xff464f4e font/x-dos +7 belong 0x00454741 font/x-dos +7 belong 0x00564944 font/x-dos +4098 string DOSFONT font/x-dos +0 string \) as these +# don't appear to work. +# did not include commented out entries, or ones that already exist +#------------------------------------------------------------------------------ +# Bytes 0-3 of AIFF, AIFF-C, & 8SVX audio files are "FORM" +# AIFF audio data +8 string AIFF audio/x-aiff +# AIFF-C audio data +8 string AIFC audio/x-aiff +# IFF/8SVX audio data +8 string 8SVX audio/x-aiff +# C64 SID Music files, from Linus Walleij +0 string PSID audio/prs.sid + +#------------------------------------------------------------------------------ +# XPM icons (Greg Roelofs, newt@uchicago.edu) +0 string /*\ XPM image/x-xbm 7bit +# C or REXX program text +0 string /* text/plain +# C++ program text + + +#------------------------------------------------------------------------------ +# html: file(1) magic for HTML (HyperText Markup Language) docs +# +# from Daniel Quinlan +# and Anna Shergold +# +0 string \ @@ -280,7 +317,7 @@ Various minor improvements. - 4.3.11 + 4.3.10 6.0.0 6.0.0 @@ -294,6 +331,31 @@ Various minor improvements. + + + 1.2.4 + 1.2.4 + + + stable + stable + + PHP + Fixed PECL bug #10194 (crash in Oracle client when memory limit reached in the callback) +Fixed bug #42173 (oci_field_type fixes for INTERVAL and TIMESTAMP types) +Fixed bug #42134 (oci_error() returns false after oci_new_collection() fails) +Fixed bug #41917 (oci_field_precision and oci_field_scale datatypes fixed) +Fixed bug #41711 (Null temporary lobs not supported) +Fixed bug #41594 (Statement cache is flushed too frequently) +Fixed bug #40415 (oci_fetch_all and nested cursors, allocate descriptors dynamically) +Fixed segfault on rebinding and re-executing a statement with LOBs. +Fixed compile failure in ZTS mode when collections support is missing. +Allowed statement cache size to be set for non-persistent connections. +Improved oci_password_change() to close persistent connections on shutdown (to update hashed connection details) +Changed oci_pconnect() to behave like oci_connect() when SYSDBA and SYSOPER privileges are used. +Various minor improvements. + + 1.2.3 @@ -312,6 +374,8 @@ Fixed bug #39732 (oci_bind_array_by_name doesn't work on Solaris 64bit). Fixed PECL bug #8816 (issue in php_oci_statement_fetch with more than one piecewise column). Various minor improvements. + + 1.2.2 1.2.2 diff --git a/ext/oci8/php_oci8.h b/ext/oci8/php_oci8.h index f4f332af7..25a744705 100644 --- a/ext/oci8/php_oci8.h +++ b/ext/oci8/php_oci8.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -25,7 +25,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_oci8.h,v 1.36.2.2.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_oci8.h,v 1.36.2.2.2.3 2008/12/31 11:17:40 sebastian Exp $ */ #if HAVE_OCI8 # ifndef PHP_OCI8_H diff --git a/ext/oci8/php_oci8_int.h b/ext/oci8/php_oci8_int.h index 6e9ed5e93..a0a762989 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -25,7 +25,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_oci8_int.h,v 1.11.2.6.2.24 2008/02/25 23:52:10 sixd Exp $ */ +/* $Id: php_oci8_int.h,v 1.11.2.6.2.25 2008/12/31 11:17:40 sebastian Exp $ */ #if HAVE_OCI8 # ifndef PHP_OCI8_INT_H diff --git a/ext/oci8/tests/bug37220.phpt b/ext/oci8/tests/bug37220.phpt new file mode 100644 index 000000000..6743165b7 --- /dev/null +++ b/ext/oci8/tests/bug37220.phpt @@ -0,0 +1,68 @@ +--TEST-- +Bug #37220 (LOB Type mismatch when using windows & oci8.dll) +--SKIPIF-- + +--FILE-- +'))" +); + +foreach ($stmtarray as $stmt) { + $s = oci_parse($c, $stmt); + @oci_execute($s); +} + +// Now let's update the row where myId = 1234 and change the tag +// 'THETAG' to 'MYTAG' (mycolumn is an XMLTYPE datatype and +// bug37220_tab a normal Oracle table) + +$query = "UPDATE bug37220_tab + SET bug37220_tab.mycolumn = updateXML(bug37220_tab.mycolumn,'/THETAG',xmltype.createXML(:data)) + WHERE existsNode(bug37220_tab.mycolumn,'/THETAG[@myID=\"1234\"]') = 1"; +$stmt = oci_parse ($c, $query); +$clob = oci_new_descriptor($c, OCI_D_LOB); +oci_bind_by_name($stmt, ':data', $clob, -1, OCI_B_CLOB); +$clob->writetemporary("", OCI_TEMP_CLOB); +$success = oci_execute($stmt, OCI_COMMIT_ON_SUCCESS); +oci_free_statement($stmt); +$clob->close(); + +// Query back the change + +$query = "select * from bug37220_tab"; +$stmt = oci_parse ($c, $query); + +oci_execute($stmt); + +while ($row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS)) { + foreach ($row as $item) { + echo $item."\n"; + } + echo "\n"; +} + +// Cleanup + +$stmtarray = array( + "drop table bug37220_tab" +); + +foreach ($stmtarray as $stmt) { + $s = oci_parse($c, $stmt); + oci_execute($s); +} + +echo "Done\n"; + +?> +--EXPECT-- + + +Done diff --git a/ext/oci8/tests/bug43497.phpt b/ext/oci8/tests/bug43497.phpt index 908fe5897..0fc6a97b3 100644 --- a/ext/oci8/tests/bug43497.phpt +++ b/ext/oci8/tests/bug43497.phpt @@ -1,7 +1,16 @@ --TEST-- Bug #43497 (OCI8 XML/getClobVal aka temporary LOBs leak UGA memory) --SKIPIF-- - + 9/', $phpinfo); +if ($ov === 1) { + die ("skip expected output only valid for Oracle clients from 10g onwards"); +} +?> --FILE-- 9.2/', $phpinfo); +if ($ov !== 1) { + die ("skip expected output only valid for Oracle 9.2 clients"); +} +?> +--FILE-- +free(); // cleanup properly + ++$cntchk; + } + } + echo "Loop count check = $cntchk\n"; +} + +// Read all XML data using explicit LOB locator but without freeing the temp lobs +function readxmltab_ex_nofree($c) +{ + $stmt = oci_parse($c, "select extract(xml, '/').getclobval() from bug43497_tab"); + + $cntchk = 0; + if (oci_execute($stmt)) { + while ($result = oci_fetch_array($stmt, OCI_NUM)) { + ++$cntchk; + } + } + echo "Loop count check = $cntchk\n"; +} + +// Read all XML data using implicit LOB locator +function readxmltab_im($c) +{ + $stmt = oci_parse($c, "select extract(xml, '/').getclobval() from bug43497_tab"); + + $cntchk = 0; + if (oci_execute($stmt)) { + while ($result = oci_fetch_array($stmt, OCI_NUM+OCI_RETURN_LOBS)) { + ++$cntchk; + } + } + echo "Loop count check = $cntchk\n"; +} + +function createxmltab($c) // create table w/ field of XML type +{ + @dropxmltab($c); + $stmt = oci_parse($c, "create table bug43497_tab (id number primary key, xml xmltype)"); + oci_execute($stmt); +} + +function dropxmltab($c) // delete table +{ + $stmt = oci_parse($c, "drop table bug43497_tab"); + oci_execute($stmt); +} + + +function fillxmltab($c) +{ + for ($id = 1; $id <= 100; $id++) { + + // create an XML element string with random data + $s = ""; + for ($j = 0; $j < 128; $j++) { + $s .= rand(); + } + $s .= "\n"; + for ($j = 0; $j < 4; $j++) { + $s .= $s; + } + $data = "" . $s . ""; + + // insert XML data into database + + $stmt = oci_parse($c, "insert into bug43497_tab(id, xml) values (:id, sys.xmltype.createxml(:xml))"); + oci_bind_by_name($stmt, ":id", $id); + $clob = oci_new_descriptor($c, OCI_D_LOB); + oci_bind_by_name($stmt, ":xml", $clob, -1, OCI_B_CLOB); + $clob->writetemporary($data); + oci_execute($stmt); + + $clob->close(); + $clob->free(); + } +} + + +// Initialize + +createxmltab($c); +fillxmltab($c); + +// Run Test + +$sid = sessionid($c); + +echo "Explicit LOB use\n"; +for ($i = 1; $i <= 10; $i++) { + echo "\nRun = " . $i . "\n"; + echo "Temporary LOBs = " . templobs($c, $sid) . "\n"; + readxmltab_ex($c); +} + +echo "\nImplicit LOB use\n"; +for ($i = 1; $i <= 10; $i++) { + echo "\nRun = " . $i . "\n"; + echo "Temporary LOBs = " . templobs($c, $sid) . "\n"; + readxmltab_im($c); +} + +echo "\nExplicit LOB with no free (i.e. a temp lob leak)\n"; +for ($i = 1; $i <= 10; $i++) { + echo "\nRun = " . $i . "\n"; + echo "Temporary LOBs = " . templobs($c, $sid) . "\n"; + readxmltab_ex_nofree($c); +} + + + +// Cleanup + +dropxmltab($c); + +oci_close($c); + +echo "Done\n"; +?> +--EXPECT-- +Explicit LOB use + +Run = 1 +Temporary LOBs = 0 +Loop count check = 100 + +Run = 2 +Temporary LOBs = 100 +Loop count check = 100 + +Run = 3 +Temporary LOBs = 200 +Loop count check = 100 + +Run = 4 +Temporary LOBs = 300 +Loop count check = 100 + +Run = 5 +Temporary LOBs = 400 +Loop count check = 100 + +Run = 6 +Temporary LOBs = 500 +Loop count check = 100 + +Run = 7 +Temporary LOBs = 600 +Loop count check = 100 + +Run = 8 +Temporary LOBs = 700 +Loop count check = 100 + +Run = 9 +Temporary LOBs = 800 +Loop count check = 100 + +Run = 10 +Temporary LOBs = 900 +Loop count check = 100 + +Implicit LOB use + +Run = 1 +Temporary LOBs = 1000 +Loop count check = 100 + +Run = 2 +Temporary LOBs = 1100 +Loop count check = 100 + +Run = 3 +Temporary LOBs = 1200 +Loop count check = 100 + +Run = 4 +Temporary LOBs = 1300 +Loop count check = 100 + +Run = 5 +Temporary LOBs = 1400 +Loop count check = 100 + +Run = 6 +Temporary LOBs = 1500 +Loop count check = 100 + +Run = 7 +Temporary LOBs = 1600 +Loop count check = 100 + +Run = 8 +Temporary LOBs = 1700 +Loop count check = 100 + +Run = 9 +Temporary LOBs = 1800 +Loop count check = 100 + +Run = 10 +Temporary LOBs = 1900 +Loop count check = 100 + +Explicit LOB with no free (i.e. a temp lob leak) + +Run = 1 +Temporary LOBs = 2000 +Loop count check = 100 + +Run = 2 +Temporary LOBs = 2100 +Loop count check = 100 + +Run = 3 +Temporary LOBs = 2200 +Loop count check = 100 + +Run = 4 +Temporary LOBs = 2300 +Loop count check = 100 + +Run = 5 +Temporary LOBs = 2400 +Loop count check = 100 + +Run = 6 +Temporary LOBs = 2500 +Loop count check = 100 + +Run = 7 +Temporary LOBs = 2600 +Loop count check = 100 + +Run = 8 +Temporary LOBs = 2700 +Loop count check = 100 + +Run = 9 +Temporary LOBs = 2800 +Loop count check = 100 + +Run = 10 +Temporary LOBs = 2900 +Loop count check = 100 +Done \ No newline at end of file diff --git a/ext/oci8/tests/bug44113.phpt b/ext/oci8/tests/bug44113.phpt index 646f09b7c..d6c297863 100644 --- a/ext/oci8/tests/bug44113.phpt +++ b/ext/oci8/tests/bug44113.phpt @@ -5,7 +5,7 @@ Bug #44113 (New collection creation can fail with OCI-22303) --FILE-- +--FILE-- + +--EXPECTF-- +Test 1 - oci_connect +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(2) { + [0]=> + string(1) "1" + [1]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope2.phpt b/ext/oci8/tests/connect_scope2.phpt new file mode 100644 index 000000000..7017493f5 --- /dev/null +++ b/ext/oci8/tests/connect_scope2.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test oci_pconnect end-of-scope when statement returned +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Test 1 - oci_pconnect +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(2) { + [0]=> + string(1) "1" + [1]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try1.phpt b/ext/oci8/tests/connect_scope_try1.phpt new file mode 100644 index 000000000..a881ea6ea --- /dev/null +++ b/ext/oci8/tests/connect_scope_try1.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_connect try/catch end-of-scope with old_oci_close_semantics Off +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try1_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try1_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try1_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try2.phpt b/ext/oci8/tests/connect_scope_try2.phpt new file mode 100644 index 000000000..9e6b5ce2e --- /dev/null +++ b/ext/oci8/tests/connect_scope_try2.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_connect try/catch end-of-scope with old_oci_close_semantics On +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try2_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try2_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try2_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try3.phpt b/ext/oci8/tests/connect_scope_try3.phpt new file mode 100644 index 000000000..1cd44b021 --- /dev/null +++ b/ext/oci8/tests/connect_scope_try3.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_new_connect try/catch end-of-scope with old_oci_close_semantics Off +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try3_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try3_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try3_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try4.phpt b/ext/oci8/tests/connect_scope_try4.phpt new file mode 100644 index 000000000..9b4cd1f27 --- /dev/null +++ b/ext/oci8/tests/connect_scope_try4.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_new_connect try/catch end-of-scope with old_oci_close_semantics On +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try4_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try4_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try4_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try5.phpt b/ext/oci8/tests/connect_scope_try5.phpt new file mode 100644 index 000000000..121fb33dc --- /dev/null +++ b/ext/oci8/tests/connect_scope_try5.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_pconnect try/catch end-of-scope with old_oci_close_semantics Off +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try5_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try5_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try5_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 persistent connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/connect_scope_try6.phpt b/ext/oci8/tests/connect_scope_try6.phpt new file mode 100644 index 000000000..3347543ab --- /dev/null +++ b/ext/oci8/tests/connect_scope_try6.phpt @@ -0,0 +1,100 @@ +--TEST-- +Check oci_pconnect try/catch end-of-scope with old_oci_close_semantics On +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + throws exception + oci_execute($s, OCI_DEFAULT); // no commit +} +catch (Exception $e) +{ + echo "Caught Exception: ". $e->getMessage(), "\n"; + var_dump($c); + + // Verify data is not yet committed + $s1 = oci_parse($c1, "select * from scope_try6_tab"); + oci_execute($s1); + oci_fetch_all($s1, $r); + var_dump($r); + + // Now commit + oci_commit($c); +} + +// Verify data was committed in the Catch block + +$s1 = oci_parse($c1, "select * from scope_try6_tab"); +oci_execute($s1); +oci_fetch_all($s1, $r); +var_dump($r); + +// Cleanup + +$stmtarray = array( + "drop table scope_try6_tab" +); + +foreach ($stmtarray as $stmt) { + $s1 = oci_parse($c1, $stmt); + oci_execute($s1); +} + +echo "Done\n"; + +?> +--EXPECTF-- +Test 1 +Caught Exception: oci_execute(): ORA-00984: %s +resource(%d) of type (oci8 persistent connection) +array(1) { + ["C1"]=> + array(0) { + } +} +array(1) { + ["C1"]=> + array(1) { + [0]=> + string(1) "1" + } +} +Done diff --git a/ext/oci8/tests/drcp_characterset.phpt b/ext/oci8/tests/drcp_characterset.phpt new file mode 100644 index 000000000..657d4c5ba --- /dev/null +++ b/ext/oci8/tests/drcp_characterset.phpt @@ -0,0 +1,61 @@ +--TEST-- +DRCP: oci_pconnect() and oci_connect() with different character sets +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 persistent connection) +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 persistent connection) +First and third connections are different: OK +Second and fourth connections are different: OK +Done diff --git a/ext/oci8/tests/drcp_conn_close1.phpt b/ext/oci8/tests/drcp_conn_close1.phpt new file mode 100644 index 000000000..697b7e357 --- /dev/null +++ b/ext/oci8/tests/drcp_conn_close1.phpt @@ -0,0 +1,45 @@ +--TEST-- +DRCP: oci_connect() with oci_close() and oci8.old_oci_close_semantics ON +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +oci8.connection_class=test +--FILE-- + +--EXPECTF-- +This is with a OCI_CONNECT +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 connection) +Both connections share a resource : OK +Done diff --git a/ext/oci8/tests/drcp_conn_close2.phpt b/ext/oci8/tests/drcp_conn_close2.phpt new file mode 100644 index 000000000..0d3f8247f --- /dev/null +++ b/ext/oci8/tests/drcp_conn_close2.phpt @@ -0,0 +1,46 @@ +--TEST-- +DRCP: oci_connect() with oci_close() and oci8.old_oci_close_semantics OFF +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +oci8.connection_class=test +--FILE-- + +--EXPECTF-- +This is with a OCI_CONNECT +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 connection) +Both connections are different : OK +Done diff --git a/ext/oci8/tests/drcp_connect1.phpt b/ext/oci8/tests/drcp_connect1.phpt new file mode 100644 index 000000000..bf619a4ef --- /dev/null +++ b/ext/oci8/tests/drcp_connect1.phpt @@ -0,0 +1,86 @@ +--TEST-- +DRCP: oci_connect() +--SKIPIF-- + +--INI-- +oci8.connection_class=test +oci8.old_oci_close_semantics=0 +--FILE-- + +--EXPECTF-- +resource(%d) of type (oci8 connection) + This is with OCI_CONNECT..... + The value of the package variable is 0 + Package variable value set to 1000 + Connection conn1 closed.... +resource(%d) of type (oci8 connection) + Select with connection 2 + The value of the package variable is 0 + Package variable value set to 100 +resource(%d) of type (oci8 connection) + Select with connection 3 + The value of the package variable is 100 + + This is with oci_pconnect()..... +resource(%d) of type (oci8 persistent connection) + Package variable value set to 1000 + Connection pconn1 closed.... +resource(%d) of type (oci8 persistent connection) + Select with persistent connection 2 + The value of the package variable is 1000 +Done + diff --git a/ext/oci8/tests/drcp_functions.inc b/ext/oci8/tests/drcp_functions.inc new file mode 100644 index 000000000..26adb21f3 --- /dev/null +++ b/ext/oci8/tests/drcp_functions.inc @@ -0,0 +1,93 @@ + diff --git a/ext/oci8/tests/drcp_newconnect.phpt b/ext/oci8/tests/drcp_newconnect.phpt new file mode 100644 index 000000000..79718f4ee --- /dev/null +++ b/ext/oci8/tests/drcp_newconnect.phpt @@ -0,0 +1,43 @@ +--TEST-- +DRCP: oci_new_connect() +--SKIPIF-- + +--INI-- +oci8.connection_class=test +oci8.old_oci_close_semantics=0 +--FILE-- + +--EXPECTF-- +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 connection) +First and second connections are different OK +Done + diff --git a/ext/oci8/tests/drcp_pconn_close1.phpt b/ext/oci8/tests/drcp_pconn_close1.phpt new file mode 100644 index 000000000..a9b912b26 --- /dev/null +++ b/ext/oci8/tests/drcp_pconn_close1.phpt @@ -0,0 +1,44 @@ +--TEST-- +DRCP: oci_pconnect() with oci_close() and oci8.old_oci_close_semantics ON +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +oci8.connection_class=test +--FILE-- + +--EXPECTF-- +This is with a OCI_PCONNECT +resource(%d) of type (oci8 persistent connection) +resource(%d) of type (oci8 persistent connection) +Both connections share a resource : OK +Done diff --git a/ext/oci8/tests/drcp_pconn_close2.phpt b/ext/oci8/tests/drcp_pconn_close2.phpt new file mode 100644 index 000000000..5fd2c2355 --- /dev/null +++ b/ext/oci8/tests/drcp_pconn_close2.phpt @@ -0,0 +1,46 @@ +--TEST-- +DRCP: oci_pconnect() with oci_close() and oci8.old_oci_close_semantics OFF +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +oci8.connection_class=test +--FILE-- + +--EXPECTF-- +This is with a OCI_PCONNECT +resource(%d) of type (oci8 persistent connection) +resource(%d) of type (oci8 persistent connection) +Both connections are different : OK +Done diff --git a/ext/oci8/tests/drcp_privileged.phpt b/ext/oci8/tests/drcp_privileged.phpt new file mode 100644 index 000000000..9af20625e --- /dev/null +++ b/ext/oci8/tests/drcp_privileged.phpt @@ -0,0 +1,47 @@ +--TEST-- +DRCP: privileged connect +--SKIPIF-- + +--INI-- +oci8.privileged_connect=1 +--FILE-- + +--EXPECTF-- +Warning: oci_connect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) + +Warning: oci_connect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) + +Warning: oci_new_connect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) + +Warning: oci_new_connect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) + +Warning: oci_pconnect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) + +Warning: oci_pconnect(): ORA-01031: insufficient privileges in %s on line %d +bool(false) +Done + diff --git a/ext/oci8/tests/drcp_scope1.phpt b/ext/oci8/tests/drcp_scope1.phpt new file mode 100644 index 000000000..57f1abe32 --- /dev/null +++ b/ext/oci8/tests/drcp_scope1.phpt @@ -0,0 +1,92 @@ +--TEST-- +DRCP: oci_new_connect() and oci_connect() with scope end when oci8.old_oci_close_semantics ON +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + +--EXPECTF-- +This is with a OCI_NEW_CONNECT +resource(%d) of type (oci8 connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 connection) +The value of DEPT for id 105 is HR + + +This is with a OCI_CONNECT +resource(%d) of type (oci8 connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 connection) +The value of DEPT for id 105 is HR +Done diff --git a/ext/oci8/tests/drcp_scope2.phpt b/ext/oci8/tests/drcp_scope2.phpt new file mode 100644 index 000000000..b72e00dbb --- /dev/null +++ b/ext/oci8/tests/drcp_scope2.phpt @@ -0,0 +1,91 @@ +--TEST-- +DRCP: oci_new_connect() and oci_connect with scope end when oci8.old_oci_close_semantics OFF +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +--FILE-- + +--EXPECTF-- +This is with a OCI_NEW_CONNECT +resource(%d) of type (oci8 connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 connection) +The value of DEPT for id 105 is HR + + +This is with a OCI_CONNECT +resource(%d) of type (oci8 connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 connection) +The value of DEPT for id 105 is HR +Done diff --git a/ext/oci8/tests/drcp_scope3.phpt b/ext/oci8/tests/drcp_scope3.phpt new file mode 100644 index 000000000..b448a518a --- /dev/null +++ b/ext/oci8/tests/drcp_scope3.phpt @@ -0,0 +1,61 @@ +--TEST-- +DRCP: oci_pconnect() with scope end when oci8.old_oci_close_semantics ON +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + +--EXPECTF-- +This is with a OCI_PCONNECT +resource(%d) of type (oci8 persistent connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 persistent connection) +The value of DEPT for id 105 is NEWDEPT + +Warning: oci_execute(): ORA-00054: %s +Done \ No newline at end of file diff --git a/ext/oci8/tests/drcp_scope4.phpt b/ext/oci8/tests/drcp_scope4.phpt new file mode 100644 index 000000000..182704b67 --- /dev/null +++ b/ext/oci8/tests/drcp_scope4.phpt @@ -0,0 +1,62 @@ +--TEST-- +DRCP: oci_pconnect() with scope end when oci8.old_oci_close_semantics OFF +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=0 +--FILE-- + +--EXPECTF-- +This is with a OCI_PCONNECT +resource(%d) of type (oci8 persistent connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 persistent connection) +The value of DEPT for id 105 is NEWDEPT + +Warning: oci_execute(): ORA-00054: %s +Done diff --git a/ext/oci8/tests/drcp_scope5.phpt b/ext/oci8/tests/drcp_scope5.phpt new file mode 100644 index 000000000..832e6aa8c --- /dev/null +++ b/ext/oci8/tests/drcp_scope5.phpt @@ -0,0 +1,63 @@ +--TEST-- +DRCP: oci_pconnect() with scope end when oci8.old_oci_close_semantics ON +--SKIPIF-- + +--INI-- +oci8.old_oci_close_semantics=1 +--FILE-- + +--EXPECTF-- +This is with a OCI_PCONNECT +resource(%d) of type (oci8 persistent connection) +Update done-- DEPT value has been set to NEWDEPT +resource(%d) of type (oci8 persistent connection) +The value of DEPT for id 105 is NEWDEPT +Done \ No newline at end of file diff --git a/ext/oci8/tests/lob_042.phpt b/ext/oci8/tests/lob_042.phpt index d79b4846e..25309d6fc 100644 --- a/ext/oci8/tests/lob_042.phpt +++ b/ext/oci8/tests/lob_042.phpt @@ -5,8 +5,6 @@ Check various LOB error messages --FILE-- +--FILE-- + enabled'); +var_dump($r); + +echo "Done\n"; + +?> +--EXPECTF-- +int(%d) +Done diff --git a/ext/oci8/tests/password.phpt b/ext/oci8/tests/password.phpt index a31843cfd..2741f9d3b 100644 --- a/ext/oci8/tests/password.phpt +++ b/ext/oci8/tests/password.phpt @@ -1,24 +1,74 @@ --TEST-- -oci_password_change() +oci_password_change() for non-persistent connections --SKIPIF-- - + --FILE-- --FILE-- @@ -27,34 +28,19 @@ foreach ($stmts as $sql) { // Connect (persistent) and change the password $c1 = oci_pconnect("testuser", "testuserpwd", $dbase); var_dump($c1); - -ob_start(); -var_dump($c1); -$r1 = ob_get_clean(); -preg_match("/resource\(([0-9])\) of.*/", $r1, $matches); -$rn1 = $matches[1]; /* resource number */ +$rn1 = (int)$c1; oci_password_change($c1, "testuser", "testuserpwd", "testuserpwd2"); // Second connect should return a new resource because the hash string will be different from $c1 $c2 = oci_pconnect("testuser", "testuserpwd2", $dbase); var_dump($c2); - -ob_start(); -var_dump($c2); -$r2 = ob_get_clean(); -preg_match("/resource\(([0-9])\) of.*/", $r2, $matches); -$rn2 = $matches[1]; /* resource number */ +$rn2 = (int)$c2; // Despite using the old password this connect should succeed and return the original resource $c3 = oci_pconnect("testuser", "testuserpwd", $dbase); var_dump($c3); - -ob_start(); -var_dump($c3); -$r3 = ob_get_clean(); -preg_match("/resource\(([0-9])\) of.*/", $r3, $matches); -$rn3 = $matches[1]; /* resource number */ +$rn3 = (int)$c3; // Connections should differ if ($rn1 == $rn2) { @@ -76,10 +62,12 @@ else { } // Clean up -// Can't drop a user that is connected and can't close a persistent -// connection. So this test will leave the dummy user around, but the -// schema will not be usable.. -$s = oci_parse($c0, "revoke connect, create session from testuser"); +oci_close($c1); +oci_close($c2); +oci_close($c3); + +// Clean up +$s = oci_parse($c0, "drop user cascade testuser"); @oci_execute($s); echo "Done\n"; diff --git a/ext/oci8/tests/password_new.phpt b/ext/oci8/tests/password_new.phpt index a31843cfd..49c21dd34 100644 --- a/ext/oci8/tests/password_new.phpt +++ b/ext/oci8/tests/password_new.phpt @@ -1,7 +1,25 @@ --TEST-- oci_password_change() --SKIPIF-- - + 10/', $phpinfo); + if ($iv === 1) { + die ("skip test known to fail using Oracle 10gR2 client libs connecting to Oracle 11.1 (6277160)"); + } +} +?> --FILE-- + 10/', $phpinfo); + if ($iv === 1) { + die ("skip test known to fail using Oracle 10gR2 client libs connecting to Oracle 11.1 (6277160)"); + } +} +?> --FILE-- --EXPECTF-- -bool(true) resource(%d) of type (oci8 connection) -bool(true) +resource(%d) of type (oci8 connection) +resource(%d) of type (oci8 connection) Done diff --git a/ext/oci8/tests/pecl_bug10194_blob.phpt b/ext/oci8/tests/pecl_bug10194_blob.phpt index 1a44e4494..4c6aa4f1c 100644 --- a/ext/oci8/tests/pecl_bug10194_blob.phpt +++ b/ext/oci8/tests/pecl_bug10194_blob.phpt @@ -1,19 +1,22 @@ --TEST-- PECL Bug #10194 (segfault in Instant Client when memory_limit is reached inside the callback) --SKIPIF-- - + --INI-- -memory_limit=10M +memory_limit=3M --FILE-- load())); /* here it should fail */ @@ -44,4 +49,6 @@ require dirname(__FILE__).'/drop_table.inc'; echo "Done\n"; ?> --EXPECTF-- +Before load() + Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d diff --git a/ext/oci8/tests/pecl_bug10194_blob_64.phpt b/ext/oci8/tests/pecl_bug10194_blob_64.phpt new file mode 100644 index 000000000..433d586a4 --- /dev/null +++ b/ext/oci8/tests/pecl_bug10194_blob_64.phpt @@ -0,0 +1,54 @@ +--TEST-- +PECL Bug #10194 (segfault in Instant Client when memory_limit is reached inside the callback) +--SKIPIF-- + +--INI-- +memory_limit=6M +--FILE-- +write($string); +} + +oci_commit($c); + +$ora_sql = "SELECT blob FROM ".$schema.$table_name; +$statement = oci_parse($c,$ora_sql); +oci_execute($statement); + +echo "Before load()\n"; + +$row = oci_fetch_assoc($statement); +var_dump(strlen($row['BLOB']->load())); /* here it should fail */ + +require dirname(__FILE__).'/drop_table.inc'; + +echo "Done\n"; +?> +--EXPECTF-- +Before load() + +Fatal error: Allowed memory size of %d bytes exhausted%s(tried to allocate %d bytes) in %s on line %d diff --git a/ext/oci8/tests/testping.phpt b/ext/oci8/tests/testping.phpt new file mode 100644 index 000000000..a0d65a30c --- /dev/null +++ b/ext/oci8/tests/testping.phpt @@ -0,0 +1,25 @@ +--TEST-- +Exercise OCIPing functionality on reconnect (code coverage test) +--SKIPIF-- + +--INI-- +oci8.ping_interval=0 +--FILE-- + +--EXPECTF-- +Done diff --git a/ext/odbc/birdstep.c b/ext/odbc/birdstep.c index a7ab2753c..c359fab3b 100644 --- a/ext/odbc/birdstep.c +++ b/ext/odbc/birdstep.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: birdstep.c,v 1.13.2.2.2.3 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: birdstep.c,v 1.13.2.2.2.4 2008/12/31 11:17:40 sebastian Exp $ */ /* * TODO: diff --git a/ext/odbc/php_birdstep.h b/ext/odbc/php_birdstep.h index 5fbb72ff2..69fc46d39 100644 --- a/ext/odbc/php_birdstep.h +++ b/ext/odbc/php_birdstep.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_birdstep.h,v 1.5.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_birdstep.h,v 1.5.2.1.2.3 2008/12/31 11:17:40 sebastian Exp $ */ #ifndef PHP_BIRDSTEP_H #define PHP_BIRDSTEP_H diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 47fcd4514..4724439d3 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_odbc.c,v 1.189.2.4.2.8 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_odbc.c,v 1.189.2.4.2.11 2008/12/31 11:17:40 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -64,7 +64,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent); static int le_result, le_conn, le_pconn; -#define SAFE_SQL_NTS(n) ((SWORD) ((n)?(SQL_NTS):0)) +#define SAFE_SQL_NTS(n) ((SQLSMALLINT) ((n)?(SQL_NTS):0)) /* {{{ odbc_functions[] */ @@ -180,7 +180,7 @@ static void _free_odbc_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) if (res->stmt) { #if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_SOLID_35) SQLTransact(res->conn_ptr->henv, res->conn_ptr->hdbc, - (UWORD)SQL_COMMIT); + (SQLUSMALLINT) SQL_COMMIT); #endif rc = SQLFreeStmt(res->stmt,SQL_DROP); /* We don't want the connection to be closed after the last statment has been closed @@ -380,6 +380,50 @@ static PHP_INI_DISP(display_lrl) } /* }}} */ + +/* {{{ PHP_INI_DISP(display_cursortype) + */ +static PHP_INI_DISP(display_cursortype) +{ + char *value; + TSRMLS_FETCH(); + + if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { + value = ini_entry->orig_value; + } else if (ini_entry->value) { + value = ini_entry->value; + } else { + value = NULL; + } + + if (value) { + switch (atoi (value)) + { + case SQL_CURSOR_FORWARD_ONLY: + PUTS ("Forward Only cursor"); + break; + + case SQL_CURSOR_STATIC: + PUTS ("Static cursor"); + break; + + case SQL_CURSOR_KEYSET_DRIVEN: + PUTS ("Keyset driven cursor"); + break; + + case SQL_CURSOR_DYNAMIC: + PUTS ("Dynamic cursor"); + break; + + default: + php_printf("Unknown cursor model %s", value); + break; + } + } +} + +/* }}} */ + /* {{{ PHP_INI_BEGIN */ PHP_INI_BEGIN() @@ -401,6 +445,8 @@ PHP_INI_BEGIN() defaultbinmode, zend_odbc_globals, odbc_globals, display_binmode) STD_PHP_INI_BOOLEAN("odbc.check_persistent", "1", PHP_INI_SYSTEM, OnUpdateLong, check_persistent, zend_odbc_globals, odbc_globals) + STD_PHP_INI_ENTRY_EX("odbc.default_cursortype", "3", PHP_INI_ALL, OnUpdateLong, + default_cursortype, zend_odbc_globals, odbc_globals, display_cursortype) PHP_INI_END() /* }}} */ @@ -565,9 +611,9 @@ PHP_MINFO_FUNCTION(odbc) void odbc_sql_error(ODBC_SQL_ERROR_PARAMS) { char state[6]; - SDWORD error; /* Not used */ + SQLINTEGER error; /* Not used */ char errormsg[SQL_MAX_MESSAGE_LENGTH]; - SWORD errormsgsize; /* Not used */ + SQLSMALLINT errormsgsize; /* Not used */ RETCODE rc; ODBC_SQL_ENV_T henv; ODBC_SQL_CONN_T conn; @@ -641,8 +687,8 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) { RETCODE rc; int i; - SWORD colnamelen; /* Not used */ - SDWORD displaysize; + SQLSMALLINT colnamelen; /* Not used */ + SQLLEN displaysize; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); @@ -650,9 +696,9 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) result->binmode = ODBCG(defaultbinmode); for(i = 0; i < result->numcols; i++) { - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_NAME, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_NAME, result->values[i].name, sizeof(result->values[i].name), &colnamelen, 0); - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_TYPE, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_TYPE, NULL, 0, NULL, &result->values[i].coltype); /* Don't bind LONG / BINARY columns, so that fetch behaviour can @@ -670,17 +716,17 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) #ifdef HAVE_ADABAS case SQL_TIMESTAMP: result->values[i].value = (char *)emalloc(27); - SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value, + SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, 27, &result->values[i].vallen); break; #endif /* HAVE_ADABAS */ default: - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_DISPLAY_SIZE, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_DISPLAY_SIZE, NULL, 0, NULL, &displaysize); displaysize = displaysize <= result->longreadlen ? displaysize : result->longreadlen; result->values[i].value = (char *)emalloc(displaysize + 1); - rc = SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value, + rc = SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, displaysize + 1, &result->values[i].vallen); break; } @@ -702,7 +748,7 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); - rc = SQLTransact(conn->henv, conn->hdbc, (UWORD)((type)?SQL_COMMIT:SQL_ROLLBACK)); + rc = SQLTransact(conn->henv, conn->hdbc, (SQLUSMALLINT)((type)?SQL_COMMIT:SQL_ROLLBACK)); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { odbc_sql_error(conn, SQL_NULL_HSTMT, "SQLTransact"); RETURN_FALSE; @@ -727,7 +773,7 @@ static int _close_pconn_with_id(zend_rsrc_list_entry *le, int *id TSRMLS_DC) void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) { odbc_result *result; -#if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_OPENLINK) +#if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) /* this seems to be necessary for Solid2.3 ( tested by * tammy@synchronis.com) and Solid 3.0 (tested by eric@terra.telemediair.nl) * Solid does not seem to declare a SQLINTEGER, but it does declare a @@ -736,7 +782,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) */ SDWORD len; #else - SQLINTEGER len; + SQLLEN len; #endif zval **pv_res, **pv_num; @@ -763,7 +809,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) RETURN_FALSE; } - SQLColAttributes(result->stmt, (UWORD)Z_LVAL_PP(pv_num), + SQLColAttributes(result->stmt, (SQLUSMALLINT)Z_LVAL_PP(pv_num), (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len); @@ -841,7 +887,7 @@ PHP_FUNCTION(odbc_prepare) odbc_connection *conn; RETCODE rc; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD scrollopts; + SQLUINTEGER scrollopts; #endif if (zend_get_parameters_ex(2, &pv_conn, &pv_query) == FAILURE) { @@ -879,8 +925,8 @@ PHP_FUNCTION(odbc_prepare) /* Try to set CURSOR_TYPE to dynamic. Driver will replace this with other type if not possible. */ - if (SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, SQL_CURSOR_DYNAMIC) - == SQL_ERROR) { + int cursortype = ODBCG(default_cursortype); + if (SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, cursortype) == SQL_ERROR) { odbc_sql_error(conn, result->stmt, " SQLSetStmtOption"); SQLFreeStmt(result->stmt, SQL_DROP); efree(result); @@ -932,15 +978,15 @@ PHP_FUNCTION(odbc_execute) { zval **pv_res, **pv_param_arr, **tmp; typedef struct params_t { - SDWORD vallen; + SQLLEN vallen; int fp; } params_t; params_t *params = NULL; char *filename; unsigned char otype; - SWORD sqltype, ctype, scale; - SWORD nullable; - UDWORD precision; + SQLSMALLINT sqltype, ctype, scale; + SQLSMALLINT nullable; + SQLULEN precision; odbc_result *result; int numArgs, i, ne; RETCODE rc; @@ -997,7 +1043,7 @@ PHP_FUNCTION(odbc_execute) RETURN_FALSE; } - SQLDescribeParam(result->stmt, (UWORD)i, &sqltype, &precision, + SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); params[i-1].vallen = Z_STRLEN_PP(tmp); params[i-1].fp = -1; @@ -1044,7 +1090,7 @@ PHP_FUNCTION(odbc_execute) params[i-1].vallen = SQL_LEN_DATA_AT_EXEC(0); - rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, + rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, (void *)params[i-1].fp, 0, ¶ms[i-1].vallen); @@ -1056,7 +1102,7 @@ PHP_FUNCTION(odbc_execute) params[i-1].vallen = SQL_NULL_DATA; } - rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, + rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, Z_STRVAL_PP(tmp), 0, ¶ms[i-1].vallen); @@ -1131,7 +1177,8 @@ PHP_FUNCTION(odbc_execute) PHP_FUNCTION(odbc_cursor) { zval **pv_res; - SWORD len, max_len; + SQLUSMALLINT max_len; + SQLSMALLINT len; char *cursorname; odbc_result *result; RETCODE rc; @@ -1150,12 +1197,12 @@ PHP_FUNCTION(odbc_cursor) if (max_len > 0) { cursorname = emalloc(max_len + 1); - rc = SQLGetCursorName(result->stmt,cursorname,(SWORD)max_len,&len); + rc = SQLGetCursorName(result->stmt,cursorname,(SQLSMALLINT)max_len,&len); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { char state[6]; /* Not used */ - SDWORD error; /* Not used */ - char errormsg[255]; - SWORD errormsgsize; /* Not used */ + SQLINTEGER error; /* Not used */ + char errormsg[SQL_MAX_MESSAGE_LENGTH]; + SQLSMALLINT errormsgsize; /* Not used */ SQLError( result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, state, &error, errormsg, @@ -1257,7 +1304,7 @@ PHP_FUNCTION(odbc_exec) odbc_connection *conn; RETCODE rc; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD scrollopts; + SQLUINTEGER scrollopts; #endif numArgs = ZEND_NUM_ARGS(); @@ -1299,8 +1346,8 @@ PHP_FUNCTION(odbc_exec) /* Try to set CURSOR_TYPE to dynamic. Driver will replace this with other type if not possible. */ - if (SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, SQL_CURSOR_DYNAMIC) - == SQL_ERROR) { + int cursortype = ODBCG(default_cursortype); + if (SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, cursortype) == SQL_ERROR) { odbc_sql_error(conn, result->stmt, " SQLSetStmtOption"); SQLFreeStmt(result->stmt, SQL_DROP); efree(result); @@ -1351,12 +1398,12 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) int i; odbc_result *result; RETCODE rc; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; char *buf = NULL; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; - SDWORD rownum = -1; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; + SQLLEN rownum = -1; zval **pv_res, **pv_row, *tmp; switch(ZEND_NUM_ARGS()) { @@ -1435,7 +1482,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) break; } if (buf == NULL) buf = emalloc(result->longreadlen + 1); - rc = SQLGetData(result->stmt, (UWORD)(i + 1), sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1), sql_c_type, buf, result->longreadlen + 1, &result->values[i].vallen); if (rc == SQL_ERROR) { @@ -1509,14 +1556,14 @@ PHP_FUNCTION(odbc_fetch_into) int numArgs, i; odbc_result *result; RETCODE rc; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; char *buf = NULL; zval **pv_res, **pv_res_arr, *tmp; #ifdef HAVE_SQL_EXTENDED_FETCH zval **pv_row; - UDWORD crow; - UWORD RowStatus[1]; - SDWORD rownum = -1; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; + SQLLEN rownum = -1; #endif /* HAVE_SQL_EXTENDED_FETCH */ numArgs = ZEND_NUM_ARGS(); @@ -1595,7 +1642,7 @@ PHP_FUNCTION(odbc_fetch_into) } if (buf == NULL) buf = emalloc(result->longreadlen + 1); - rc = SQLGetData(result->stmt, (UWORD)(i + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1),sql_c_type, buf, result->longreadlen + 1, &result->values[i].vallen); if (rc == SQL_ERROR) { @@ -1666,13 +1713,13 @@ PHP_FUNCTION(solid_fetch_prev) PHP_FUNCTION(odbc_fetch_row) { int numArgs; - SDWORD rownum = 1; + SQLLEN rownum = 1; odbc_result *result; RETCODE rc; zval **pv_res, **pv_row; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif numArgs = ZEND_NUM_ARGS(); @@ -1728,15 +1775,15 @@ PHP_FUNCTION(odbc_result) { char *field; int field_ind; - SWORD sql_c_type = SQL_C_CHAR; + SQLSMALLINT sql_c_type = SQL_C_CHAR; odbc_result *result; int i = 0; RETCODE rc; - SDWORD fieldsize; + SQLLEN fieldsize; zval **pv_res, **pv_field; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif field_ind = -1; @@ -1814,8 +1861,8 @@ PHP_FUNCTION(odbc_result) else fieldsize = result->longreadlen; } else { - SQLColAttributes(result->stmt, (UWORD)(field_ind + 1), - (UWORD)((sql_c_type == SQL_C_BINARY) ? SQL_COLUMN_LENGTH : + SQLColAttributes(result->stmt, (SQLUSMALLINT)(field_ind + 1), + (SQLUSMALLINT)((sql_c_type == SQL_C_BINARY) ? SQL_COLUMN_LENGTH : SQL_COLUMN_DISPLAY_SIZE), NULL, 0, NULL, &fieldsize); } @@ -1826,7 +1873,7 @@ PHP_FUNCTION(odbc_result) /* SQLGetData will truncate CHAR data to fieldsize - 1 bytes and append \0. * For binary data it is truncated to fieldsize bytes. */ - rc = SQLGetData(result->stmt, (UWORD)(field_ind + 1), sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(field_ind + 1), sql_c_type, field, fieldsize, &result->values[field_ind].vallen); if (rc == SQL_ERROR) { @@ -1869,7 +1916,7 @@ PHP_FUNCTION(odbc_result) /* Call SQLGetData() until SQL_SUCCESS is returned */ while(1) { - rc = SQLGetData(result->stmt, (UWORD)(field_ind + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(field_ind + 1),sql_c_type, field, fieldsize, &result->values[field_ind].vallen); if (rc == SQL_ERROR) { @@ -1904,10 +1951,10 @@ PHP_FUNCTION(odbc_result_all) odbc_result *result; RETCODE rc; zval **pv_res, **pv_format; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif numArgs = ZEND_NUM_ARGS(); @@ -1973,7 +2020,7 @@ PHP_FUNCTION(odbc_result_all) if (buf == NULL) buf = emalloc(result->longreadlen); - rc = SQLGetData(result->stmt, (UWORD)(i + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1),sql_c_type, buf, result->longreadlen, &result->values[i].vallen); php_printf(""); @@ -2139,7 +2186,7 @@ int odbc_sqlconnect(odbc_connection **conn, char *db, char *uid, char *pwd, int } /* Possible fix for bug #10250 * Needs testing on UnixODBC < 2.0.5 though. */ -#if defined(HAVE_EMPRESS) || defined(HAVE_UNIXODBC) || defined(PHP_WIN32) +#if defined(HAVE_EMPRESS) || defined(HAVE_UNIXODBC) || defined(PHP_WIN32) || defined (HAVE_IODBC) /* * Uncomment the line above, and comment line below to fully test * #ifdef HAVE_EMPRESS */ { @@ -2315,7 +2362,7 @@ try_and_get_another_connection: if(ODBCG(check_persistent)){ RETCODE ret; UCHAR d_name[32]; - SWORD len; + SQLSMALLINT len; ret = SQLGetInfo(db_conn->hdbc, SQL_DATA_SOURCE_READ_ONLY, @@ -2431,7 +2478,7 @@ PHP_FUNCTION(odbc_close) PHP_FUNCTION(odbc_num_rows) { odbc_result *result; - SDWORD rows; + SQLLEN rows; zval **pv_res; if (zend_get_parameters_ex(1, &pv_res) == FAILURE) { @@ -2547,7 +2594,7 @@ PHP_FUNCTION(odbc_field_type) { odbc_result *result; char tmp[32]; - SWORD tmplen; + SQLSMALLINT tmplen; zval **pv_res, **pv_num; if (zend_get_parameters_ex(2, &pv_res, &pv_num) == FAILURE) { @@ -2573,7 +2620,7 @@ PHP_FUNCTION(odbc_field_type) RETURN_FALSE; } - SQLColAttributes(result->stmt, (UWORD)Z_LVAL_PP(pv_num), + SQLColAttributes(result->stmt, (SQLUSMALLINT)Z_LVAL_PP(pv_num), SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL); RETURN_STRING(tmp,1) } @@ -2667,7 +2714,7 @@ PHP_FUNCTION(odbc_autocommit) } RETVAL_TRUE; } else { - SDWORD status; + SQLINTEGER status; rc = SQLGetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, (PTR)&status); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -2898,7 +2945,7 @@ PHP_FUNCTION(odbc_columns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *table = NULL, *column = NULL; - SWORD cat_len=0, schema_len=0, table_len=0, column_len=0; + SQLSMALLINT cat_len=0, schema_len=0, table_len=0, column_len=0; RETCODE rc; int argc; @@ -3157,7 +3204,7 @@ PHP_FUNCTION(odbc_gettypeinfo) odbc_connection *conn; RETCODE rc; int argc; - SWORD data_type = SQL_ALL_TYPES; + SQLSMALLINT data_type = SQL_ALL_TYPES; argc = ZEND_NUM_ARGS(); if (argc == 1) { @@ -3169,7 +3216,7 @@ PHP_FUNCTION(odbc_gettypeinfo) WRONG_PARAM_COUNT; } convert_to_long_ex(pv_data_type); - data_type = (SWORD) Z_LVAL_PP(pv_data_type); + data_type = (SQLSMALLINT) Z_LVAL_PP(pv_data_type); } else { WRONG_PARAM_COUNT; } @@ -3453,8 +3500,8 @@ PHP_FUNCTION(odbc_specialcolumns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; - UWORD type; - UWORD scope, nullable; + SQLUSMALLINT type; + SQLUSMALLINT scope, nullable; RETCODE rc; int argc; @@ -3465,7 +3512,7 @@ PHP_FUNCTION(odbc_specialcolumns) WRONG_PARAM_COUNT; } convert_to_long_ex(pv_type); - type = (UWORD) Z_LVAL_PP(pv_type); + type = (SQLUSMALLINT) Z_LVAL_PP(pv_type); convert_to_string_ex(pv_cat); cat = Z_STRVAL_PP(pv_cat); convert_to_string_ex(pv_schema); @@ -3473,9 +3520,9 @@ PHP_FUNCTION(odbc_specialcolumns) convert_to_string_ex(pv_name); name = Z_STRVAL_PP(pv_name); convert_to_long_ex(pv_scope); - scope = (UWORD) Z_LVAL_PP(pv_scope); + scope = (SQLUSMALLINT) Z_LVAL_PP(pv_scope); convert_to_long_ex(pv_nullable); - nullable = (UWORD) Z_LVAL_PP(pv_nullable); + nullable = (SQLUSMALLINT) Z_LVAL_PP(pv_nullable); } else { WRONG_PARAM_COUNT; } @@ -3537,7 +3584,7 @@ PHP_FUNCTION(odbc_statistics) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; - UWORD unique, reserved; + SQLUSMALLINT unique, reserved; RETCODE rc; int argc; @@ -3554,9 +3601,9 @@ PHP_FUNCTION(odbc_statistics) convert_to_string_ex(pv_name); name = Z_STRVAL_PP(pv_name); convert_to_long_ex(pv_unique); - unique = (UWORD) Z_LVAL_PP(pv_unique); + unique = (SQLUSMALLINT) Z_LVAL_PP(pv_unique); convert_to_long_ex(pv_reserved); - reserved = (UWORD) Z_LVAL_PP(pv_reserved); + reserved = (SQLUSMALLINT) Z_LVAL_PP(pv_reserved); } else { WRONG_PARAM_COUNT; } diff --git a/ext/odbc/php_odbc.h b/ext/odbc/php_odbc.h index 5f0b1e1aa..d9e617c5e 100644 --- a/ext/odbc/php_odbc.h +++ b/ext/odbc/php_odbc.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_odbc.h,v 1.60.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_odbc.h,v 1.60.2.1.2.4 2008/12/31 11:17:40 sebastian Exp $ */ #ifndef PHP_ODBC_H #define PHP_ODBC_H @@ -33,7 +33,7 @@ extern zend_module_entry odbc_module_entry; #define odbc_module_ptr &odbc_module_entry -#if defined(HAVE_DBMAKER) || defined(PHP_WIN32) || defined(HAVE_IBMDB2) || defined(HAVE_UNIXODBC) || defined(HAVE_BIRDSTEP) +#if defined(HAVE_DBMAKER) || defined(PHP_WIN32) || defined(HAVE_IBMDB2) || defined(HAVE_UNIXODBC) || defined(HAVE_BIRDSTEP) || defined(HAVE_IODBC) # define PHP_ODBC_HAVE_FETCH_HASH 1 #endif diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index 9ccbd7b76..a5f8244e9 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_odbc_includes.h,v 1.12.2.1.2.5 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_odbc_includes.h,v 1.12.2.1.2.8 2008/12/31 11:17:40 sebastian Exp $ */ #ifndef PHP_ODBC_INCLUDES_H #define PHP_ODBC_INCLUDES_H @@ -90,19 +90,19 @@ PHP_FUNCTION(solid_fetch_prev); #elif defined(HAVE_IODBC) /* iODBC library */ +#ifdef CHAR +#undef CHAR +#endif + +#ifdef SQLCHAR +#undef SQLCHAR +#endif + #define ODBC_TYPE "iODBC" -#include -#include +#include +#include +#include #define HAVE_SQL_EXTENDED_FETCH 1 -#define SQL_FD_FETCH_ABSOLUTE 0x00000010L -#define SQL_CURSOR_DYNAMIC 2UL -#define SQL_NO_TOTAL (-4) -#define SQL_SO_DYNAMIC 0x00000004L -#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100) -#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) -#ifndef SQL_SUCCEEDED -#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) -#endif #elif defined(HAVE_UNIXODBC) /* unixODBC library */ @@ -148,8 +148,12 @@ PHP_FUNCTION(solid_fetch_prev); #include #include #define HAVE_SQL_EXTENDED_FETCH 1 +#ifndef SQLSMALLINT #define SQLSMALLINT SWORD +#endif +#ifndef SQLUSMALLINT #define SQLUSMALLINT UWORD +#endif #elif defined(HAVE_BIRDSTEP) /* Raima Birdstep */ @@ -204,7 +208,7 @@ PHP_FUNCTION(solid_fetch_prev); /* Common defines */ -#if defined( HAVE_IBMDB2 ) || defined( HAVE_UNIXODBC ) +#if defined( HAVE_IBMDB2 ) || defined( HAVE_UNIXODBC ) || defined (HAVE_IODBC) #define ODBC_SQL_ENV_T SQLHANDLE #define ODBC_SQL_CONN_T SQLHANDLE #define ODBC_SQL_STMT_T SQLHANDLE @@ -230,15 +234,15 @@ typedef struct odbc_connection { typedef struct odbc_result_value { char name[32]; char *value; - SDWORD vallen; - SDWORD coltype; + SQLLEN vallen; + SQLLEN coltype; } odbc_result_value; typedef struct odbc_result { ODBC_SQL_STMT_T stmt; odbc_result_value *values; - SWORD numcols; - SWORD numparams; + SQLSMALLINT numcols; + SQLSMALLINT numparams; # if HAVE_SQL_EXTENDED_FETCH int fetch_abs; # endif @@ -261,6 +265,7 @@ ZEND_BEGIN_MODULE_GLOBALS(odbc) int defConn; long defaultlrl; long defaultbinmode; + long default_cursortype; char laststate[6]; char lasterrormsg[SQL_MAX_MESSAGE_LENGTH]; HashTable *resource_list; diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 516ff1748..52627ad4c 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: openssl.c,v 1.98.2.5.2.45 2008/04/07 10:44:03 tony2001 Exp $ */ +/* $Id: openssl.c,v 1.98.2.5.2.51 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -56,6 +56,7 @@ #define OPENSSL_ALGO_MD5 2 #define OPENSSL_ALGO_MD4 3 #define OPENSSL_ALGO_MD2 4 +#define OPENSSL_ALGO_DSS1 5 #define DEBUG_SMIME 0 @@ -641,6 +642,9 @@ static EVP_MD * php_openssl_get_evp_md_from_algo(long algo) { /* {{{ */ case OPENSSL_ALGO_MD2: mdtype = (EVP_MD *) EVP_md2(); break; + case OPENSSL_ALGO_DSS1: + mdtype = (EVP_MD *) EVP_dss1(); + break; default: return NULL; break; @@ -692,6 +696,7 @@ PHP_MINIT_FUNCTION(openssl) REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD5", OPENSSL_ALGO_MD5, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD4", OPENSSL_ALGO_MD4, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_CS|CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_DSS1", OPENSSL_ALGO_DSS1, CONST_CS|CONST_PERSISTENT); /* flags for S/MIME */ REGISTER_LONG_CONSTANT("PKCS7_DETACHED", PKCS7_DETACHED, CONST_CS|CONST_PERSISTENT); @@ -1200,7 +1205,7 @@ PHP_FUNCTION(openssl_x509_checkpurpose) STACK_OF(X509) * untrustedchain = NULL; long purpose; char * untrusted = NULL; - int untrusted_len; + int untrusted_len, ret; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zl|a!s", &zcert, &purpose, &zcainfo, &untrusted, &untrusted_len) == FAILURE) { @@ -1224,7 +1229,15 @@ PHP_FUNCTION(openssl_x509_checkpurpose) if (cert == NULL) { goto clean_exit; } - RETVAL_LONG(check_cert(cainfo, cert, untrustedchain, purpose)); + + ret = check_cert(cainfo, cert, untrustedchain, purpose); + + if (ret != 0 && ret != 1) { + RETVAL_LONG(ret); + } else { + RETVAL_BOOL(ret); + } + clean_exit: if (certresource == 1 && cert) { @@ -2086,7 +2099,7 @@ cleanup: } /* }}} */ -/* {{{ proto bool openssl_csr_new(array dn, resource &privkey [, array configargs, array extraattribs]) +/* {{{ proto bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]]) Generates a privkey and CSR */ PHP_FUNCTION(openssl_csr_new) { @@ -3010,7 +3023,7 @@ PHP_FUNCTION(openssl_pkcs7_encrypt) } } - BIO_reset(infile); + (void)BIO_reset(infile); /* write the encrypted data */ SMIME_write_PKCS7(outfile, p7, infile, flags); @@ -3099,7 +3112,7 @@ PHP_FUNCTION(openssl_pkcs7_sign) goto clean_exit; } - BIO_reset(infile); + (void)BIO_reset(infile); /* tack on extra headers */ if (zheaders) { @@ -3522,7 +3535,9 @@ PHP_FUNCTION(openssl_sign) efree(sigbuf); RETVAL_FALSE; } +#if OPENSSL_VERSION_NUMBER >= 0x0090700fL EVP_MD_CTX_cleanup(&md_ctx); +#endif if (keyresource == -1) { EVP_PKEY_free(pkey); } @@ -3562,7 +3577,9 @@ PHP_FUNCTION(openssl_verify) EVP_VerifyInit (&md_ctx, mdtype); EVP_VerifyUpdate (&md_ctx, data, data_len); err = EVP_VerifyFinal (&md_ctx, (unsigned char *)signature, signature_len, pkey); +#if OPENSSL_VERSION_NUMBER >= 0x0090700fL EVP_MD_CTX_cleanup(&md_ctx); +#endif if (keyresource == -1) { EVP_PKEY_free(pkey); @@ -3918,30 +3935,33 @@ SSL *php_SSL_new_from_context(SSL_CTX *ctx, php_stream *stream TSRMLS_DC) /* {{{ X509 *cert = NULL; EVP_PKEY *key = NULL; SSL *tmpssl; + char resolved_path_buff[MAXPATHLEN]; - /* a certificate to use for authentication */ - if (SSL_CTX_use_certificate_chain_file(ctx, certfile) != 1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set local cert chain file `%s'; Check that your cafile/capath settings include details of your certificate and its issuer", certfile); - return NULL; - } + if (VCWD_REALPATH(certfile, resolved_path_buff)) { + /* a certificate to use for authentication */ + if (SSL_CTX_use_certificate_chain_file(ctx, resolved_path_buff) != 1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set local cert chain file `%s'; Check that your cafile/capath settings include details of your certificate and its issuer", certfile); + return NULL; + } - if (SSL_CTX_use_PrivateKey_file(ctx, certfile, SSL_FILETYPE_PEM) != 1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set private key file `%s'", certfile); - return NULL; - } + if (SSL_CTX_use_PrivateKey_file(ctx, resolved_path_buff, SSL_FILETYPE_PEM) != 1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set private key file `%s'", resolved_path_buff); + return NULL; + } - tmpssl = SSL_new(ctx); - cert = SSL_get_certificate(tmpssl); + tmpssl = SSL_new(ctx); + cert = SSL_get_certificate(tmpssl); - if (cert) { - key = X509_get_pubkey(cert); - EVP_PKEY_copy_parameters(key, SSL_get_privatekey(tmpssl)); - EVP_PKEY_free(key); - } - SSL_free(tmpssl); + if (cert) { + key = X509_get_pubkey(cert); + EVP_PKEY_copy_parameters(key, SSL_get_privatekey(tmpssl)); + EVP_PKEY_free(key); + } + SSL_free(tmpssl); - if (!SSL_CTX_check_private_key(ctx)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Private key does not match certificate!"); + if (!SSL_CTX_check_private_key(ctx)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Private key does not match certificate!"); + } } } if (ok) { diff --git a/ext/openssl/php_openssl.h b/ext/openssl/php_openssl.h index 83a42867e..e7448f731 100644 --- a/ext/openssl/php_openssl.h +++ b/ext/openssl/php_openssl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_openssl.h,v 1.16.2.1.2.5 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_openssl.h,v 1.16.2.1.2.6 2008/12/31 11:17:41 sebastian Exp $ */ #ifndef PHP_OPENSSL_H #define PHP_OPENSSL_H diff --git a/ext/openssl/tests/bug41033.pem b/ext/openssl/tests/bug41033.pem new file mode 100644 index 000000000..4ae74b9a5 --- /dev/null +++ b/ext/openssl/tests/bug41033.pem @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBuwIBAAKBgQCrQ/By/Y5OQRmmc/e+W+eFVoeR5y8WPOkykwS2hc21aSNY5X3q +8ZHdV467thFd/QCoR55hHTRGRbYmfOkXSiscotU08ISlxIH39EEhFSzwqzkxFfak +cgHEu41AUOIfJ2Dz+vcmuasME159pDP0d0gt55pKRPcXoh916p2VS/FBiQIVAMnQ +C6W+K1brelHqpUqwQ1cdNJklAoGAN858gG/UIF+U3CYTcgl5/OUAqOzvitMV2ue+ +AkDEkGNEZs3KUAjpqHduf1E3znl7hJJIRr+33sul9USxn0vczDBkEJPralQjNX2C +dnYKDDhJ+UKlAFG2JZint4CBKPFiZC0tVo04iDQQUUfDC4c8K3cS5uzypebJyoLo +e5b8rScCgYBedJg6vklhMWv2wZD10hbQaXEX5r8T6EQujbfO0RcKpuaJziPPrXO8 +QwPtLt0f40yjTmPxN3LcpgMymiun9UCSTZ3MhVKekCmSNzs5+lQpCm1VlDrCg+jn +djw0VCX8Cm0lOPIyQ4eCNAB6nQLtBnXFWaqYuUS8iVDE7wmT0iwnkAIVAMKogWVA +ZOKwjTj9Yztv3lGj7VTa +-----END DSA PRIVATE KEY----- diff --git a/ext/openssl/tests/bug41033.phpt b/ext/openssl/tests/bug41033.phpt new file mode 100644 index 000000000..4aeae66f4 --- /dev/null +++ b/ext/openssl/tests/bug41033.phpt @@ -0,0 +1,27 @@ +--TEST-- +#41033, enable signing with DSA keys +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Signature: %s +Signature validity: 1 diff --git a/ext/openssl/tests/bug41033pub.pem b/ext/openssl/tests/bug41033pub.pem new file mode 100644 index 000000000..0d4ab27ff --- /dev/null +++ b/ext/openssl/tests/bug41033pub.pem @@ -0,0 +1,12 @@ +-----BEGIN PUBLIC KEY----- +MIIBtjCCASsGByqGSM44BAEwggEeAoGBAKtD8HL9jk5BGaZz975b54VWh5HnLxY8 +6TKTBLaFzbVpI1jlferxkd1Xjru2EV39AKhHnmEdNEZFtiZ86RdKKxyi1TTwhKXE +gff0QSEVLPCrOTEV9qRyAcS7jUBQ4h8nYPP69ya5qwwTXn2kM/R3SC3nmkpE9xei +H3XqnZVL8UGJAhUAydALpb4rVut6UeqlSrBDVx00mSUCgYA3znyAb9QgX5TcJhNy +CXn85QCo7O+K0xXa574CQMSQY0RmzcpQCOmod25/UTfOeXuEkkhGv7fey6X1RLGf +S9zMMGQQk+tqVCM1fYJ2dgoMOEn5QqUAUbYlmKe3gIEo8WJkLS1WjTiINBBRR8ML +hzwrdxLm7PKl5snKguh7lvytJwOBhAACgYBedJg6vklhMWv2wZD10hbQaXEX5r8T +6EQujbfO0RcKpuaJziPPrXO8QwPtLt0f40yjTmPxN3LcpgMymiun9UCSTZ3MhVKe +kCmSNzs5+lQpCm1VlDrCg+jndjw0VCX8Cm0lOPIyQ4eCNAB6nQLtBnXFWaqYuUS8 +iVDE7wmT0iwnkA== +-----END PUBLIC KEY----- diff --git a/ext/openssl/tests/bug46127.pem b/ext/openssl/tests/bug46127.pem new file mode 100644 index 000000000..9d754d460 --- /dev/null +++ b/ext/openssl/tests/bug46127.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIC5jCCAk+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBcMQswCQYDVQQGEwJBVTET +MBEGA1UECBMKUXVlZW5zbGFuZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQx +HDAaBgNVBAMTE1Rlc3QgUENBICgxMDI0IGJpdCkwHhcNOTkxMjAyMjEzNTQ4WhcN +MDUwNzExMjEzNTQ4WjBcMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFu +ZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxHDAaBgNVBAMTE1Rlc3QgUENB +ICgxMDI0IGJpdCkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ2haT/f5Zwy +V+MiuSDjSR62adBoSiBB7Usty44lXqsp9RICw+DCCxpsn/CfxPEDXLLd4olsWXc6 +JRcxGynbYmnzk+Z6aIPPJQhK3CTvaqGnWKZsA1m+WaUIUqJCuNTK4N+7hMAGaf6S +S3e9HVgEQ4a34gXJ7VQFVIBNV1EnZRWHAgMBAAGjgbcwgbQwHQYDVR0OBBYEFE0R +aEcrj18q1dw+G6nJbsTWR213MIGEBgNVHSMEfTB7gBRNEWhHK49fKtXcPhupyW7E +1kdtd6FgpF4wXDELMAkGA1UEBhMCQVUxEzARBgNVBAgTClF1ZWVuc2xhbmQxGjAY +BgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRwwGgYDVQQDExNUZXN0IFBDQSAoMTAy +NCBiaXQpggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAUa8B3pho ++Mvxeq9HsEzJxHIFQla05S5J/e/V+DQTYoKiRFchKPrDAdrzYSEvP3h4QJEtsNqQ +JfOxg5M42uLFq7aPGWkF6ZZqZsYS+zA9IVT14g7gNA6Ne+5QtJqQtH9HA24st0T0 +Tga/lZ9M2ovImovaxSL/kRHbpCWcqWVxpOw= +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQCdoWk/3+WcMlfjIrkg40ketmnQaEogQe1LLcuOJV6rKfUSAsPg +wgsabJ/wn8TxA1yy3eKJbFl3OiUXMRsp22Jp85PmemiDzyUIStwk72qhp1imbANZ +vlmlCFKiQrjUyuDfu4TABmn+kkt3vR1YBEOGt+IFye1UBVSATVdRJ2UVhwIDAQAB +AoGAba4fTtuap5l7/8ZsbE7Z1O32KJY4ZcOZukLOLUUhXxXduT+FTgGWujc0/rgc +z9qYCLlNZHOouMYTgtSfYvuMuLZ11VIt0GYH+nRioLShE59Yy+zCRyC+gPigS1kz +xvo14AsOIPYV14Tk/SsHyq6E0eTk7VzaIE197giiINUERPECQQDSKmtPTh/lRKw7 +HSZSM0I1mFWn/1zqrAbontRQY5w98QWIOe5qmzYyFbPXYT3d9BzlsMyhgiRNoBbD +yvohSHXJAkEAwAHx6ezAZeWWzD5yXD36nyjpkVCw7Tk7TSmOceLJMWt1QcrCfqlS +xA5jjpQ6Z8suU5DdtWAryM2sAir1WisYzwJAd6Zcx56jvAQ3xcPXsE6scBTVFzrj +7FqZ6E+cclPzfLQ+QQsyOBE7bpI6e/FJppY26XGZXo3YGzV8IGXrt40oOQJALETG +h86EFXo3qGOFbmsDy4pdP5nBERCu8X1xUCSfintiD4c2DInxgS5oGclnJeMcjTvL +QjQoJCX3UJCi/OUO1QJBAKgcDHWjMvt+l1pjJBsSEZ0HX9AAIIVx0RQmbFGS+F2Q +hhu5l77WnnZOQ9vvhV5u7NPCUF9nhU3jh60qWWO8mkc= +-----END RSA PRIVATE KEY----- diff --git a/ext/openssl/tests/bug46127.phpt b/ext/openssl/tests/bug46127.phpt new file mode 100644 index 000000000..a70a5d490 --- /dev/null +++ b/ext/openssl/tests/bug46127.phpt @@ -0,0 +1,58 @@ +--TEST-- +#46127, openssl_sign/verify: accept different algos +--SKIPIF-- + +--FILE-- + false, + 'allow_self_signed' => true, + 'local_cert' => $pem, + // 'passphrase' => '', + ); + $context = stream_context_create(array('ssl' => $ssl)); + $sock = stream_socket_server('ssl://127.0.0.1:'.$port, $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context); + if (!$sock) return false; + + $link = stream_socket_accept($sock); + if (!$link) return false; // bad link? + + fputs($link, "Sending bug 46127\n"); + + // close stuff + fclose($link); + fclose($sock); + + exit; +} + +echo "Running bug46127\n"; + +$port = rand(15000, 32000); + +$pid = pcntl_fork(); +if ($pid == 0) { // child + ssl_server($port); + exit; +} + +// client or failed +sleep(1); +$sock = fsockopen('ssl://127.0.0.1', $port, $errno, $errstr); +if (!$sock) exit; + +echo fgets($sock); + +pcntl_waitpid($pid, $status); + +?> +--EXPECTF-- +Running bug46127 +Sending bug 46127 diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index fc29a82b6..c31a5052f 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xp_ssl.c,v 1.22.2.3.2.11 2008/04/08 14:11:49 jorton Exp $ */ +/* $Id: xp_ssl.c,v 1.22.2.3.2.16 2008/12/31 11:17:41 sebastian Exp $ */ #include "php.h" #include "ext/standard/file.h" @@ -152,9 +152,10 @@ static int handle_ssl_error(php_stream *stream, int nr_bytes, zend_bool is_init ERR_error_string_n(ecode, esbuf, sizeof(esbuf) - 1); } code = strlen(esbuf); - esbuf[code] = '\0'; ebuf = erealloc(ebuf, ebuf_size + code + 1); + ebuf_size += code; + if (wptr == NULL) { wptr = ebuf; } @@ -198,14 +199,13 @@ static size_t php_openssl_sockop_write(php_stream *stream, const char *buf, size break; } } while(retry); - + + if (didwrite > 0) { + php_stream_notify_progress_increment(stream->context, didwrite, 0); + } } else { didwrite = php_stream_socket_ops.write(stream, buf, count TSRMLS_CC); } - - if (didwrite > 0) { - php_stream_notify_progress_increment(stream->context, didwrite, 0); - } if (didwrite < 0) { didwrite = 0; @@ -234,16 +234,16 @@ static size_t php_openssl_sockop_read(php_stream *stream, char *buf, size_t coun break; } } while (retry); + + if (nr_bytes > 0) { + php_stream_notify_progress_increment(stream->context, nr_bytes, 0); + } } else { nr_bytes = php_stream_socket_ops.read(stream, buf, count TSRMLS_CC); } - if (nr_bytes > 0) { - php_stream_notify_progress_increment(stream->context, nr_bytes, 0); - } - if (nr_bytes < 0) { nr_bytes = 0; } @@ -418,7 +418,7 @@ static inline int php_openssl_enable_crypto(php_stream *stream, n = SSL_connect(sslsock->ssl_handle); gettimeofday(&tve, &tz); - timeout -= (tve.tv_sec + tve.tv_usec / 1000000) - (tvs.tv_sec + tvs.tv_usec / 1000000); + timeout -= (tve.tv_sec + (float) tve.tv_usec / 1000000) - (tvs.tv_sec + (float) tvs.tv_usec / 1000000); if (timeout < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL: connection timeout"); return -1; @@ -558,6 +558,9 @@ static inline int php_openssl_tcp_sockop_accept(php_stream *stream, php_openssl_ xparam->outputs.client = php_stream_alloc_rel(stream->ops, clisockdata, NULL, "r+"); if (xparam->outputs.client) { xparam->outputs.client->context = stream->context; + if (stream->context) { + zend_list_addref(stream->context->rsrc_id); + } } } diff --git a/ext/pcntl/EXPERIMENTAL b/ext/pcntl/EXPERIMENTAL deleted file mode 100644 index 6443e9964..000000000 --- a/ext/pcntl/EXPERIMENTAL +++ /dev/null @@ -1,5 +0,0 @@ -this extension is experimental, -its functions may change their names -or move to extension all together -so do not rely to much on them -you have been warned! diff --git a/ext/pcntl/config.m4 b/ext/pcntl/config.m4 index da5b3528d..8a0769f51 100644 --- a/ext/pcntl/config.m4 +++ b/ext/pcntl/config.m4 @@ -1,12 +1,9 @@ dnl -dnl $Id: config.m4,v 1.10 2003/10/28 17:08:18 gschlossnagle Exp $ +dnl $Id: config.m4,v 1.10.6.1 2008/08/07 13:11:28 tony2001 Exp $ dnl -dnl Process Control (pcntl) extentsion --EXPERIMENTAL-- -dnl TODO - Add platform checks - PHP_ARG_ENABLE(pcntl, whether to enable pcntl support, -[ --enable-pcntl Enable experimental pcntl support (CLI/CGI only)]) +[ --enable-pcntl Enable pcntl support (CLI/CGI only)]) if test "$PHP_PCNTL" != "no"; then diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 153502700..f14358feb 100755 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pcntl.c,v 1.48.2.2.2.6 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pcntl.c,v 1.48.2.2.2.7 2008/12/31 11:17:41 sebastian Exp $ */ #define PCNTL_DEBUG 0 diff --git a/ext/pcntl/php_pcntl.h b/ext/pcntl/php_pcntl.h index c7c46bf60..0f15934ce 100644 --- a/ext/pcntl/php_pcntl.h +++ b/ext/pcntl/php_pcntl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pcntl.h,v 1.20.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pcntl.h,v 1.20.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #ifndef PHP_PCNTL_H #define PHP_PCNTL_H diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c index c6c5208de..893494bd4 100644 --- a/ext/pcntl/php_signal.c +++ b/ext/pcntl/php_signal.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_signal.c,v 1.9.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_signal.c,v 1.9.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #include "php_signal.h" diff --git a/ext/pcntl/php_signal.h b/ext/pcntl/php_signal.h index 2a2a0556a..97f714d1d 100644 --- a/ext/pcntl/php_signal.h +++ b/ext/pcntl/php_signal.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_signal.h,v 1.9.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_signal.h,v 1.9.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #include #ifndef PHP_SIGNAL_H diff --git a/ext/pcre/config.w32 b/ext/pcre/config.w32 index cc779a2a3..333417d72 100644 --- a/ext/pcre/config.w32 +++ b/ext/pcre/config.w32 @@ -1,14 +1,11 @@ -// $Id: config.w32,v 1.4.2.5.2.7 2007/09/11 16:17:33 nlopess Exp $ +// $Id: config.w32,v 1.4.2.5.2.9 2009/01/02 05:00:35 andi Exp $ // vim:ft=javascript -ARG_WITH("pcre-regex", "Perl Compatible Regular Expressions", "yes"); +EXTENSION("pcre", "php_pcre.c", false /* never shared */, + "-Iext/pcre/pcrelib"); +ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_ucd.c pcre_compile.c pcre_config.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_newline.c pcre_ord2utf8.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre"); +ADD_DEF_FILE("ext\\pcre\\php_pcre.def"); -if (PHP_PCRE_REGEX == "yes") { - EXTENSION("pcre", "php_pcre.c", PHP_PCRE_REGEX_SHARED, - "-DNO_RECURSE -Iext/pcre/pcrelib"); - ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_ucp_searchfuncs.c pcre_compile.c pcre_config.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_newline.c pcre_ord2utf8.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre"); - ADD_DEF_FILE("ext\\pcre\\php_pcre.def"); - - AC_DEFINE('HAVE_BUNDLED_PCRE', 1, 'Using bundled PCRE library'); - AC_DEFINE('HAVE_PCRE', 1, 'Have PCRE library'); -} +AC_DEFINE('HAVE_BUNDLED_PCRE', 1, 'Using bundled PCRE library'); +AC_DEFINE('HAVE_PCRE', 1, 'Have PCRE library'); +PHP_PCRE="yes"; diff --git a/ext/pcre/config0.m4 b/ext/pcre/config0.m4 index 0d87053ba..1d25b9c34 100644 --- a/ext/pcre/config0.m4 +++ b/ext/pcre/config0.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config0.m4,v 1.38.2.3.2.10 2007/09/11 16:17:33 nlopess Exp $ +dnl $Id: config0.m4,v 1.38.2.3.2.12 2008/12/29 15:27:11 scottmac Exp $ dnl dnl By default we'll compile and link against the bundled PCRE library @@ -11,7 +11,7 @@ PHP_ARG_WITH(pcre-regex,for PCRE support, if test "$PHP_PCRE_REGEX" != "no"; then if test "$PHP_PCRE_REGEX" = "yes"; then - PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_ucp_searchfuncs.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_newline.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-I@ext_srcdir@/pcrelib) + PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_ucd.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_newline.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-I@ext_srcdir@/pcrelib) PHP_ADD_BUILD_DIR($ext_builddir/pcrelib) PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h pcrelib/]) AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ]) diff --git a/ext/pcre/pcrelib/ChangeLog b/ext/pcre/pcrelib/ChangeLog index 3ebbb4522..fa137fb74 100644 --- a/ext/pcre/pcrelib/ChangeLog +++ b/ext/pcre/pcrelib/ChangeLog @@ -1,6 +1,192 @@ ChangeLog for PCRE ------------------ +Version 7.8 05-Sep-08 +--------------------- + +1. Replaced UCP searching code with optimized version as implemented for Ad + Muncher (http://www.admuncher.com/) by Peter Kankowski. This uses a two- + stage table and inline lookup instead of a function, giving speed ups of 2 + to 5 times on some simple patterns that I tested. Permission was given to + distribute the MultiStage2.py script that generates the tables (it's not in + the tarball, but is in the Subversion repository). + +2. Updated the Unicode datatables to Unicode 5.1.0. This adds yet more + scripts. + +3. Change 12 for 7.7 introduced a bug in pcre_study() when a pattern contained + a group with a zero qualifier. The result of the study could be incorrect, + or the function might crash, depending on the pattern. + +4. Caseless matching was not working for non-ASCII characters in back + references. For example, /(\x{de})\1/8i was not matching \x{de}\x{fe}. + It now works when Unicode Property Support is available. + +5. In pcretest, an escape such as \x{de} in the data was always generating + a UTF-8 string, even in non-UTF-8 mode. Now it generates a single byte in + non-UTF-8 mode. If the value is greater than 255, it gives a warning about + truncation. + +6. Minor bugfix in pcrecpp.cc (change "" == ... to NULL == ...). + +7. Added two (int) casts to pcregrep when printing the difference of two + pointers, in case they are 64-bit values. + +8. Added comments about Mac OS X stack usage to the pcrestack man page and to + test 2 if it fails. + +9. Added PCRE_CALL_CONVENTION just before the names of all exported functions, + and a #define of that name to empty if it is not externally set. This is to + allow users of MSVC to set it if necessary. + +10. The PCRE_EXP_DEFN macro which precedes exported functions was missing from + the convenience functions in the pcre_get.c source file. + +11. An option change at the start of a pattern that had top-level alternatives + could cause overwriting and/or a crash. This command provoked a crash in + some environments: + + printf "/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/8\n" | pcretest + + This potential security problem was recorded as CVE-2008-2371. + +12. For a pattern where the match had to start at the beginning or immediately + after a newline (e.g /.*anything/ without the DOTALL flag), pcre_exec() and + pcre_dfa_exec() could read past the end of the passed subject if there was + no match. To help with detecting such bugs (e.g. with valgrind), I modified + pcretest so that it places the subject at the end of its malloc-ed buffer. + +13. The change to pcretest in 12 above threw up a couple more cases when pcre_ + exec() might read past the end of the data buffer in UTF-8 mode. + +14. A similar bug to 7.3/2 existed when the PCRE_FIRSTLINE option was set and + the data contained the byte 0x85 as part of a UTF-8 character within its + first line. This applied both to normal and DFA matching. + +15. Lazy qualifiers were not working in some cases in UTF-8 mode. For example, + /^[^d]*?$/8 failed to match "abc". + +16. Added a missing copyright notice to pcrecpp_internal.h. + +17. Make it more clear in the documentation that values returned from + pcre_exec() in ovector are byte offsets, not character counts. + +18. Tidied a few places to stop certain compilers from issuing warnings. + +19. Updated the Virtual Pascal + BCC files to compile the latest v7.7, as + supplied by Stefan Weber. I made a further small update for 7.8 because + there is a change of source arrangements: the pcre_searchfuncs.c module is + replaced by pcre_ucd.c. + + +Version 7.7 07-May-08 +--------------------- + +1. Applied Craig's patch to sort out a long long problem: "If we can't convert + a string to a long long, pretend we don't even have a long long." This is + done by checking for the strtoq, strtoll, and _strtoi64 functions. + +2. Applied Craig's patch to pcrecpp.cc to restore ABI compatibility with + pre-7.6 versions, which defined a global no_arg variable instead of putting + it in the RE class. (See also #8 below.) + +3. Remove a line of dead code, identified by coverity and reported by Nuno + Lopes. + +4. Fixed two related pcregrep bugs involving -r with --include or --exclude: + + (1) The include/exclude patterns were being applied to the whole pathnames + of files, instead of just to the final components. + + (2) If there was more than one level of directory, the subdirectories were + skipped unless they satisfied the include/exclude conditions. This is + inconsistent with GNU grep (and could even be seen as contrary to the + pcregrep specification - which I improved to make it absolutely clear). + The action now is always to scan all levels of directory, and just + apply the include/exclude patterns to regular files. + +5. Added the --include_dir and --exclude_dir patterns to pcregrep, and used + --exclude_dir in the tests to avoid scanning .svn directories. + +6. Applied Craig's patch to the QuoteMeta function so that it escapes the + NUL character as backslash + 0 rather than backslash + NUL, because PCRE + doesn't support NULs in patterns. + +7. Added some missing "const"s to declarations of static tables in + pcre_compile.c and pcre_dfa_exec.c. + +8. Applied Craig's patch to pcrecpp.cc to fix a problem in OS X that was + caused by fix #2 above. (Subsequently also a second patch to fix the + first patch. And a third patch - this was a messy problem.) + +9. Applied Craig's patch to remove the use of push_back(). + +10. Applied Alan Lehotsky's patch to add REG_STARTEND support to the POSIX + matching function regexec(). + +11. Added support for the Oniguruma syntax \g, \g, \g'name', \g'n', + which, however, unlike Perl's \g{...}, are subroutine calls, not back + references. PCRE supports relative numbers with this syntax (I don't think + Oniguruma does). + +12. Previously, a group with a zero repeat such as (...){0} was completely + omitted from the compiled regex. However, this means that if the group + was called as a subroutine from elsewhere in the pattern, things went wrong + (an internal error was given). Such groups are now left in the compiled + pattern, with a new opcode that causes them to be skipped at execution + time. + +13. Added the PCRE_JAVASCRIPT_COMPAT option. This makes the following changes + to the way PCRE behaves: + + (a) A lone ] character is dis-allowed (Perl treats it as data). + + (b) A back reference to an unmatched subpattern matches an empty string + (Perl fails the current match path). + + (c) A data ] in a character class must be notated as \] because if the + first data character in a class is ], it defines an empty class. (In + Perl it is not possible to have an empty class.) The empty class [] + never matches; it forces failure and is equivalent to (*FAIL) or (?!). + The negative empty class [^] matches any one character, independently + of the DOTALL setting. + +14. A pattern such as /(?2)[]a()b](abc)/ which had a forward reference to a + non-existent subpattern following a character class starting with ']' and + containing () gave an internal compiling error instead of "reference to + non-existent subpattern". Fortunately, when the pattern did exist, the + compiled code was correct. (When scanning forwards to check for the + existencd of the subpattern, it was treating the data ']' as terminating + the class, so got the count wrong. When actually compiling, the reference + was subsequently set up correctly.) + +15. The "always fail" assertion (?!) is optimzed to (*FAIL) by pcre_compile; + it was being rejected as not supported by pcre_dfa_exec(), even though + other assertions are supported. I have made pcre_dfa_exec() support + (*FAIL). + +16. The implementation of 13c above involved the invention of a new opcode, + OP_ALLANY, which is like OP_ANY but doesn't check the /s flag. Since /s + cannot be changed at match time, I realized I could make a small + improvement to matching performance by compiling OP_ALLANY instead of + OP_ANY for "." when DOTALL was set, and then removing the runtime tests + on the OP_ANY path. + +17. Compiling pcretest on Windows with readline support failed without the + following two fixes: (1) Make the unistd.h include conditional on + HAVE_UNISTD_H; (2) #define isatty and fileno as _isatty and _fileno. + +18. Changed CMakeLists.txt and cmake/FindReadline.cmake to arrange for the + ncurses library to be included for pcretest when ReadLine support is + requested, but also to allow for it to be overridden. This patch came from + Daniel Bergström. + +19. There was a typo in the file ucpinternal.h where f0_rangeflag was defined + as 0x00f00000 instead of 0x00800000. Luckily, this would not have caused + any errors with the current Unicode tables. Thanks to Peter Kankowski for + spotting this. + + Version 7.6 28-Jan-08 --------------------- diff --git a/ext/pcre/pcrelib/HACKING b/ext/pcre/pcrelib/HACKING index c946cd2bd..1f30d4c48 100644 --- a/ext/pcre/pcrelib/HACKING +++ b/ext/pcre/pcrelib/HACKING @@ -125,7 +125,8 @@ Opcodes with no following data These items are all just one byte long OP_END end of pattern - OP_ANY match any character + OP_ANY match any one character other than newline + OP_ALLANY match any one character, including newline OP_ANYBYTE match any single byte, even in UTF-8 mode OP_SOD match start of data: \A OP_SOM, start of match (subject + offset): \G @@ -318,9 +319,12 @@ maximally respectively. All three are followed by LINK_SIZE bytes giving (as a positive number) the offset back to the matching bracket opcode. If a subpattern is quantified such that it is permitted to match zero times, it -is preceded by one of OP_BRAZERO or OP_BRAMINZERO. These are single-byte -opcodes which tell the matcher that skipping this subpattern entirely is a -valid branch. +is preceded by one of OP_BRAZERO, OP_BRAMINZERO, or OP_SKIPZERO. These are +single-byte opcodes that tell the matcher that skipping the following +subpattern entirely is a valid branch. In the case of the first two, not +skipping the pattern is also valid (greedy and non-greedy). The third is used +when a pattern has the quantifier {0,0}. It cannot be entirely discarded, +because it may be called as a subroutine from elsewhere in the regex. A subpattern with an indefinite maximum repetition is replicated in the compiled data its minimum number of times (or once with OP_BRAZERO if the @@ -411,4 +415,4 @@ at compile time, and so does not cause anything to be put into the compiled data. Philip Hazel -August 2007 +April 2008 diff --git a/ext/pcre/pcrelib/NEWS b/ext/pcre/pcrelib/NEWS index d274541ba..43e47b6ed 100644 --- a/ext/pcre/pcrelib/NEWS +++ b/ext/pcre/pcrelib/NEWS @@ -1,6 +1,21 @@ News about PCRE releases ------------------------ + +Release 7.8 05-Sep-08 +--------------------- + +More bug fixes, plus a performance improvement in Unicode character property +lookup. + + +Release 7.7 07-May-08 +--------------------- + +This is once again mainly a bug-fix release, but there are a couple of new +features. + + Release 7.6 28-Jan-08 --------------------- diff --git a/ext/pcre/pcrelib/NON-UNIX-USE b/ext/pcre/pcrelib/NON-UNIX-USE index e6726faaa..bf5c41a5e 100644 --- a/ext/pcre/pcrelib/NON-UNIX-USE +++ b/ext/pcre/pcrelib/NON-UNIX-USE @@ -85,8 +85,6 @@ The following are generic comments about building the PCRE C library "by hand". pcre_internal.h ucp.h - ucpinternal.h - ucptable.h (5) Also ensure that you have the following file, which is #included as source when building a debugging version of PCRE, and is also used by pcretest. @@ -113,7 +111,7 @@ The following are generic comments about building the PCRE C library "by hand". pcre_study.c pcre_tables.c pcre_try_flipped.c - pcre_ucp_searchfuncs.c + pcre_ucd.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c @@ -190,6 +188,17 @@ otherwise the pcre_malloc() and pcre_free() exported functions will be declared __declspec(dllimport), with unwanted results. +CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS + +It is possible to compile programs to use different calling conventions using +MSVC. Search the web for "calling conventions" for more information. To make it +easier to change the calling convention for the exported functions in the +PCRE library, the macro PCRE_CALL_CONVENTION is present in all the external +definitions. It can be set externally when compiling (e.g. in CFLAGS). If it is +not set, it defaults to empty; the default calling convention is then used +(which is what is wanted most of the time). + + COMMENTS ABOUT WIN32 BUILDS (see also "BUILDING PCRE WITH CMAKE" below) There are two ways of building PCRE using the "configure, make, make install" @@ -428,5 +437,5 @@ $! Locale could not be set to fr $! ========================= -Last Updated: 25 January 2008 +Last Updated: 05 September 2008 **** diff --git a/ext/pcre/pcrelib/README b/ext/pcre/pcrelib/README index 98d52f13a..387903893 100644 --- a/ext/pcre/pcrelib/README +++ b/ext/pcre/pcrelib/README @@ -1,9 +1,12 @@ README file for PCRE (Perl-compatible regular expression library) ----------------------------------------------------------------- -The latest release of PCRE is always available from +The latest release of PCRE is always available in three alternative formats +from: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.tar.gz + ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.tar.bz2 + ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-xxx.zip There is a mailing list for discussion about the development of PCRE at @@ -276,6 +279,15 @@ library. You can read more about them in the pcrebuild man page. Note that libreadline is GPL-licenced, so if you distribute a binary of pcretest linked in this way, there may be licensing issues. + Setting this option causes the -lreadline option to be added to the pcretest + build. In many operating environments with a sytem-installed readline + library this is sufficient. However, in some environments (e.g. if an + unmodified distribution version of readline is in use), it may be necessary + to specify something like LIBS="-lncurses" as well. This is because, to quote + the readline INSTALL, "Readline uses the termcap functions, but does not link + with the termcap or curses library itself, allowing applications which link + with readline the to choose an appropriate library." + The "configure" script builds the following files for the basic C library: . Makefile is the makefile that builds the library @@ -631,7 +643,7 @@ The distribution should contain the following files: pcre_study.c ) pcre_tables.c ) pcre_try_flipped.c ) - pcre_ucp_searchfuncs.c ) + pcre_ucd.c ) pcre_valid_utf8.c ) pcre_version.c ) pcre_xclass.c ) @@ -640,9 +652,7 @@ The distribution should contain the following files: pcre.h.in template for pcre.h when built by "configure" pcreposix.h header for the external POSIX wrapper API pcre_internal.h header for internal use - ucp.h ) headers concerned with - ucpinternal.h ) Unicode property handling - ucptable.h ) (this one is the data table) + ucp.h header for Unicode property handling config.h.in template for config.h, which is built by "configure" @@ -716,6 +726,9 @@ The distribution should contain the following files: (D) Auxiliary files for cmake support + cmake/COPYING-CMAKE-SCRIPTS + cmake/FindPackageHandleStandardArgs.cmake + cmake/FindReadline.cmake CMakeLists.txt config-cmake.h.in @@ -740,4 +753,4 @@ The distribution should contain the following files: Philip Hazel Email local part: ph10 Email domain: cam.ac.uk -Last updated: 25 January 2008 +Last updated: 05 September 2008 diff --git a/ext/pcre/pcrelib/config.h b/ext/pcre/pcrelib/config.h index 0b753d686..dc6f26753 100644 --- a/ext/pcre/pcrelib/config.h +++ b/ext/pcre/pcrelib/config.h @@ -132,9 +132,7 @@ them both to 0; an emulation function will be used. */ #endif /* Define to 1 if you have the `strtoll' function. */ -#ifndef HAVE_STRTOLL -#define HAVE_STRTOLL 1 -#endif +/* #undef HAVE_STRTOLL */ /* Define to 1 if you have the `strtoq' function. */ #ifndef HAVE_STRTOQ @@ -251,13 +249,13 @@ them both to 0; an emulation function will be used. */ #define PACKAGE_NAME "PCRE" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PCRE 7.6" +#define PACKAGE_STRING "PCRE 7.8" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "pcre" /* Define to the version of this package. */ -#define PACKAGE_VERSION "7.6" +#define PACKAGE_VERSION "7.8" /* If you are compiling for a system other than a Unix-like system or @@ -310,7 +308,7 @@ them both to 0; an emulation function will be used. */ /* Version number of package */ #ifndef VERSION -#define VERSION "7.6" +#define VERSION "7.8" #endif /* Define to empty if `const' does not conform to ANSI C. */ diff --git a/ext/pcre/pcrelib/dftables.c b/ext/pcre/pcrelib/dftables.c index 63fc7074e..9593e6456 100644 --- a/ext/pcre/pcrelib/dftables.c +++ b/ext/pcre/pcrelib/dftables.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/pcre/pcrelib/doc/pcre.txt b/ext/pcre/pcrelib/doc/pcre.txt index 9be2c6f36..d07bfea00 100644 --- a/ext/pcre/pcrelib/doc/pcre.txt +++ b/ext/pcre/pcrelib/doc/pcre.txt @@ -18,9 +18,11 @@ INTRODUCTION The PCRE library is a set of functions that implement regular expres- sion pattern matching using the same syntax and semantics as Perl, with - just a few differences. (Certain features that appeared in Python and + just a few differences. Certain features that appeared in Python and PCRE before they appeared in Perl are also available using the Python - syntax.) + syntax. There is also some support for certain .NET and Oniguruma syn- + tax items, and there is an option for requesting some minor changes + that give better JavaScript compatibility. The current implementation of PCRE (release 7.x) corresponds approxi- mately with Perl 5.10, including support for UTF-8 encoded strings and @@ -256,8 +258,8 @@ AUTHOR REVISION - Last updated: 09 August 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 12 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -543,6 +545,24 @@ PCRETEST OPTION FOR LIBREADLINE SUPPORT Note that libreadline is GPL-licenced, so if you distribute a binary of pcretest linked in this way, there may be licensing issues. + Setting this option causes the -lreadline option to be added to the + pcretest build. In many operating environments with a sytem-installed + libreadline this is sufficient. However, in some environments (e.g. if + an unmodified distribution version of readline is in use), some extra + configuration may be necessary. The INSTALL file for libreadline says + this: + + "Readline uses the termcap functions, but does not link with the + termcap or curses library itself, allowing applications which link + with readline the to choose an appropriate library." + + If your environment has not been set up so that an appropriate library + is automatically included, you may need to add something like + + LIBS="-ncurses" + + immediately before the configure command. + SEE ALSO @@ -558,8 +578,8 @@ AUTHOR REVISION - Last updated: 18 December 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 13 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -707,29 +727,30 @@ THE ALTERNATIVE MATCHING ALGORITHM tive algorithm moves through the subject string one character at a time, for all active paths through the tree. - 8. None of the backtracking control verbs such as (*PRUNE) are sup- - ported. + 8. Except for (*FAIL), the backtracking control verbs such as (*PRUNE) + are not supported. (*FAIL) is supported, and behaves like a failing + negative assertion. ADVANTAGES OF THE ALTERNATIVE ALGORITHM - Using the alternative matching algorithm provides the following advan- + Using the alternative matching algorithm provides the following advan- tages: 1. All possible matches (at a single point in the subject) are automat- - ically found, and in particular, the longest match is found. To find + ically found, and in particular, the longest match is found. To find more than one match using the standard algorithm, you have to do kludgy things with callouts. - 2. There is much better support for partial matching. The restrictions - on the content of the pattern that apply when using the standard algo- - rithm for partial matching do not apply to the alternative algorithm. - For non-anchored patterns, the starting position of a partial match is + 2. There is much better support for partial matching. The restrictions + on the content of the pattern that apply when using the standard algo- + rithm for partial matching do not apply to the alternative algorithm. + For non-anchored patterns, the starting position of a partial match is available. - 3. Because the alternative algorithm scans the subject string just - once, and never needs to backtrack, it is possible to pass very long - subject strings to the matching function in several pieces, checking + 3. Because the alternative algorithm scans the subject string just + once, and never needs to backtrack, it is possible to pass very long + subject strings to the matching function in several pieces, checking for partial matching each time. @@ -737,8 +758,8 @@ DISADVANTAGES OF THE ALTERNATIVE ALGORITHM The alternative algorithm suffers from a number of disadvantages: - 1. It is substantially slower than the standard algorithm. This is - partly because it has to search for all possible matches, but is also + 1. It is substantially slower than the standard algorithm. This is + partly because it has to search for all possible matches, but is also because it is less susceptible to optimization. 2. Capturing parentheses and back references are not supported. @@ -756,8 +777,8 @@ AUTHOR REVISION - Last updated: 08 August 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 19 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -1244,21 +1265,38 @@ COMPILING A PATTERN before or at the first newline in the subject string, though the matched text may continue over the newline. + PCRE_JAVASCRIPT_COMPAT + + If this option is set, PCRE's behaviour is changed in some ways so that + it is compatible with JavaScript rather than Perl. The changes are as + follows: + + (1) A lone closing square bracket in a pattern causes a compile-time + error, because this is illegal in JavaScript (by default it is treated + as a data character). Thus, the pattern AB]CD becomes illegal when this + option is set. + + (2) At run time, a back reference to an unset subpattern group matches + an empty string (by default this causes the current matching alterna- + tive to fail). A pattern such as (\1)(a) succeeds when this option is + set (assuming it can find an "a" in the subject), whereas it fails by + default, for Perl compatibility. + PCRE_MULTILINE - By default, PCRE treats the subject string as consisting of a single - line of characters (even if it actually contains newlines). The "start - of line" metacharacter (^) matches only at the start of the string, - while the "end of line" metacharacter ($) matches only at the end of + By default, PCRE treats the subject string as consisting of a single + line of characters (even if it actually contains newlines). The "start + of line" metacharacter (^) matches only at the start of the string, + while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless PCRE_DOLLAR_ENDONLY is set). This is the same as Perl. - When PCRE_MULTILINE it is set, the "start of line" and "end of line" - constructs match immediately following or immediately before internal - newlines in the subject string, respectively, as well as at the very - start and end. This is equivalent to Perl's /m option, and it can be + When PCRE_MULTILINE it is set, the "start of line" and "end of line" + constructs match immediately following or immediately before internal + newlines in the subject string, respectively, as well as at the very + start and end. This is equivalent to Perl's /m option, and it can be changed within a pattern by a (?m) option setting. If there are no new- - lines in a subject string, or no occurrences of ^ or $ in a pattern, + lines in a subject string, or no occurrences of ^ or $ in a pattern, setting PCRE_MULTILINE has no effect. PCRE_NEWLINE_CR @@ -1267,81 +1305,81 @@ COMPILING A PATTERN PCRE_NEWLINE_ANYCRLF PCRE_NEWLINE_ANY - These options override the default newline definition that was chosen - when PCRE was built. Setting the first or the second specifies that a - newline is indicated by a single character (CR or LF, respectively). - Setting PCRE_NEWLINE_CRLF specifies that a newline is indicated by the - two-character CRLF sequence. Setting PCRE_NEWLINE_ANYCRLF specifies + These options override the default newline definition that was chosen + when PCRE was built. Setting the first or the second specifies that a + newline is indicated by a single character (CR or LF, respectively). + Setting PCRE_NEWLINE_CRLF specifies that a newline is indicated by the + two-character CRLF sequence. Setting PCRE_NEWLINE_ANYCRLF specifies that any of the three preceding sequences should be recognized. Setting - PCRE_NEWLINE_ANY specifies that any Unicode newline sequence should be + PCRE_NEWLINE_ANY specifies that any Unicode newline sequence should be recognized. The Unicode newline sequences are the three just mentioned, - plus the single characters VT (vertical tab, U+000B), FF (formfeed, - U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and PS - (paragraph separator, U+2029). The last two are recognized only in + plus the single characters VT (vertical tab, U+000B), FF (formfeed, + U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and PS + (paragraph separator, U+2029). The last two are recognized only in UTF-8 mode. - The newline setting in the options word uses three bits that are + The newline setting in the options word uses three bits that are treated as a number, giving eight possibilities. Currently only six are - used (default plus the five values above). This means that if you set - more than one newline option, the combination may or may not be sensi- + used (default plus the five values above). This means that if you set + more than one newline option, the combination may or may not be sensi- ble. For example, PCRE_NEWLINE_CR with PCRE_NEWLINE_LF is equivalent to - PCRE_NEWLINE_CRLF, but other combinations may yield unused numbers and + PCRE_NEWLINE_CRLF, but other combinations may yield unused numbers and cause an error. - The only time that a line break is specially recognized when compiling - a pattern is if PCRE_EXTENDED is set, and an unescaped # outside a - character class is encountered. This indicates a comment that lasts - until after the next line break sequence. In other circumstances, line - break sequences are treated as literal data, except that in + The only time that a line break is specially recognized when compiling + a pattern is if PCRE_EXTENDED is set, and an unescaped # outside a + character class is encountered. This indicates a comment that lasts + until after the next line break sequence. In other circumstances, line + break sequences are treated as literal data, except that in PCRE_EXTENDED mode, both CR and LF are treated as whitespace characters and are therefore ignored. The newline option that is set at compile time becomes the default that - is used for pcre_exec() and pcre_dfa_exec(), but it can be overridden. + is used for pcre_exec() and pcre_dfa_exec(), but it can be overridden. PCRE_NO_AUTO_CAPTURE If this option is set, it disables the use of numbered capturing paren- - theses in the pattern. Any opening parenthesis that is not followed by - ? behaves as if it were followed by ?: but named parentheses can still - be used for capturing (and they acquire numbers in the usual way). + theses in the pattern. Any opening parenthesis that is not followed by + ? behaves as if it were followed by ?: but named parentheses can still + be used for capturing (and they acquire numbers in the usual way). There is no equivalent of this option in Perl. PCRE_UNGREEDY - This option inverts the "greediness" of the quantifiers so that they - are not greedy by default, but become greedy if followed by "?". It is - not compatible with Perl. It can also be set by a (?U) option setting + This option inverts the "greediness" of the quantifiers so that they + are not greedy by default, but become greedy if followed by "?". It is + not compatible with Perl. It can also be set by a (?U) option setting within the pattern. PCRE_UTF8 - This option causes PCRE to regard both the pattern and the subject as - strings of UTF-8 characters instead of single-byte character strings. - However, it is available only when PCRE is built to include UTF-8 sup- - port. If not, the use of this option provokes an error. Details of how - this option changes the behaviour of PCRE are given in the section on + This option causes PCRE to regard both the pattern and the subject as + strings of UTF-8 characters instead of single-byte character strings. + However, it is available only when PCRE is built to include UTF-8 sup- + port. If not, the use of this option provokes an error. Details of how + this option changes the behaviour of PCRE are given in the section on UTF-8 support in the main pcre page. PCRE_NO_UTF8_CHECK When PCRE_UTF8 is set, the validity of the pattern as a UTF-8 string is - automatically checked. There is a discussion about the validity of - UTF-8 strings in the main pcre page. If an invalid UTF-8 sequence of - bytes is found, pcre_compile() returns an error. If you already know + automatically checked. There is a discussion about the validity of + UTF-8 strings in the main pcre page. If an invalid UTF-8 sequence of + bytes is found, pcre_compile() returns an error. If you already know that your pattern is valid, and you want to skip this check for perfor- - mance reasons, you can set the PCRE_NO_UTF8_CHECK option. When it is - set, the effect of passing an invalid UTF-8 string as a pattern is - undefined. It may cause your program to crash. Note that this option - can also be passed to pcre_exec() and pcre_dfa_exec(), to suppress the + mance reasons, you can set the PCRE_NO_UTF8_CHECK option. When it is + set, the effect of passing an invalid UTF-8 string as a pattern is + undefined. It may cause your program to crash. Note that this option + can also be passed to pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity checking of subject strings. COMPILATION ERROR CODES - The following table lists the error codes than may be returned by - pcre_compile2(), along with the error messages that may be returned by - both compiling functions. As PCRE has developed, some error codes have + The following table lists the error codes than may be returned by + pcre_compile2(), along with the error messages that may be returned by + both compiling functions. As PCRE has developed, some error codes have fallen out of use. To avoid confusion, they have not been re-used. 0 no error @@ -1397,21 +1435,22 @@ COMPILATION ERROR CODES 50 [this code is not in use] 51 octal value is greater than \377 (not in UTF-8 mode) 52 internal error: overran compiling workspace - 53 internal error: previously-checked referenced subpattern not + 53 internal error: previously-checked referenced subpattern not found 54 DEFINE group contains more than one branch 55 repeating a DEFINE group is not allowed 56 inconsistent NEWLINE options - 57 \g is not followed by a braced name or an optionally braced - non-zero number - 58 (?+ or (?- or (?(+ or (?(- must be followed by a non-zero number + 57 \g is not followed by a braced, angle-bracketed, or quoted + name/number or by a plain number + 58 a numbered reference must not be zero 59 (*VERB) with an argument is not supported 60 (*VERB) not recognized 61 number is too big 62 subpattern name expected 63 digit expected after (?+ + 64 ] is an invalid data character in JavaScript compatibility mode - The numbers 32 and 10000 in errors 48 and 49 are defaults; different + The numbers 32 and 10000 in errors 48 and 49 are defaults; different values may be used if the limits were changed when PCRE was built. @@ -1420,32 +1459,32 @@ STUDYING A PATTERN pcre_extra *pcre_study(const pcre *code, int options const char **errptr); - If a compiled pattern is going to be used several times, it is worth + If a compiled pattern is going to be used several times, it is worth spending more time analyzing it in order to speed up the time taken for - matching. The function pcre_study() takes a pointer to a compiled pat- + matching. The function pcre_study() takes a pointer to a compiled pat- tern as its first argument. If studying the pattern produces additional - information that will help speed up matching, pcre_study() returns a - pointer to a pcre_extra block, in which the study_data field points to + information that will help speed up matching, pcre_study() returns a + pointer to a pcre_extra block, in which the study_data field points to the results of the study. The returned value from pcre_study() can be passed directly to - pcre_exec(). However, a pcre_extra block also contains other fields - that can be set by the caller before the block is passed; these are + pcre_exec(). However, a pcre_extra block also contains other fields + that can be set by the caller before the block is passed; these are described below in the section on matching a pattern. - If studying the pattern does not produce any additional information + If studying the pattern does not produce any additional information pcre_study() returns NULL. In that circumstance, if the calling program - wants to pass any of the other fields to pcre_exec(), it must set up + wants to pass any of the other fields to pcre_exec(), it must set up its own pcre_extra block. - The second argument of pcre_study() contains option bits. At present, + The second argument of pcre_study() contains option bits. At present, no options are defined, and this argument should always be zero. - The third argument for pcre_study() is a pointer for an error message. - If studying succeeds (even if no data is returned), the variable it - points to is set to NULL. Otherwise it is set to point to a textual + The third argument for pcre_study() is a pointer for an error message. + If studying succeeds (even if no data is returned), the variable it + points to is set to NULL. Otherwise it is set to point to a textual error message. This is a static string that is part of the library. You - must not try to free it. You should test the error pointer for NULL + must not try to free it. You should test the error pointer for NULL after calling pcre_study(), to be sure that it has run successfully. This is a typical call to pcre_study(): @@ -1457,62 +1496,62 @@ STUDYING A PATTERN &error); /* set to NULL or points to a message */ At present, studying a pattern is useful only for non-anchored patterns - that do not have a single fixed starting character. A bitmap of possi- + that do not have a single fixed starting character. A bitmap of possi- ble starting bytes is created. LOCALE SUPPORT - PCRE handles caseless matching, and determines whether characters are - letters, digits, or whatever, by reference to a set of tables, indexed - by character value. When running in UTF-8 mode, this applies only to - characters with codes less than 128. Higher-valued codes never match - escapes such as \w or \d, but can be tested with \p if PCRE is built - with Unicode character property support. The use of locales with Uni- - code is discouraged. If you are handling characters with codes greater - than 128, you should either use UTF-8 and Unicode, or use locales, but + PCRE handles caseless matching, and determines whether characters are + letters, digits, or whatever, by reference to a set of tables, indexed + by character value. When running in UTF-8 mode, this applies only to + characters with codes less than 128. Higher-valued codes never match + escapes such as \w or \d, but can be tested with \p if PCRE is built + with Unicode character property support. The use of locales with Uni- + code is discouraged. If you are handling characters with codes greater + than 128, you should either use UTF-8 and Unicode, or use locales, but not try to mix the two. - PCRE contains an internal set of tables that are used when the final - argument of pcre_compile() is NULL. These are sufficient for many + PCRE contains an internal set of tables that are used when the final + argument of pcre_compile() is NULL. These are sufficient for many applications. Normally, the internal tables recognize only ASCII char- acters. However, when PCRE is built, it is possible to cause the inter- nal tables to be rebuilt in the default "C" locale of the local system, which may cause them to be different. - The internal tables can always be overridden by tables supplied by the + The internal tables can always be overridden by tables supplied by the application that calls PCRE. These may be created in a different locale - from the default. As more and more applications change to using Uni- + from the default. As more and more applications change to using Uni- code, the need for this locale support is expected to die away. - External tables are built by calling the pcre_maketables() function, - which has no arguments, in the relevant locale. The result can then be - passed to pcre_compile() or pcre_exec() as often as necessary. For - example, to build and use tables that are appropriate for the French - locale (where accented characters with values greater than 128 are + External tables are built by calling the pcre_maketables() function, + which has no arguments, in the relevant locale. The result can then be + passed to pcre_compile() or pcre_exec() as often as necessary. For + example, to build and use tables that are appropriate for the French + locale (where accented characters with values greater than 128 are treated as letters), the following code could be used: setlocale(LC_CTYPE, "fr_FR"); tables = pcre_maketables(); re = pcre_compile(..., tables); - The locale name "fr_FR" is used on Linux and other Unix-like systems; + The locale name "fr_FR" is used on Linux and other Unix-like systems; if you are using Windows, the name for the French locale is "french". - When pcre_maketables() runs, the tables are built in memory that is - obtained via pcre_malloc. It is the caller's responsibility to ensure - that the memory containing the tables remains available for as long as + When pcre_maketables() runs, the tables are built in memory that is + obtained via pcre_malloc. It is the caller's responsibility to ensure + that the memory containing the tables remains available for as long as it is needed. The pointer that is passed to pcre_compile() is saved with the compiled - pattern, and the same tables are used via this pointer by pcre_study() + pattern, and the same tables are used via this pointer by pcre_study() and normally also by pcre_exec(). Thus, by default, for any single pat- tern, compilation, studying and matching all happen in the same locale, but different patterns can be compiled in different locales. - It is possible to pass a table pointer or NULL (indicating the use of - the internal tables) to pcre_exec(). Although not intended for this - purpose, this facility could be used to match a pattern in a different + It is possible to pass a table pointer or NULL (indicating the use of + the internal tables) to pcre_exec(). Although not intended for this + purpose, this facility could be used to match a pattern in a different locale from the one in which it was compiled. Passing table pointers at run time is discussed below in the section on matching a pattern. @@ -1522,15 +1561,15 @@ INFORMATION ABOUT A PATTERN int pcre_fullinfo(const pcre *code, const pcre_extra *extra, int what, void *where); - The pcre_fullinfo() function returns information about a compiled pat- + The pcre_fullinfo() function returns information about a compiled pat- tern. It replaces the obsolete pcre_info() function, which is neverthe- less retained for backwards compability (and is documented below). - The first argument for pcre_fullinfo() is a pointer to the compiled - pattern. The second argument is the result of pcre_study(), or NULL if - the pattern was not studied. The third argument specifies which piece - of information is required, and the fourth argument is a pointer to a - variable to receive the data. The yield of the function is zero for + The first argument for pcre_fullinfo() is a pointer to the compiled + pattern. The second argument is the result of pcre_study(), or NULL if + the pattern was not studied. The third argument specifies which piece + of information is required, and the fourth argument is a pointer to a + variable to receive the data. The yield of the function is zero for success, or one of the following negative numbers: PCRE_ERROR_NULL the argument code was NULL @@ -1538,9 +1577,9 @@ INFORMATION ABOUT A PATTERN PCRE_ERROR_BADMAGIC the "magic number" was not found PCRE_ERROR_BADOPTION the value of what was invalid - The "magic number" is placed at the start of each compiled pattern as - an simple check against passing an arbitrary memory pointer. Here is a - typical call of pcre_fullinfo(), to obtain the length of the compiled + The "magic number" is placed at the start of each compiled pattern as + an simple check against passing an arbitrary memory pointer. Here is a + typical call of pcre_fullinfo(), to obtain the length of the compiled pattern: int rc; @@ -1551,76 +1590,76 @@ INFORMATION ABOUT A PATTERN PCRE_INFO_SIZE, /* what is required */ &length); /* where to put the data */ - The possible values for the third argument are defined in pcre.h, and + The possible values for the third argument are defined in pcre.h, and are as follows: PCRE_INFO_BACKREFMAX - Return the number of the highest back reference in the pattern. The - fourth argument should point to an int variable. Zero is returned if + Return the number of the highest back reference in the pattern. The + fourth argument should point to an int variable. Zero is returned if there are no back references. PCRE_INFO_CAPTURECOUNT - Return the number of capturing subpatterns in the pattern. The fourth + Return the number of capturing subpatterns in the pattern. The fourth argument should point to an int variable. PCRE_INFO_DEFAULT_TABLES - Return a pointer to the internal default character tables within PCRE. - The fourth argument should point to an unsigned char * variable. This + Return a pointer to the internal default character tables within PCRE. + The fourth argument should point to an unsigned char * variable. This information call is provided for internal use by the pcre_study() func- - tion. External callers can cause PCRE to use its internal tables by + tion. External callers can cause PCRE to use its internal tables by passing a NULL table pointer. PCRE_INFO_FIRSTBYTE - Return information about the first byte of any matched string, for a - non-anchored pattern. The fourth argument should point to an int vari- - able. (This option used to be called PCRE_INFO_FIRSTCHAR; the old name + Return information about the first byte of any matched string, for a + non-anchored pattern. The fourth argument should point to an int vari- + able. (This option used to be called PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards compatibility.) - If there is a fixed first byte, for example, from a pattern such as + If there is a fixed first byte, for example, from a pattern such as (cat|cow|coyote), its value is returned. Otherwise, if either - (a) the pattern was compiled with the PCRE_MULTILINE option, and every + (a) the pattern was compiled with the PCRE_MULTILINE option, and every branch starts with "^", or (b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not set (if it were set, the pattern would be anchored), - -1 is returned, indicating that the pattern matches only at the start - of a subject string or after any newline within the string. Otherwise + -1 is returned, indicating that the pattern matches only at the start + of a subject string or after any newline within the string. Otherwise -2 is returned. For anchored patterns, -2 is returned. PCRE_INFO_FIRSTTABLE - If the pattern was studied, and this resulted in the construction of a + If the pattern was studied, and this resulted in the construction of a 256-bit table indicating a fixed set of bytes for the first byte in any - matching string, a pointer to the table is returned. Otherwise NULL is - returned. The fourth argument should point to an unsigned char * vari- + matching string, a pointer to the table is returned. Otherwise NULL is + returned. The fourth argument should point to an unsigned char * vari- able. PCRE_INFO_HASCRORLF - Return 1 if the pattern contains any explicit matches for CR or LF - characters, otherwise 0. The fourth argument should point to an int - variable. An explicit match is either a literal CR or LF character, or + Return 1 if the pattern contains any explicit matches for CR or LF + characters, otherwise 0. The fourth argument should point to an int + variable. An explicit match is either a literal CR or LF character, or \r or \n. PCRE_INFO_JCHANGED - Return 1 if the (?J) or (?-J) option setting is used in the pattern, - otherwise 0. The fourth argument should point to an int variable. (?J) + Return 1 if the (?J) or (?-J) option setting is used in the pattern, + otherwise 0. The fourth argument should point to an int variable. (?J) and (?-J) set and unset the local PCRE_DUPNAMES option, respectively. PCRE_INFO_LASTLITERAL - Return the value of the rightmost literal byte that must exist in any - matched string, other than at its start, if such a byte has been + Return the value of the rightmost literal byte that must exist in any + matched string, other than at its start, if such a byte has been recorded. The fourth argument should point to an int variable. If there - is no such byte, -1 is returned. For anchored patterns, a last literal - byte is recorded only if it follows something of variable length. For + is no such byte, -1 is returned. For anchored patterns, a last literal + byte is recorded only if it follows something of variable length. For example, for the pattern /^a\d+z\d+/ the returned value is "z", but for /^a\dz\d/ the returned value is -1. @@ -1628,34 +1667,34 @@ INFORMATION ABOUT A PATTERN PCRE_INFO_NAMEENTRYSIZE PCRE_INFO_NAMETABLE - PCRE supports the use of named as well as numbered capturing parenthe- - ses. The names are just an additional way of identifying the parenthe- + PCRE supports the use of named as well as numbered capturing parenthe- + ses. The names are just an additional way of identifying the parenthe- ses, which still acquire numbers. Several convenience functions such as - pcre_get_named_substring() are provided for extracting captured sub- - strings by name. It is also possible to extract the data directly, by - first converting the name to a number in order to access the correct + pcre_get_named_substring() are provided for extracting captured sub- + strings by name. It is also possible to extract the data directly, by + first converting the name to a number in order to access the correct pointers in the output vector (described with pcre_exec() below). To do - the conversion, you need to use the name-to-number map, which is + the conversion, you need to use the name-to-number map, which is described by these three values. The map consists of a number of fixed-size entries. PCRE_INFO_NAMECOUNT gives the number of entries, and PCRE_INFO_NAMEENTRYSIZE gives the size - of each entry; both of these return an int value. The entry size - depends on the length of the longest name. PCRE_INFO_NAMETABLE returns - a pointer to the first entry of the table (a pointer to char). The + of each entry; both of these return an int value. The entry size + depends on the length of the longest name. PCRE_INFO_NAMETABLE returns + a pointer to the first entry of the table (a pointer to char). The first two bytes of each entry are the number of the capturing parenthe- - sis, most significant byte first. The rest of the entry is the corre- - sponding name, zero terminated. The names are in alphabetical order. + sis, most significant byte first. The rest of the entry is the corre- + sponding name, zero terminated. The names are in alphabetical order. When PCRE_DUPNAMES is set, duplicate names are in order of their paren- - theses numbers. For example, consider the following pattern (assume - PCRE_EXTENDED is set, so white space - including newlines - is + theses numbers. For example, consider the following pattern (assume + PCRE_EXTENDED is set, so white space - including newlines - is ignored): (? (?(\d\d)?\d\d) - (?\d\d) - (?\d\d) ) - There are four named subpatterns, so the table has four entries, and - each entry in the table is eight bytes long. The table is as follows, + There are four named subpatterns, so the table has four entries, and + each entry in the table is eight bytes long. The table is as follows, with non-printing bytes shows in hexadecimal, and undefined bytes shown as ??: @@ -1664,29 +1703,29 @@ INFORMATION ABOUT A PATTERN 00 04 m o n t h 00 00 02 y e a r 00 ?? - When writing code to extract data from named subpatterns using the - name-to-number map, remember that the length of the entries is likely + When writing code to extract data from named subpatterns using the + name-to-number map, remember that the length of the entries is likely to be different for each compiled pattern. PCRE_INFO_OKPARTIAL - Return 1 if the pattern can be used for partial matching, otherwise 0. - The fourth argument should point to an int variable. The pcrepartial - documentation lists the restrictions that apply to patterns when par- + Return 1 if the pattern can be used for partial matching, otherwise 0. + The fourth argument should point to an int variable. The pcrepartial + documentation lists the restrictions that apply to patterns when par- tial matching is used. PCRE_INFO_OPTIONS - Return a copy of the options with which the pattern was compiled. The - fourth argument should point to an unsigned long int variable. These + Return a copy of the options with which the pattern was compiled. The + fourth argument should point to an unsigned long int variable. These option bits are those specified in the call to pcre_compile(), modified by any top-level option settings at the start of the pattern itself. In - other words, they are the options that will be in force when matching - starts. For example, if the pattern /(?im)abc(?-i)d/ is compiled with - the PCRE_EXTENDED option, the result is PCRE_CASELESS, PCRE_MULTILINE, + other words, they are the options that will be in force when matching + starts. For example, if the pattern /(?im)abc(?-i)d/ is compiled with + the PCRE_EXTENDED option, the result is PCRE_CASELESS, PCRE_MULTILINE, and PCRE_EXTENDED. - A pattern is automatically anchored by PCRE if all of its top-level + A pattern is automatically anchored by PCRE if all of its top-level alternatives begin with one of the following: ^ unless PCRE_MULTILINE is set @@ -1700,7 +1739,7 @@ INFORMATION ABOUT A PATTERN PCRE_INFO_SIZE - Return the size of the compiled pattern, that is, the value that was + Return the size of the compiled pattern, that is, the value that was passed as the argument to pcre_malloc() when PCRE was getting memory in which to place the compiled data. The fourth argument should point to a size_t variable. @@ -1708,9 +1747,9 @@ INFORMATION ABOUT A PATTERN PCRE_INFO_STUDYSIZE Return the size of the data block pointed to by the study_data field in - a pcre_extra block. That is, it is the value that was passed to + a pcre_extra block. That is, it is the value that was passed to pcre_malloc() when PCRE was getting memory into which to place the data - created by pcre_study(). The fourth argument should point to a size_t + created by pcre_study(). The fourth argument should point to a size_t variable. @@ -1718,21 +1757,21 @@ OBSOLETE INFO FUNCTION int pcre_info(const pcre *code, int *optptr, int *firstcharptr); - The pcre_info() function is now obsolete because its interface is too - restrictive to return all the available data about a compiled pattern. - New programs should use pcre_fullinfo() instead. The yield of - pcre_info() is the number of capturing subpatterns, or one of the fol- + The pcre_info() function is now obsolete because its interface is too + restrictive to return all the available data about a compiled pattern. + New programs should use pcre_fullinfo() instead. The yield of + pcre_info() is the number of capturing subpatterns, or one of the fol- lowing negative numbers: PCRE_ERROR_NULL the argument code was NULL PCRE_ERROR_BADMAGIC the "magic number" was not found - If the optptr argument is not NULL, a copy of the options with which - the pattern was compiled is placed in the integer it points to (see + If the optptr argument is not NULL, a copy of the options with which + the pattern was compiled is placed in the integer it points to (see PCRE_INFO_OPTIONS above). - If the pattern is not anchored and the firstcharptr argument is not - NULL, it is used to pass back information about the first character of + If the pattern is not anchored and the firstcharptr argument is not + NULL, it is used to pass back information about the first character of any matched string (see PCRE_INFO_FIRSTBYTE above). @@ -1740,21 +1779,21 @@ REFERENCE COUNTS int pcre_refcount(pcre *code, int adjust); - The pcre_refcount() function is used to maintain a reference count in + The pcre_refcount() function is used to maintain a reference count in the data block that contains a compiled pattern. It is provided for the - benefit of applications that operate in an object-oriented manner, + benefit of applications that operate in an object-oriented manner, where different parts of the application may be using the same compiled pattern, but you want to free the block when they are all done. When a pattern is compiled, the reference count field is initialized to - zero. It is changed only by calling this function, whose action is to - add the adjust value (which may be positive or negative) to it. The + zero. It is changed only by calling this function, whose action is to + add the adjust value (which may be positive or negative) to it. The yield of the function is the new value. However, the value of the count - is constrained to lie between 0 and 65535, inclusive. If the new value + is constrained to lie between 0 and 65535, inclusive. If the new value is outside these limits, it is forced to the appropriate limit value. - Except when it is zero, the reference count is not correctly preserved - if a pattern is compiled on one host and then transferred to a host + Except when it is zero, the reference count is not correctly preserved + if a pattern is compiled on one host and then transferred to a host whose byte-order is different. (This seems a highly unlikely scenario.) @@ -1764,18 +1803,18 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION const char *subject, int length, int startoffset, int options, int *ovector, int ovecsize); - The function pcre_exec() is called to match a subject string against a - compiled pattern, which is passed in the code argument. If the pattern + The function pcre_exec() is called to match a subject string against a + compiled pattern, which is passed in the code argument. If the pattern has been studied, the result of the study should be passed in the extra - argument. This function is the main matching facility of the library, + argument. This function is the main matching facility of the library, and it operates in a Perl-like manner. For specialist use there is also - an alternative matching function, which is described below in the sec- + an alternative matching function, which is described below in the sec- tion about the pcre_dfa_exec() function. - In most applications, the pattern will have been compiled (and option- - ally studied) in the same process that calls pcre_exec(). However, it + In most applications, the pattern will have been compiled (and option- + ally studied) in the same process that calls pcre_exec(). However, it is possible to save compiled patterns and study data, and then use them - later in different processes, possibly even on different hosts. For a + later in different processes, possibly even on different hosts. For a discussion about this, see the pcreprecompile documentation. Here is an example of a simple call to pcre_exec(): @@ -1794,10 +1833,10 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION Extra data for pcre_exec() - If the extra argument is not NULL, it must point to a pcre_extra data - block. The pcre_study() function returns such a block (when it doesn't - return NULL), but you can also create one for yourself, and pass addi- - tional information in it. The pcre_extra block contains the following + If the extra argument is not NULL, it must point to a pcre_extra data + block. The pcre_study() function returns such a block (when it doesn't + return NULL), but you can also create one for yourself, and pass addi- + tional information in it. The pcre_extra block contains the following fields (not necessarily in this order): unsigned long int flags; @@ -1807,7 +1846,7 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION void *callout_data; const unsigned char *tables; - The flags field is a bitmap that specifies which of the other fields + The flags field is a bitmap that specifies which of the other fields are set. The flag bits are: PCRE_EXTRA_STUDY_DATA @@ -1816,83 +1855,83 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION PCRE_EXTRA_CALLOUT_DATA PCRE_EXTRA_TABLES - Other flag bits should be set to zero. The study_data field is set in - the pcre_extra block that is returned by pcre_study(), together with + Other flag bits should be set to zero. The study_data field is set in + the pcre_extra block that is returned by pcre_study(), together with the appropriate flag bit. You should not set this yourself, but you may - add to the block by setting the other fields and their corresponding + add to the block by setting the other fields and their corresponding flag bits. The match_limit field provides a means of preventing PCRE from using up - a vast amount of resources when running patterns that are not going to - match, but which have a very large number of possibilities in their - search trees. The classic example is the use of nested unlimited + a vast amount of resources when running patterns that are not going to + match, but which have a very large number of possibilities in their + search trees. The classic example is the use of nested unlimited repeats. - Internally, PCRE uses a function called match() which it calls repeat- - edly (sometimes recursively). The limit set by match_limit is imposed - on the number of times this function is called during a match, which - has the effect of limiting the amount of backtracking that can take + Internally, PCRE uses a function called match() which it calls repeat- + edly (sometimes recursively). The limit set by match_limit is imposed + on the number of times this function is called during a match, which + has the effect of limiting the amount of backtracking that can take place. For patterns that are not anchored, the count restarts from zero for each position in the subject string. - The default value for the limit can be set when PCRE is built; the - default default is 10 million, which handles all but the most extreme - cases. You can override the default by suppling pcre_exec() with a - pcre_extra block in which match_limit is set, and - PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is + The default value for the limit can be set when PCRE is built; the + default default is 10 million, which handles all but the most extreme + cases. You can override the default by suppling pcre_exec() with a + pcre_extra block in which match_limit is set, and + PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is exceeded, pcre_exec() returns PCRE_ERROR_MATCHLIMIT. - The match_limit_recursion field is similar to match_limit, but instead + The match_limit_recursion field is similar to match_limit, but instead of limiting the total number of times that match() is called, it limits - the depth of recursion. The recursion depth is a smaller number than - the total number of calls, because not all calls to match() are recur- + the depth of recursion. The recursion depth is a smaller number than + the total number of calls, because not all calls to match() are recur- sive. This limit is of use only if it is set smaller than match_limit. - Limiting the recursion depth limits the amount of stack that can be + Limiting the recursion depth limits the amount of stack that can be used, or, when PCRE has been compiled to use memory on the heap instead of the stack, the amount of heap memory that can be used. - The default value for match_limit_recursion can be set when PCRE is - built; the default default is the same value as the default for - match_limit. You can override the default by suppling pcre_exec() with - a pcre_extra block in which match_limit_recursion is set, and - PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the flags field. If the + The default value for match_limit_recursion can be set when PCRE is + built; the default default is the same value as the default for + match_limit. You can override the default by suppling pcre_exec() with + a pcre_extra block in which match_limit_recursion is set, and + PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the flags field. If the limit is exceeded, pcre_exec() returns PCRE_ERROR_RECURSIONLIMIT. - The pcre_callout field is used in conjunction with the "callout" fea- + The pcre_callout field is used in conjunction with the "callout" fea- ture, which is described in the pcrecallout documentation. - The tables field is used to pass a character tables pointer to - pcre_exec(); this overrides the value that is stored with the compiled - pattern. A non-NULL value is stored with the compiled pattern only if - custom tables were supplied to pcre_compile() via its tableptr argu- + The tables field is used to pass a character tables pointer to + pcre_exec(); this overrides the value that is stored with the compiled + pattern. A non-NULL value is stored with the compiled pattern only if + custom tables were supplied to pcre_compile() via its tableptr argu- ment. If NULL is passed to pcre_exec() using this mechanism, it forces - PCRE's internal tables to be used. This facility is helpful when re- - using patterns that have been saved after compiling with an external - set of tables, because the external tables might be at a different - address when pcre_exec() is called. See the pcreprecompile documenta- + PCRE's internal tables to be used. This facility is helpful when re- + using patterns that have been saved after compiling with an external + set of tables, because the external tables might be at a different + address when pcre_exec() is called. See the pcreprecompile documenta- tion for a discussion of saving compiled patterns for later use. Option bits for pcre_exec() - The unused bits of the options argument for pcre_exec() must be zero. - The only bits that may be set are PCRE_ANCHORED, PCRE_NEWLINE_xxx, + The unused bits of the options argument for pcre_exec() must be zero. + The only bits that may be set are PCRE_ANCHORED, PCRE_NEWLINE_xxx, PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK and PCRE_PARTIAL. PCRE_ANCHORED - The PCRE_ANCHORED option limits pcre_exec() to matching at the first - matching position. If a pattern was compiled with PCRE_ANCHORED, or - turned out to be anchored by virtue of its contents, it cannot be made + The PCRE_ANCHORED option limits pcre_exec() to matching at the first + matching position. If a pattern was compiled with PCRE_ANCHORED, or + turned out to be anchored by virtue of its contents, it cannot be made unachored at matching time. PCRE_BSR_ANYCRLF PCRE_BSR_UNICODE These options (which are mutually exclusive) control what the \R escape - sequence matches. The choice is either to match only CR, LF, or CRLF, - or to match any Unicode newline sequence. These options override the + sequence matches. The choice is either to match only CR, LF, or CRLF, + or to match any Unicode newline sequence. These options override the choice that was made or defaulted when the pattern was compiled. PCRE_NEWLINE_CR @@ -1901,118 +1940,119 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION PCRE_NEWLINE_ANYCRLF PCRE_NEWLINE_ANY - These options override the newline definition that was chosen or - defaulted when the pattern was compiled. For details, see the descrip- - tion of pcre_compile() above. During matching, the newline choice - affects the behaviour of the dot, circumflex, and dollar metacharac- - ters. It may also alter the way the match position is advanced after a + These options override the newline definition that was chosen or + defaulted when the pattern was compiled. For details, see the descrip- + tion of pcre_compile() above. During matching, the newline choice + affects the behaviour of the dot, circumflex, and dollar metacharac- + ters. It may also alter the way the match position is advanced after a match failure for an unanchored pattern. - When PCRE_NEWLINE_CRLF, PCRE_NEWLINE_ANYCRLF, or PCRE_NEWLINE_ANY is - set, and a match attempt for an unanchored pattern fails when the cur- - rent position is at a CRLF sequence, and the pattern contains no - explicit matches for CR or LF characters, the match position is + When PCRE_NEWLINE_CRLF, PCRE_NEWLINE_ANYCRLF, or PCRE_NEWLINE_ANY is + set, and a match attempt for an unanchored pattern fails when the cur- + rent position is at a CRLF sequence, and the pattern contains no + explicit matches for CR or LF characters, the match position is advanced by two characters instead of one, in other words, to after the CRLF. The above rule is a compromise that makes the most common cases work as - expected. For example, if the pattern is .+A (and the PCRE_DOTALL + expected. For example, if the pattern is .+A (and the PCRE_DOTALL option is not set), it does not match the string "\r\nA" because, after - failing at the start, it skips both the CR and the LF before retrying. - However, the pattern [\r\n]A does match that string, because it con- + failing at the start, it skips both the CR and the LF before retrying. + However, the pattern [\r\n]A does match that string, because it con- tains an explicit CR or LF reference, and so advances only by one char- acter after the first failure. An explicit match for CR of LF is either a literal appearance of one of - those characters, or one of the \r or \n escape sequences. Implicit - matches such as [^X] do not count, nor does \s (which includes CR and + those characters, or one of the \r or \n escape sequences. Implicit + matches such as [^X] do not count, nor does \s (which includes CR and LF in the characters that it matches). - Notwithstanding the above, anomalous effects may still occur when CRLF + Notwithstanding the above, anomalous effects may still occur when CRLF is a valid newline sequence and explicit \r or \n escapes appear in the pattern. PCRE_NOTBOL This option specifies that first character of the subject string is not - the beginning of a line, so the circumflex metacharacter should not - match before it. Setting this without PCRE_MULTILINE (at compile time) - causes circumflex never to match. This option affects only the behav- + the beginning of a line, so the circumflex metacharacter should not + match before it. Setting this without PCRE_MULTILINE (at compile time) + causes circumflex never to match. This option affects only the behav- iour of the circumflex metacharacter. It does not affect \A. PCRE_NOTEOL This option specifies that the end of the subject string is not the end - of a line, so the dollar metacharacter should not match it nor (except - in multiline mode) a newline immediately before it. Setting this with- + of a line, so the dollar metacharacter should not match it nor (except + in multiline mode) a newline immediately before it. Setting this with- out PCRE_MULTILINE (at compile time) causes dollar never to match. This - option affects only the behaviour of the dollar metacharacter. It does + option affects only the behaviour of the dollar metacharacter. It does not affect \Z or \z. PCRE_NOTEMPTY An empty string is not considered to be a valid match if this option is - set. If there are alternatives in the pattern, they are tried. If all - the alternatives match the empty string, the entire match fails. For + set. If there are alternatives in the pattern, they are tried. If all + the alternatives match the empty string, the entire match fails. For example, if the pattern a?b? - is applied to a string not beginning with "a" or "b", it matches the - empty string at the start of the subject. With PCRE_NOTEMPTY set, this + is applied to a string not beginning with "a" or "b", it matches the + empty string at the start of the subject. With PCRE_NOTEMPTY set, this match is not valid, so PCRE searches further into the string for occur- rences of "a" or "b". Perl has no direct equivalent of PCRE_NOTEMPTY, but it does make a spe- - cial case of a pattern match of the empty string within its split() - function, and when using the /g modifier. It is possible to emulate + cial case of a pattern match of the empty string within its split() + function, and when using the /g modifier. It is possible to emulate Perl's behaviour after matching a null string by first trying the match again at the same offset with PCRE_NOTEMPTY and PCRE_ANCHORED, and then - if that fails by advancing the starting offset (see below) and trying + if that fails by advancing the starting offset (see below) and trying an ordinary match again. There is some code that demonstrates how to do this in the pcredemo.c sample program. PCRE_NO_UTF8_CHECK When PCRE_UTF8 is set at compile time, the validity of the subject as a - UTF-8 string is automatically checked when pcre_exec() is subsequently - called. The value of startoffset is also checked to ensure that it - points to the start of a UTF-8 character. There is a discussion about - the validity of UTF-8 strings in the section on UTF-8 support in the - main pcre page. If an invalid UTF-8 sequence of bytes is found, - pcre_exec() returns the error PCRE_ERROR_BADUTF8. If startoffset con- + UTF-8 string is automatically checked when pcre_exec() is subsequently + called. The value of startoffset is also checked to ensure that it + points to the start of a UTF-8 character. There is a discussion about + the validity of UTF-8 strings in the section on UTF-8 support in the + main pcre page. If an invalid UTF-8 sequence of bytes is found, + pcre_exec() returns the error PCRE_ERROR_BADUTF8. If startoffset con- tains an invalid value, PCRE_ERROR_BADUTF8_OFFSET is returned. - If you already know that your subject is valid, and you want to skip - these checks for performance reasons, you can set the - PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to - do this for the second and subsequent calls to pcre_exec() if you are - making repeated calls to find all the matches in a single subject - string. However, you should be sure that the value of startoffset - points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is - set, the effect of passing an invalid UTF-8 string as a subject, or a - value of startoffset that does not point to the start of a UTF-8 char- + If you already know that your subject is valid, and you want to skip + these checks for performance reasons, you can set the + PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to + do this for the second and subsequent calls to pcre_exec() if you are + making repeated calls to find all the matches in a single subject + string. However, you should be sure that the value of startoffset + points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is + set, the effect of passing an invalid UTF-8 string as a subject, or a + value of startoffset that does not point to the start of a UTF-8 char- acter, is undefined. Your program may crash. PCRE_PARTIAL - This option turns on the partial matching feature. If the subject - string fails to match the pattern, but at some point during the match- - ing process the end of the subject was reached (that is, the subject - partially matches the pattern and the failure to match occurred only - because there were not enough subject characters), pcre_exec() returns - PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is - used, there are restrictions on what may appear in the pattern. These + This option turns on the partial matching feature. If the subject + string fails to match the pattern, but at some point during the match- + ing process the end of the subject was reached (that is, the subject + partially matches the pattern and the failure to match occurred only + because there were not enough subject characters), pcre_exec() returns + PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is + used, there are restrictions on what may appear in the pattern. These are discussed in the pcrepartial documentation. The string to be matched by pcre_exec() - The subject string is passed to pcre_exec() as a pointer in subject, a - length in length, and a starting byte offset in startoffset. In UTF-8 - mode, the byte offset must point to the start of a UTF-8 character. - Unlike the pattern string, the subject may contain binary zero bytes. - When the starting offset is zero, the search for a match starts at the - beginning of the subject, and this is by far the most common case. + The subject string is passed to pcre_exec() as a pointer in subject, a + length (in bytes) in length, and a starting byte offset in startoffset. + In UTF-8 mode, the byte offset must point to the start of a UTF-8 char- + acter. Unlike the pattern string, the subject may contain binary zero + bytes. When the starting offset is zero, the search for a match starts + at the beginning of the subject, and this is by far the most common + case. A non-zero starting offset is useful when searching for another match in the same subject by calling pcre_exec() again after a previous suc- @@ -2048,70 +2088,73 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION string. PCRE supports several other kinds of parenthesized subpattern that do not cause substrings to be captured. - Captured substrings are returned to the caller via a vector of integer - offsets whose address is passed in ovector. The number of elements in - the vector is passed in ovecsize, which must be a non-negative number. - Note: this argument is NOT the size of ovector in bytes. + Captured substrings are returned to the caller via a vector of integers + whose address is passed in ovector. The number of elements in the vec- + tor is passed in ovecsize, which must be a non-negative number. Note: + this argument is NOT the size of ovector in bytes. The first two-thirds of the vector is used to pass back captured sub- strings, each substring using a pair of integers. The remaining third of the vector is used as workspace by pcre_exec() while matching cap- turing subpatterns, and is not available for passing back information. - The length passed in ovecsize should always be a multiple of three. If + The number passed in ovecsize should always be a multiple of three. If it is not, it is rounded down. When a match is successful, information about captured substrings is returned in pairs of integers, starting at the beginning of ovector, and continuing up to two-thirds of its length at the most. The first - element of a pair is set to the offset of the first character in a sub- - string, and the second is set to the offset of the first character - after the end of a substring. The first pair, ovector[0] and ovec- - tor[1], identify the portion of the subject string matched by the - entire pattern. The next pair is used for the first capturing subpat- - tern, and so on. The value returned by pcre_exec() is one more than the - highest numbered pair that has been set. For example, if two substrings - have been captured, the returned value is 3. If there are no capturing - subpatterns, the return value from a successful match is 1, indicating - that just the first pair of offsets has been set. + element of each pair is set to the byte offset of the first character + in a substring, and the second is set to the byte offset of the first + character after the end of a substring. Note: these values are always + byte offsets, even in UTF-8 mode. They are not character counts. + + The first pair of integers, ovector[0] and ovector[1], identify the + portion of the subject string matched by the entire pattern. The next + pair is used for the first capturing subpattern, and so on. The value + returned by pcre_exec() is one more than the highest numbered pair that + has been set. For example, if two substrings have been captured, the + returned value is 3. If there are no capturing subpatterns, the return + value from a successful match is 1, indicating that just the first pair + of offsets has been set. If a capturing subpattern is matched repeatedly, it is the last portion of the string that it matched that is returned. - If the vector is too small to hold all the captured substring offsets, + If the vector is too small to hold all the captured substring offsets, it is used as far as possible (up to two-thirds of its length), and the - function returns a value of zero. In particular, if the substring off- - sets are not of interest, pcre_exec() may be called with ovector passed - as NULL and ovecsize as zero. However, if the pattern contains back - references and the ovector is not big enough to remember the related - substrings, PCRE has to get additional memory for use during matching. - Thus it is usually advisable to supply an ovector. - - The pcre_info() function can be used to find out how many capturing - subpatterns there are in a compiled pattern. The smallest size for - ovector that will allow for n captured substrings, in addition to the + function returns a value of zero. If the substring offsets are not of + interest, pcre_exec() may be called with ovector passed as NULL and + ovecsize as zero. However, if the pattern contains back references and + the ovector is not big enough to remember the related substrings, PCRE + has to get additional memory for use during matching. Thus it is usu- + ally advisable to supply an ovector. + + The pcre_info() function can be used to find out how many capturing + subpatterns there are in a compiled pattern. The smallest size for + ovector that will allow for n captured substrings, in addition to the offsets of the substring matched by the whole pattern, is (n+1)*3. - It is possible for capturing subpattern number n+1 to match some part + It is possible for capturing subpattern number n+1 to match some part of the subject when subpattern n has not been used at all. For example, - if the string "abc" is matched against the pattern (a|(z))(bc) the + if the string "abc" is matched against the pattern (a|(z))(bc) the return from the function is 4, and subpatterns 1 and 3 are matched, but - 2 is not. When this happens, both values in the offset pairs corre- + 2 is not. When this happens, both values in the offset pairs corre- sponding to unused subpatterns are set to -1. - Offset values that correspond to unused subpatterns at the end of the - expression are also set to -1. For example, if the string "abc" is - matched against the pattern (abc)(x(yz)?)? subpatterns 2 and 3 are not - matched. The return from the function is 2, because the highest used + Offset values that correspond to unused subpatterns at the end of the + expression are also set to -1. For example, if the string "abc" is + matched against the pattern (abc)(x(yz)?)? subpatterns 2 and 3 are not + matched. The return from the function is 2, because the highest used capturing subpattern number is 1. However, you can refer to the offsets - for the second and third capturing subpatterns if you wish (assuming + for the second and third capturing subpatterns if you wish (assuming the vector is large enough, of course). - Some convenience functions are provided for extracting the captured + Some convenience functions are provided for extracting the captured substrings as separate strings. These are described below. Error return values from pcre_exec() - If pcre_exec() fails, it returns a negative number. The following are + If pcre_exec() fails, it returns a negative number. The following are defined in the header file: PCRE_ERROR_NOMATCH (-1) @@ -2120,7 +2163,7 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION PCRE_ERROR_NULL (-2) - Either code or subject was passed as NULL, or ovector was NULL and + Either code or subject was passed as NULL, or ovector was NULL and ovecsize was not zero. PCRE_ERROR_BADOPTION (-3) @@ -2129,79 +2172,79 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION PCRE_ERROR_BADMAGIC (-4) - PCRE stores a 4-byte "magic number" at the start of the compiled code, + PCRE stores a 4-byte "magic number" at the start of the compiled code, to catch the case when it is passed a junk pointer and to detect when a pattern that was compiled in an environment of one endianness is run in - an environment with the other endianness. This is the error that PCRE + an environment with the other endianness. This is the error that PCRE gives when the magic number is not present. PCRE_ERROR_UNKNOWN_OPCODE (-5) While running the pattern match, an unknown item was encountered in the - compiled pattern. This error could be caused by a bug in PCRE or by + compiled pattern. This error could be caused by a bug in PCRE or by overwriting of the compiled pattern. PCRE_ERROR_NOMEMORY (-6) - If a pattern contains back references, but the ovector that is passed + If a pattern contains back references, but the ovector that is passed to pcre_exec() is not big enough to remember the referenced substrings, - PCRE gets a block of memory at the start of matching to use for this - purpose. If the call via pcre_malloc() fails, this error is given. The + PCRE gets a block of memory at the start of matching to use for this + purpose. If the call via pcre_malloc() fails, this error is given. The memory is automatically freed at the end of matching. PCRE_ERROR_NOSUBSTRING (-7) - This error is used by the pcre_copy_substring(), pcre_get_substring(), + This error is used by the pcre_copy_substring(), pcre_get_substring(), and pcre_get_substring_list() functions (see below). It is never returned by pcre_exec(). PCRE_ERROR_MATCHLIMIT (-8) - The backtracking limit, as specified by the match_limit field in a - pcre_extra structure (or defaulted) was reached. See the description + The backtracking limit, as specified by the match_limit field in a + pcre_extra structure (or defaulted) was reached. See the description above. PCRE_ERROR_CALLOUT (-9) This error is never generated by pcre_exec() itself. It is provided for - use by callout functions that want to yield a distinctive error code. + use by callout functions that want to yield a distinctive error code. See the pcrecallout documentation for details. PCRE_ERROR_BADUTF8 (-10) - A string that contains an invalid UTF-8 byte sequence was passed as a + A string that contains an invalid UTF-8 byte sequence was passed as a subject. PCRE_ERROR_BADUTF8_OFFSET (-11) The UTF-8 byte sequence that was passed as a subject was valid, but the - value of startoffset did not point to the beginning of a UTF-8 charac- + value of startoffset did not point to the beginning of a UTF-8 charac- ter. PCRE_ERROR_PARTIAL (-12) - The subject string did not match, but it did match partially. See the + The subject string did not match, but it did match partially. See the pcrepartial documentation for details of partial matching. PCRE_ERROR_BADPARTIAL (-13) - The PCRE_PARTIAL option was used with a compiled pattern containing - items that are not supported for partial matching. See the pcrepartial + The PCRE_PARTIAL option was used with a compiled pattern containing + items that are not supported for partial matching. See the pcrepartial documentation for details of partial matching. PCRE_ERROR_INTERNAL (-14) - An unexpected internal error has occurred. This error could be caused + An unexpected internal error has occurred. This error could be caused by a bug in PCRE or by overwriting of the compiled pattern. PCRE_ERROR_BADCOUNT (-15) - This error is given if the value of the ovecsize argument is negative. + This error is given if the value of the ovecsize argument is negative. PCRE_ERROR_RECURSIONLIMIT (-21) The internal recursion limit, as specified by the match_limit_recursion - field in a pcre_extra structure (or defaulted) was reached. See the + field in a pcre_extra structure (or defaulted) was reached. See the description above. PCRE_ERROR_BADNEWLINE (-23) @@ -2224,78 +2267,78 @@ EXTRACTING CAPTURED SUBSTRINGS BY NUMBER int pcre_get_substring_list(const char *subject, int *ovector, int stringcount, const char ***listptr); - Captured substrings can be accessed directly by using the offsets - returned by pcre_exec() in ovector. For convenience, the functions + Captured substrings can be accessed directly by using the offsets + returned by pcre_exec() in ovector. For convenience, the functions pcre_copy_substring(), pcre_get_substring(), and pcre_get_sub- - string_list() are provided for extracting captured substrings as new, - separate, zero-terminated strings. These functions identify substrings - by number. The next section describes functions for extracting named + string_list() are provided for extracting captured substrings as new, + separate, zero-terminated strings. These functions identify substrings + by number. The next section describes functions for extracting named substrings. - A substring that contains a binary zero is correctly extracted and has - a further zero added on the end, but the result is not, of course, a C - string. However, you can process such a string by referring to the - length that is returned by pcre_copy_substring() and pcre_get_sub- + A substring that contains a binary zero is correctly extracted and has + a further zero added on the end, but the result is not, of course, a C + string. However, you can process such a string by referring to the + length that is returned by pcre_copy_substring() and pcre_get_sub- string(). Unfortunately, the interface to pcre_get_substring_list() is - not adequate for handling strings containing binary zeros, because the + not adequate for handling strings containing binary zeros, because the end of the final string is not independently indicated. - The first three arguments are the same for all three of these func- - tions: subject is the subject string that has just been successfully + The first three arguments are the same for all three of these func- + tions: subject is the subject string that has just been successfully matched, ovector is a pointer to the vector of integer offsets that was passed to pcre_exec(), and stringcount is the number of substrings that - were captured by the match, including the substring that matched the + were captured by the match, including the substring that matched the entire regular expression. This is the value returned by pcre_exec() if - it is greater than zero. If pcre_exec() returned zero, indicating that - it ran out of space in ovector, the value passed as stringcount should + it is greater than zero. If pcre_exec() returned zero, indicating that + it ran out of space in ovector, the value passed as stringcount should be the number of elements in the vector divided by three. - The functions pcre_copy_substring() and pcre_get_substring() extract a - single substring, whose number is given as stringnumber. A value of - zero extracts the substring that matched the entire pattern, whereas - higher values extract the captured substrings. For pcre_copy_sub- - string(), the string is placed in buffer, whose length is given by - buffersize, while for pcre_get_substring() a new block of memory is - obtained via pcre_malloc, and its address is returned via stringptr. - The yield of the function is the length of the string, not including + The functions pcre_copy_substring() and pcre_get_substring() extract a + single substring, whose number is given as stringnumber. A value of + zero extracts the substring that matched the entire pattern, whereas + higher values extract the captured substrings. For pcre_copy_sub- + string(), the string is placed in buffer, whose length is given by + buffersize, while for pcre_get_substring() a new block of memory is + obtained via pcre_malloc, and its address is returned via stringptr. + The yield of the function is the length of the string, not including the terminating zero, or one of these error codes: PCRE_ERROR_NOMEMORY (-6) - The buffer was too small for pcre_copy_substring(), or the attempt to + The buffer was too small for pcre_copy_substring(), or the attempt to get memory failed for pcre_get_substring(). PCRE_ERROR_NOSUBSTRING (-7) There is no substring whose number is stringnumber. - The pcre_get_substring_list() function extracts all available sub- - strings and builds a list of pointers to them. All this is done in a + The pcre_get_substring_list() function extracts all available sub- + strings and builds a list of pointers to them. All this is done in a single block of memory that is obtained via pcre_malloc. The address of - the memory block is returned via listptr, which is also the start of - the list of string pointers. The end of the list is marked by a NULL - pointer. The yield of the function is zero if all went well, or the + the memory block is returned via listptr, which is also the start of + the list of string pointers. The end of the list is marked by a NULL + pointer. The yield of the function is zero if all went well, or the error code PCRE_ERROR_NOMEMORY (-6) if the attempt to get the memory block failed. - When any of these functions encounter a substring that is unset, which - can happen when capturing subpattern number n+1 matches some part of - the subject, but subpattern n has not been used at all, they return an + When any of these functions encounter a substring that is unset, which + can happen when capturing subpattern number n+1 matches some part of + the subject, but subpattern n has not been used at all, they return an empty string. This can be distinguished from a genuine zero-length sub- - string by inspecting the appropriate offset in ovector, which is nega- + string by inspecting the appropriate offset in ovector, which is nega- tive for unset substrings. - The two convenience functions pcre_free_substring() and pcre_free_sub- - string_list() can be used to free the memory returned by a previous + The two convenience functions pcre_free_substring() and pcre_free_sub- + string_list() can be used to free the memory returned by a previous call of pcre_get_substring() or pcre_get_substring_list(), respec- - tively. They do nothing more than call the function pointed to by - pcre_free, which of course could be called directly from a C program. - However, PCRE is used in some situations where it is linked via a spe- - cial interface to another programming language that cannot use - pcre_free directly; it is for these cases that the functions are pro- + tively. They do nothing more than call the function pointed to by + pcre_free, which of course could be called directly from a C program. + However, PCRE is used in some situations where it is linked via a spe- + cial interface to another programming language that cannot use + pcre_free directly; it is for these cases that the functions are pro- vided. @@ -2314,7 +2357,7 @@ EXTRACTING CAPTURED SUBSTRINGS BY NAME int stringcount, const char *stringname, const char **stringptr); - To extract a substring by name, you first have to find associated num- + To extract a substring by name, you first have to find associated num- ber. For example, for this pattern (a+)b(?\d+)... @@ -2323,27 +2366,27 @@ EXTRACTING CAPTURED SUBSTRINGS BY NAME be unique (PCRE_DUPNAMES was not set), you can find the number from the name by calling pcre_get_stringnumber(). The first argument is the com- piled pattern, and the second is the name. The yield of the function is - the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if there is no + the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if there is no subpattern of that name. Given the number, you can extract the substring directly, or use one of the functions described in the previous section. For convenience, there are also two functions that do the whole job. - Most of the arguments of pcre_copy_named_substring() and - pcre_get_named_substring() are the same as those for the similarly - named functions that extract by number. As these are described in the - previous section, they are not re-described here. There are just two + Most of the arguments of pcre_copy_named_substring() and + pcre_get_named_substring() are the same as those for the similarly + named functions that extract by number. As these are described in the + previous section, they are not re-described here. There are just two differences: - First, instead of a substring number, a substring name is given. Sec- + First, instead of a substring number, a substring name is given. Sec- ond, there is an extra argument, given at the start, which is a pointer - to the compiled pattern. This is needed in order to gain access to the + to the compiled pattern. This is needed in order to gain access to the name-to-number translation table. - These functions call pcre_get_stringnumber(), and if it succeeds, they - then call pcre_copy_substring() or pcre_get_substring(), as appropri- - ate. NOTE: If PCRE_DUPNAMES is set and there are duplicate names, the + These functions call pcre_get_stringnumber(), and if it succeeds, they + then call pcre_copy_substring() or pcre_get_substring(), as appropri- + ate. NOTE: If PCRE_DUPNAMES is set and there are duplicate names, the behaviour may not be what you want (see the next section). @@ -2352,47 +2395,47 @@ DUPLICATE SUBPATTERN NAMES int pcre_get_stringtable_entries(const pcre *code, const char *name, char **first, char **last); - When a pattern is compiled with the PCRE_DUPNAMES option, names for - subpatterns are not required to be unique. Normally, patterns with - duplicate names are such that in any one match, only one of the named - subpatterns participates. An example is shown in the pcrepattern docu- + When a pattern is compiled with the PCRE_DUPNAMES option, names for + subpatterns are not required to be unique. Normally, patterns with + duplicate names are such that in any one match, only one of the named + subpatterns participates. An example is shown in the pcrepattern docu- mentation. - When duplicates are present, pcre_copy_named_substring() and - pcre_get_named_substring() return the first substring corresponding to - the given name that is set. If none are set, PCRE_ERROR_NOSUBSTRING - (-7) is returned; no data is returned. The pcre_get_stringnumber() - function returns one of the numbers that are associated with the name, + When duplicates are present, pcre_copy_named_substring() and + pcre_get_named_substring() return the first substring corresponding to + the given name that is set. If none are set, PCRE_ERROR_NOSUBSTRING + (-7) is returned; no data is returned. The pcre_get_stringnumber() + function returns one of the numbers that are associated with the name, but it is not defined which it is. - If you want to get full details of all captured substrings for a given - name, you must use the pcre_get_stringtable_entries() function. The + If you want to get full details of all captured substrings for a given + name, you must use the pcre_get_stringtable_entries() function. The first argument is the compiled pattern, and the second is the name. The - third and fourth are pointers to variables which are updated by the + third and fourth are pointers to variables which are updated by the function. After it has run, they point to the first and last entries in - the name-to-number table for the given name. The function itself - returns the length of each entry, or PCRE_ERROR_NOSUBSTRING (-7) if - there are none. The format of the table is described above in the sec- - tion entitled Information about a pattern. Given all the relevant - entries for the name, you can extract each of their numbers, and hence + the name-to-number table for the given name. The function itself + returns the length of each entry, or PCRE_ERROR_NOSUBSTRING (-7) if + there are none. The format of the table is described above in the sec- + tion entitled Information about a pattern. Given all the relevant + entries for the name, you can extract each of their numbers, and hence the captured data, if any. FINDING ALL POSSIBLE MATCHES - The traditional matching function uses a similar algorithm to Perl, + The traditional matching function uses a similar algorithm to Perl, which stops when it finds the first match, starting at a given point in - the subject. If you want to find all possible matches, or the longest - possible match, consider using the alternative matching function (see - below) instead. If you cannot use the alternative function, but still - need to find all possible matches, you can kludge it up by making use + the subject. If you want to find all possible matches, or the longest + possible match, consider using the alternative matching function (see + below) instead. If you cannot use the alternative function, but still + need to find all possible matches, you can kludge it up by making use of the callout facility, which is described in the pcrecallout documen- tation. What you have to do is to insert a callout right at the end of the pat- - tern. When your callout function is called, extract and save the cur- - rent matched substring. Then return 1, which forces pcre_exec() to - backtrack and try other alternatives. Ultimately, when it runs out of + tern. When your callout function is called, extract and save the cur- + rent matched substring. Then return 1, which forces pcre_exec() to + backtrack and try other alternatives. Ultimately, when it runs out of matches, pcre_exec() will yield PCRE_ERROR_NOMATCH. @@ -2403,25 +2446,25 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION int options, int *ovector, int ovecsize, int *workspace, int wscount); - The function pcre_dfa_exec() is called to match a subject string - against a compiled pattern, using a matching algorithm that scans the - subject string just once, and does not backtrack. This has different - characteristics to the normal algorithm, and is not compatible with - Perl. Some of the features of PCRE patterns are not supported. Never- - theless, there are times when this kind of matching can be useful. For + The function pcre_dfa_exec() is called to match a subject string + against a compiled pattern, using a matching algorithm that scans the + subject string just once, and does not backtrack. This has different + characteristics to the normal algorithm, and is not compatible with + Perl. Some of the features of PCRE patterns are not supported. Never- + theless, there are times when this kind of matching can be useful. For a discussion of the two matching algorithms, see the pcrematching docu- mentation. - The arguments for the pcre_dfa_exec() function are the same as for + The arguments for the pcre_dfa_exec() function are the same as for pcre_exec(), plus two extras. The ovector argument is used in a differ- - ent way, and this is described below. The other common arguments are - used in the same way as for pcre_exec(), so their description is not + ent way, and this is described below. The other common arguments are + used in the same way as for pcre_exec(), so their description is not repeated here. - The two additional arguments provide workspace for the function. The - workspace vector should contain at least 20 elements. It is used for + The two additional arguments provide workspace for the function. The + workspace vector should contain at least 20 elements. It is used for keeping track of multiple paths through the pattern tree. More - workspace will be needed for patterns and subjects where there are a + workspace will be needed for patterns and subjects where there are a lot of potential matches. Here is an example of a simple call to pcre_dfa_exec(): @@ -2443,47 +2486,47 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION Option bits for pcre_dfa_exec() - The unused bits of the options argument for pcre_dfa_exec() must be - zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NEW- - LINE_xxx, PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, + The unused bits of the options argument for pcre_dfa_exec() must be + zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NEW- + LINE_xxx, PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL, PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All but the last three of these are the same as for pcre_exec(), so their description is not repeated here. PCRE_PARTIAL - This has the same general effect as it does for pcre_exec(), but the - details are slightly different. When PCRE_PARTIAL is set for - pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into - PCRE_ERROR_PARTIAL if the end of the subject is reached, there have + This has the same general effect as it does for pcre_exec(), but the + details are slightly different. When PCRE_PARTIAL is set for + pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into + PCRE_ERROR_PARTIAL if the end of the subject is reached, there have been no complete matches, but there is still at least one matching pos- - sibility. The portion of the string that provided the partial match is + sibility. The portion of the string that provided the partial match is set as the first matching string. PCRE_DFA_SHORTEST - Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to + Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to stop as soon as it has found one match. Because of the way the alterna- - tive algorithm works, this is necessarily the shortest possible match + tive algorithm works, this is necessarily the shortest possible match at the first possible matching point in the subject string. PCRE_DFA_RESTART - When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and - returns a partial match, it is possible to call it again, with addi- - tional subject characters, and have it continue with the same match. - The PCRE_DFA_RESTART option requests this action; when it is set, the - workspace and wscount options must reference the same vector as before - because data about the match so far is left in them after a partial - match. There is more discussion of this facility in the pcrepartial + When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and + returns a partial match, it is possible to call it again, with addi- + tional subject characters, and have it continue with the same match. + The PCRE_DFA_RESTART option requests this action; when it is set, the + workspace and wscount options must reference the same vector as before + because data about the match so far is left in them after a partial + match. There is more discussion of this facility in the pcrepartial documentation. Successful returns from pcre_dfa_exec() - When pcre_dfa_exec() succeeds, it may have matched more than one sub- + When pcre_dfa_exec() succeeds, it may have matched more than one sub- string in the subject. Note, however, that all the matches from one run - of the function start at the same point in the subject. The shorter - matches are all initial substrings of the longer matches. For example, + of the function start at the same point in the subject. The shorter + matches are all initial substrings of the longer matches. For example, if the pattern <.*> @@ -2498,62 +2541,62 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION - On success, the yield of the function is a number greater than zero, - which is the number of matched substrings. The substrings themselves - are returned in ovector. Each string uses two elements; the first is - the offset to the start, and the second is the offset to the end. In - fact, all the strings have the same start offset. (Space could have - been saved by giving this only once, but it was decided to retain some - compatibility with the way pcre_exec() returns data, even though the + On success, the yield of the function is a number greater than zero, + which is the number of matched substrings. The substrings themselves + are returned in ovector. Each string uses two elements; the first is + the offset to the start, and the second is the offset to the end. In + fact, all the strings have the same start offset. (Space could have + been saved by giving this only once, but it was decided to retain some + compatibility with the way pcre_exec() returns data, even though the meaning of the strings is different.) The strings are returned in reverse order of length; that is, the long- - est matching string is given first. If there were too many matches to - fit into ovector, the yield of the function is zero, and the vector is + est matching string is given first. If there were too many matches to + fit into ovector, the yield of the function is zero, and the vector is filled with the longest matches. Error returns from pcre_dfa_exec() - The pcre_dfa_exec() function returns a negative number when it fails. - Many of the errors are the same as for pcre_exec(), and these are - described above. There are in addition the following errors that are + The pcre_dfa_exec() function returns a negative number when it fails. + Many of the errors are the same as for pcre_exec(), and these are + described above. There are in addition the following errors that are specific to pcre_dfa_exec(): PCRE_ERROR_DFA_UITEM (-16) - This return is given if pcre_dfa_exec() encounters an item in the pat- - tern that it does not support, for instance, the use of \C or a back + This return is given if pcre_dfa_exec() encounters an item in the pat- + tern that it does not support, for instance, the use of \C or a back reference. PCRE_ERROR_DFA_UCOND (-17) - This return is given if pcre_dfa_exec() encounters a condition item - that uses a back reference for the condition, or a test for recursion + This return is given if pcre_dfa_exec() encounters a condition item + that uses a back reference for the condition, or a test for recursion in a specific group. These are not supported. PCRE_ERROR_DFA_UMLIMIT (-18) - This return is given if pcre_dfa_exec() is called with an extra block + This return is given if pcre_dfa_exec() is called with an extra block that contains a setting of the match_limit field. This is not supported (it is meaningless). PCRE_ERROR_DFA_WSSIZE (-19) - This return is given if pcre_dfa_exec() runs out of space in the + This return is given if pcre_dfa_exec() runs out of space in the workspace vector. PCRE_ERROR_DFA_RECURSE (-20) - When a recursive subpattern is processed, the matching function calls - itself recursively, using private vectors for ovector and workspace. - This error is given if the output vector is not large enough. This + When a recursive subpattern is processed, the matching function calls + itself recursively, using private vectors for ovector and workspace. + This error is given if the output vector is not large enough. This should be extremely rare, as a vector of size 1000 is used. SEE ALSO - pcrebuild(3), pcrecallout(3), pcrecpp(3)(3), pcrematching(3), pcrepar- - tial(3), pcreposix(3), pcreprecompile(3), pcresample(3), pcrestack(3). + pcrebuild(3), pcrecallout(3), pcrecpp(3)(3), pcrematching(3), pcrepar- + tial(3), pcreposix(3), pcreprecompile(3), pcresample(3), pcrestack(3). AUTHOR @@ -2565,7 +2608,7 @@ AUTHOR REVISION - Last updated: 23 January 2008 + Last updated: 24 August 2008 Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -2893,12 +2936,18 @@ PCRE REGULAR EXPRESSION DETAILS The syntax and semantics of the regular expressions that are supported by PCRE are described in detail below. There is a quick-reference syn- - tax summary in the pcresyntax page. Perl's regular expressions are - described in its own documentation, and regular expressions in general - are covered in a number of books, some of which have copious examples. - Jeffrey Friedl's "Mastering Regular Expressions", published by - O'Reilly, covers regular expressions in great detail. This description - of PCRE's regular expressions is intended as reference material. + tax summary in the pcresyntax page. PCRE tries to match Perl syntax and + semantics as closely as it can. PCRE also supports some alternative + regular expression syntax (which does not conflict with the Perl syn- + tax) in order to provide some compatibility with regular expressions in + Python, .NET, and Oniguruma. + + Perl's regular expressions are described in its own documentation, and + regular expressions in general are covered in a number of books, some + of which have copious examples. Jeffrey Friedl's "Mastering Regular + Expressions", published by O'Reilly, covers regular expressions in + great detail. This description of PCRE's regular expressions is + intended as reference material. The original operation of PCRE was on strings of one-byte characters. However, there is now also support for UTF-8 character strings. To use @@ -3145,6 +3194,15 @@ BACKSLASH named back reference can be coded as \g{name}. Back references are dis- cussed later, following the discussion of parenthesized subpatterns. + Absolute and relative subroutine calls + + For compatibility with Oniguruma, the non-Perl syntax \g followed by a + name or a number enclosed either in angle brackets or single quotes, is + an alternative syntax for referencing a subpattern as a "subroutine". + Details are discussed later. Note that \g{...} (Perl syntax) and + \g<...> (Oniguruma syntax) are not synonymous. The former is a back + reference; the latter is a subroutine call. + Generic character types Another use of backslash is for specifying generic character types. The @@ -3162,28 +3220,28 @@ BACKSLASH \W any "non-word" character Each pair of escape sequences partitions the complete set of characters - into two disjoint sets. Any given character matches one, and only one, + into two disjoint sets. Any given character matches one, and only one, of each pair. These character type sequences can appear both inside and outside char- - acter classes. They each match one character of the appropriate type. - If the current matching point is at the end of the subject string, all + acter classes. They each match one character of the appropriate type. + If the current matching point is at the end of the subject string, all of them fail, since there is no character to match. - For compatibility with Perl, \s does not match the VT character (code - 11). This makes it different from the the POSIX "space" class. The \s - characters are HT (9), LF (10), FF (12), CR (13), and space (32). If + For compatibility with Perl, \s does not match the VT character (code + 11). This makes it different from the the POSIX "space" class. The \s + characters are HT (9), LF (10), FF (12), CR (13), and space (32). If "use locale;" is included in a Perl script, \s may match the VT charac- ter. In PCRE, it never does. - In UTF-8 mode, characters with values greater than 128 never match \d, + In UTF-8 mode, characters with values greater than 128 never match \d, \s, or \w, and always match \D, \S, and \W. This is true even when Uni- - code character property support is available. These sequences retain + code character property support is available. These sequences retain their original meanings from before UTF-8 support was available, mainly for efficiency reasons. The sequences \h, \H, \v, and \V are Perl 5.10 features. In contrast to - the other sequences, these do match certain high-valued codepoints in + the other sequences, these do match certain high-valued codepoints in UTF-8 mode. The horizontal space characters are: U+0009 Horizontal tab @@ -3217,41 +3275,41 @@ BACKSLASH U+2029 Paragraph separator A "word" character is an underscore or any character less than 256 that - is a letter or digit. The definition of letters and digits is con- - trolled by PCRE's low-valued character tables, and may vary if locale- - specific matching is taking place (see "Locale support" in the pcreapi - page). For example, in a French locale such as "fr_FR" in Unix-like - systems, or "french" in Windows, some character codes greater than 128 - are used for accented letters, and these are matched by \w. The use of + is a letter or digit. The definition of letters and digits is con- + trolled by PCRE's low-valued character tables, and may vary if locale- + specific matching is taking place (see "Locale support" in the pcreapi + page). For example, in a French locale such as "fr_FR" in Unix-like + systems, or "french" in Windows, some character codes greater than 128 + are used for accented letters, and these are matched by \w. The use of locales with Unicode is discouraged. Newline sequences - Outside a character class, by default, the escape sequence \R matches + Outside a character class, by default, the escape sequence \R matches any Unicode newline sequence. This is a Perl 5.10 feature. In non-UTF-8 mode \R is equivalent to the following: (?>\r\n|\n|\x0b|\f|\r|\x85) - This is an example of an "atomic group", details of which are given + This is an example of an "atomic group", details of which are given below. This particular group matches either the two-character sequence - CR followed by LF, or one of the single characters LF (linefeed, + CR followed by LF, or one of the single characters LF (linefeed, U+000A), VT (vertical tab, U+000B), FF (formfeed, U+000C), CR (carriage return, U+000D), or NEL (next line, U+0085). The two-character sequence is treated as a single unit that cannot be split. - In UTF-8 mode, two additional characters whose codepoints are greater + In UTF-8 mode, two additional characters whose codepoints are greater than 255 are added: LS (line separator, U+2028) and PS (paragraph sepa- - rator, U+2029). Unicode character property support is not needed for + rator, U+2029). Unicode character property support is not needed for these characters to be recognized. It is possible to restrict \R to match only CR, LF, or CRLF (instead of - the complete set of Unicode line endings) by setting the option + the complete set of Unicode line endings) by setting the option PCRE_BSR_ANYCRLF either at compile time or when the pattern is matched. (BSR is an abbrevation for "backslash R".) This can be made the default - when PCRE is built; if this is the case, the other behaviour can be - requested via the PCRE_BSR_UNICODE option. It is also possible to - specify these settings by starting a pattern string with one of the + when PCRE is built; if this is the case, the other behaviour can be + requested via the PCRE_BSR_UNICODE option. It is also possible to + specify these settings by starting a pattern string with one of the following sequences: (*BSR_ANYCRLF) CR, LF, or CRLF only @@ -3260,9 +3318,9 @@ BACKSLASH These override the default and the options given to pcre_compile(), but they can be overridden by options given to pcre_exec(). Note that these special settings, which are not Perl-compatible, are recognized only at - the very start of a pattern, and that they must be in upper case. If - more than one of them is present, the last one is used. They can be - combined with a change of newline convention, for example, a pattern + the very start of a pattern, and that they must be in upper case. If + more than one of them is present, the last one is used. They can be + combined with a change of newline convention, for example, a pattern can start with: (*ANY)(*BSR_ANYCRLF) @@ -3272,49 +3330,49 @@ BACKSLASH Unicode character properties When PCRE is built with Unicode character property support, three addi- - tional escape sequences that match characters with specific properties - are available. When not in UTF-8 mode, these sequences are of course - limited to testing characters whose codepoints are less than 256, but + tional escape sequences that match characters with specific properties + are available. When not in UTF-8 mode, these sequences are of course + limited to testing characters whose codepoints are less than 256, but they do work in this mode. The extra escape sequences are: \p{xx} a character with the xx property \P{xx} a character without the xx property \X an extended Unicode sequence - The property names represented by xx above are limited to the Unicode + The property names represented by xx above are limited to the Unicode script names, the general category properties, and "Any", which matches any character (including newline). Other properties such as "InMusical- - Symbols" are not currently supported by PCRE. Note that \P{Any} does + Symbols" are not currently supported by PCRE. Note that \P{Any} does not match any characters, so always causes a match failure. Sets of Unicode characters are defined as belonging to certain scripts. - A character from one of these sets can be matched using a script name. + A character from one of these sets can be matched using a script name. For example: \p{Greek} \P{Han} - Those that are not part of an identified script are lumped together as + Those that are not part of an identified script are lumped together as "Common". The current list of scripts is: Arabic, Armenian, Balinese, Bengali, Bopomofo, Braille, Buginese, - Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cuneiform, + Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cuneiform, Cypriot, Cyrillic, Deseret, Devanagari, Ethiopic, Georgian, Glagolitic, - Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hira- - gana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, + Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hira- + gana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam, Mongolian, Myanmar, New_Tai_Lue, Nko, - Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Phags_Pa, Phoenician, + Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Phags_Pa, Phoenician, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh, Ugaritic, Yi. - Each character has exactly one general category property, specified by + Each character has exactly one general category property, specified by a two-letter abbreviation. For compatibility with Perl, negation can be - specified by including a circumflex between the opening brace and the + specified by including a circumflex between the opening brace and the property name. For example, \p{^Lu} is the same as \P{Lu}. If only one letter is specified with \p or \P, it includes all the gen- - eral category properties that start with that letter. In this case, in - the absence of negation, the curly brackets in the escape sequence are + eral category properties that start with that letter. In this case, in + the absence of negation, the curly brackets in the escape sequence are optional; these two examples have the same effect: \p{L} @@ -3366,57 +3424,57 @@ BACKSLASH Zp Paragraph separator Zs Space separator - The special property L& is also supported: it matches a character that - has the Lu, Ll, or Lt property, in other words, a letter that is not + The special property L& is also supported: it matches a character that + has the Lu, Ll, or Lt property, in other words, a letter that is not classified as a modifier or "other". - The Cs (Surrogate) property applies only to characters in the range - U+D800 to U+DFFF. Such characters are not valid in UTF-8 strings (see + The Cs (Surrogate) property applies only to characters in the range + U+D800 to U+DFFF. Such characters are not valid in UTF-8 strings (see RFC 3629) and so cannot be tested by PCRE, unless UTF-8 validity check- - ing has been turned off (see the discussion of PCRE_NO_UTF8_CHECK in + ing has been turned off (see the discussion of PCRE_NO_UTF8_CHECK in the pcreapi page). - The long synonyms for these properties that Perl supports (such as - \p{Letter}) are not supported by PCRE, nor is it permitted to prefix + The long synonyms for these properties that Perl supports (such as + \p{Letter}) are not supported by PCRE, nor is it permitted to prefix any of these properties with "Is". No character that is in the Unicode table has the Cn (unassigned) prop- erty. Instead, this property is assumed for any code point that is not in the Unicode table. - Specifying caseless matching does not affect these escape sequences. + Specifying caseless matching does not affect these escape sequences. For example, \p{Lu} always matches only upper case letters. - The \X escape matches any number of Unicode characters that form an + The \X escape matches any number of Unicode characters that form an extended Unicode sequence. \X is equivalent to (?>\PM\pM*) - That is, it matches a character without the "mark" property, followed - by zero or more characters with the "mark" property, and treats the - sequence as an atomic group (see below). Characters with the "mark" - property are typically accents that affect the preceding character. - None of them have codepoints less than 256, so in non-UTF-8 mode \X + That is, it matches a character without the "mark" property, followed + by zero or more characters with the "mark" property, and treats the + sequence as an atomic group (see below). Characters with the "mark" + property are typically accents that affect the preceding character. + None of them have codepoints less than 256, so in non-UTF-8 mode \X matches any one character. - Matching characters by Unicode property is not fast, because PCRE has - to search a structure that contains data for over fifteen thousand + Matching characters by Unicode property is not fast, because PCRE has + to search a structure that contains data for over fifteen thousand characters. That is why the traditional escape sequences such as \d and \w do not use Unicode properties in PCRE. Resetting the match start The escape sequence \K, which is a Perl 5.10 feature, causes any previ- - ously matched characters not to be included in the final matched + ously matched characters not to be included in the final matched sequence. For example, the pattern: foo\Kbar - matches "foobar", but reports that it has matched "bar". This feature - is similar to a lookbehind assertion (described below). However, in - this case, the part of the subject before the real match does not have - to be of fixed length, as lookbehind assertions do. The use of \K does - not interfere with the setting of captured substrings. For example, + matches "foobar", but reports that it has matched "bar". This feature + is similar to a lookbehind assertion (described below). However, in + this case, the part of the subject before the real match does not have + to be of fixed length, as lookbehind assertions do. The use of \K does + not interfere with the setting of captured substrings. For example, when the pattern (foo)\Kbar @@ -3425,10 +3483,10 @@ BACKSLASH Simple assertions - The final use of backslash is for certain simple assertions. An asser- - tion specifies a condition that has to be met at a particular point in - a match, without consuming any characters from the subject string. The - use of subpatterns for more complicated assertions is described below. + The final use of backslash is for certain simple assertions. An asser- + tion specifies a condition that has to be met at a particular point in + a match, without consuming any characters from the subject string. The + use of subpatterns for more complicated assertions is described below. The backslashed assertions are: \b matches at a word boundary @@ -3439,41 +3497,41 @@ BACKSLASH \z matches only at the end of the subject \G matches at the first matching position in the subject - These assertions may not appear in character classes (but note that \b + These assertions may not appear in character classes (but note that \b has a different meaning, namely the backspace character, inside a char- acter class). - A word boundary is a position in the subject string where the current - character and the previous character do not both match \w or \W (i.e. - one matches \w and the other matches \W), or the start or end of the + A word boundary is a position in the subject string where the current + character and the previous character do not both match \w or \W (i.e. + one matches \w and the other matches \W), or the start or end of the string if the first or last character matches \w, respectively. - The \A, \Z, and \z assertions differ from the traditional circumflex + The \A, \Z, and \z assertions differ from the traditional circumflex and dollar (described in the next section) in that they only ever match - at the very start and end of the subject string, whatever options are - set. Thus, they are independent of multiline mode. These three asser- + at the very start and end of the subject string, whatever options are + set. Thus, they are independent of multiline mode. These three asser- tions are not affected by the PCRE_NOTBOL or PCRE_NOTEOL options, which - affect only the behaviour of the circumflex and dollar metacharacters. - However, if the startoffset argument of pcre_exec() is non-zero, indi- + affect only the behaviour of the circumflex and dollar metacharacters. + However, if the startoffset argument of pcre_exec() is non-zero, indi- cating that matching is to start at a point other than the beginning of - the subject, \A can never match. The difference between \Z and \z is + the subject, \A can never match. The difference between \Z and \z is that \Z matches before a newline at the end of the string as well as at the very end, whereas \z matches only at the end. - The \G assertion is true only when the current matching position is at - the start point of the match, as specified by the startoffset argument - of pcre_exec(). It differs from \A when the value of startoffset is - non-zero. By calling pcre_exec() multiple times with appropriate argu- + The \G assertion is true only when the current matching position is at + the start point of the match, as specified by the startoffset argument + of pcre_exec(). It differs from \A when the value of startoffset is + non-zero. By calling pcre_exec() multiple times with appropriate argu- ments, you can mimic Perl's /g option, and it is in this kind of imple- mentation where \G can be useful. - Note, however, that PCRE's interpretation of \G, as the start of the + Note, however, that PCRE's interpretation of \G, as the start of the current match, is subtly different from Perl's, which defines it as the - end of the previous match. In Perl, these can be different when the - previously matched string was empty. Because PCRE does just one match + end of the previous match. In Perl, these can be different when the + previously matched string was empty. Because PCRE does just one match at a time, it cannot reproduce this behaviour. - If all the alternatives of a pattern begin with \G, the expression is + If all the alternatives of a pattern begin with \G, the expression is anchored to the starting match position, and the "anchored" flag is set in the compiled regular expression. @@ -3481,90 +3539,90 @@ BACKSLASH CIRCUMFLEX AND DOLLAR Outside a character class, in the default matching mode, the circumflex - character is an assertion that is true only if the current matching - point is at the start of the subject string. If the startoffset argu- - ment of pcre_exec() is non-zero, circumflex can never match if the - PCRE_MULTILINE option is unset. Inside a character class, circumflex + character is an assertion that is true only if the current matching + point is at the start of the subject string. If the startoffset argu- + ment of pcre_exec() is non-zero, circumflex can never match if the + PCRE_MULTILINE option is unset. Inside a character class, circumflex has an entirely different meaning (see below). - Circumflex need not be the first character of the pattern if a number - of alternatives are involved, but it should be the first thing in each - alternative in which it appears if the pattern is ever to match that - branch. If all possible alternatives start with a circumflex, that is, - if the pattern is constrained to match only at the start of the sub- - ject, it is said to be an "anchored" pattern. (There are also other + Circumflex need not be the first character of the pattern if a number + of alternatives are involved, but it should be the first thing in each + alternative in which it appears if the pattern is ever to match that + branch. If all possible alternatives start with a circumflex, that is, + if the pattern is constrained to match only at the start of the sub- + ject, it is said to be an "anchored" pattern. (There are also other constructs that can cause a pattern to be anchored.) - A dollar character is an assertion that is true only if the current - matching point is at the end of the subject string, or immediately + A dollar character is an assertion that is true only if the current + matching point is at the end of the subject string, or immediately before a newline at the end of the string (by default). Dollar need not - be the last character of the pattern if a number of alternatives are - involved, but it should be the last item in any branch in which it + be the last character of the pattern if a number of alternatives are + involved, but it should be the last item in any branch in which it appears. Dollar has no special meaning in a character class. - The meaning of dollar can be changed so that it matches only at the - very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at + The meaning of dollar can be changed so that it matches only at the + very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at compile time. This does not affect the \Z assertion. The meanings of the circumflex and dollar characters are changed if the - PCRE_MULTILINE option is set. When this is the case, a circumflex - matches immediately after internal newlines as well as at the start of - the subject string. It does not match after a newline that ends the - string. A dollar matches before any newlines in the string, as well as - at the very end, when PCRE_MULTILINE is set. When newline is specified - as the two-character sequence CRLF, isolated CR and LF characters do + PCRE_MULTILINE option is set. When this is the case, a circumflex + matches immediately after internal newlines as well as at the start of + the subject string. It does not match after a newline that ends the + string. A dollar matches before any newlines in the string, as well as + at the very end, when PCRE_MULTILINE is set. When newline is specified + as the two-character sequence CRLF, isolated CR and LF characters do not indicate newlines. - For example, the pattern /^abc$/ matches the subject string "def\nabc" - (where \n represents a newline) in multiline mode, but not otherwise. - Consequently, patterns that are anchored in single line mode because - all branches start with ^ are not anchored in multiline mode, and a - match for circumflex is possible when the startoffset argument of - pcre_exec() is non-zero. The PCRE_DOLLAR_ENDONLY option is ignored if + For example, the pattern /^abc$/ matches the subject string "def\nabc" + (where \n represents a newline) in multiline mode, but not otherwise. + Consequently, patterns that are anchored in single line mode because + all branches start with ^ are not anchored in multiline mode, and a + match for circumflex is possible when the startoffset argument of + pcre_exec() is non-zero. The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set. - Note that the sequences \A, \Z, and \z can be used to match the start - and end of the subject in both modes, and if all branches of a pattern - start with \A it is always anchored, whether or not PCRE_MULTILINE is + Note that the sequences \A, \Z, and \z can be used to match the start + and end of the subject in both modes, and if all branches of a pattern + start with \A it is always anchored, whether or not PCRE_MULTILINE is set. FULL STOP (PERIOD, DOT) Outside a character class, a dot in the pattern matches any one charac- - ter in the subject string except (by default) a character that signi- - fies the end of a line. In UTF-8 mode, the matched character may be + ter in the subject string except (by default) a character that signi- + fies the end of a line. In UTF-8 mode, the matched character may be more than one byte long. - When a line ending is defined as a single character, dot never matches - that character; when the two-character sequence CRLF is used, dot does - not match CR if it is immediately followed by LF, but otherwise it - matches all characters (including isolated CRs and LFs). When any Uni- - code line endings are being recognized, dot does not match CR or LF or + When a line ending is defined as a single character, dot never matches + that character; when the two-character sequence CRLF is used, dot does + not match CR if it is immediately followed by LF, but otherwise it + matches all characters (including isolated CRs and LFs). When any Uni- + code line endings are being recognized, dot does not match CR or LF or any of the other line ending characters. - The behaviour of dot with regard to newlines can be changed. If the - PCRE_DOTALL option is set, a dot matches any one character, without + The behaviour of dot with regard to newlines can be changed. If the + PCRE_DOTALL option is set, a dot matches any one character, without exception. If the two-character sequence CRLF is present in the subject string, it takes two dots to match it. - The handling of dot is entirely independent of the handling of circum- - flex and dollar, the only relationship being that they both involve + The handling of dot is entirely independent of the handling of circum- + flex and dollar, the only relationship being that they both involve newlines. Dot has no special meaning in a character class. MATCHING A SINGLE BYTE Outside a character class, the escape sequence \C matches any one byte, - both in and out of UTF-8 mode. Unlike a dot, it always matches any - line-ending characters. The feature is provided in Perl in order to - match individual bytes in UTF-8 mode. Because it breaks up UTF-8 char- - acters into individual bytes, what remains in the string may be a mal- - formed UTF-8 string. For this reason, the \C escape sequence is best + both in and out of UTF-8 mode. Unlike a dot, it always matches any + line-ending characters. The feature is provided in Perl in order to + match individual bytes in UTF-8 mode. Because it breaks up UTF-8 char- + acters into individual bytes, what remains in the string may be a mal- + formed UTF-8 string. For this reason, the \C escape sequence is best avoided. - PCRE does not allow \C to appear in lookbehind assertions (described - below), because in UTF-8 mode this would make it impossible to calcu- + PCRE does not allow \C to appear in lookbehind assertions (described + below), because in UTF-8 mode this would make it impossible to calcu- late the length of the lookbehind. @@ -3573,96 +3631,96 @@ SQUARE BRACKETS AND CHARACTER CLASSES An opening square bracket introduces a character class, terminated by a closing square bracket. A closing square bracket on its own is not spe- cial. If a closing square bracket is required as a member of the class, - it should be the first data character in the class (after an initial + it should be the first data character in the class (after an initial circumflex, if present) or escaped with a backslash. - A character class matches a single character in the subject. In UTF-8 - mode, the character may occupy more than one byte. A matched character + A character class matches a single character in the subject. In UTF-8 + mode, the character may occupy more than one byte. A matched character must be in the set of characters defined by the class, unless the first - character in the class definition is a circumflex, in which case the - subject character must not be in the set defined by the class. If a - circumflex is actually required as a member of the class, ensure it is + character in the class definition is a circumflex, in which case the + subject character must not be in the set defined by the class. If a + circumflex is actually required as a member of the class, ensure it is not the first character, or escape it with a backslash. - For example, the character class [aeiou] matches any lower case vowel, - while [^aeiou] matches any character that is not a lower case vowel. + For example, the character class [aeiou] matches any lower case vowel, + while [^aeiou] matches any character that is not a lower case vowel. Note that a circumflex is just a convenient notation for specifying the - characters that are in the class by enumerating those that are not. A - class that starts with a circumflex is not an assertion: it still con- - sumes a character from the subject string, and therefore it fails if + characters that are in the class by enumerating those that are not. A + class that starts with a circumflex is not an assertion: it still con- + sumes a character from the subject string, and therefore it fails if the current pointer is at the end of the string. - In UTF-8 mode, characters with values greater than 255 can be included - in a class as a literal string of bytes, or by using the \x{ escaping + In UTF-8 mode, characters with values greater than 255 can be included + in a class as a literal string of bytes, or by using the \x{ escaping mechanism. - When caseless matching is set, any letters in a class represent both - their upper case and lower case versions, so for example, a caseless - [aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not - match "A", whereas a caseful version would. In UTF-8 mode, PCRE always - understands the concept of case for characters whose values are less - than 128, so caseless matching is always possible. For characters with - higher values, the concept of case is supported if PCRE is compiled - with Unicode property support, but not otherwise. If you want to use - caseless matching for characters 128 and above, you must ensure that - PCRE is compiled with Unicode property support as well as with UTF-8 + When caseless matching is set, any letters in a class represent both + their upper case and lower case versions, so for example, a caseless + [aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not + match "A", whereas a caseful version would. In UTF-8 mode, PCRE always + understands the concept of case for characters whose values are less + than 128, so caseless matching is always possible. For characters with + higher values, the concept of case is supported if PCRE is compiled + with Unicode property support, but not otherwise. If you want to use + caseless matching for characters 128 and above, you must ensure that + PCRE is compiled with Unicode property support as well as with UTF-8 support. - Characters that might indicate line breaks are never treated in any - special way when matching character classes, whatever line-ending - sequence is in use, and whatever setting of the PCRE_DOTALL and + Characters that might indicate line breaks are never treated in any + special way when matching character classes, whatever line-ending + sequence is in use, and whatever setting of the PCRE_DOTALL and PCRE_MULTILINE options is used. A class such as [^a] always matches one of these characters. - The minus (hyphen) character can be used to specify a range of charac- - ters in a character class. For example, [d-m] matches any letter - between d and m, inclusive. If a minus character is required in a - class, it must be escaped with a backslash or appear in a position - where it cannot be interpreted as indicating a range, typically as the + The minus (hyphen) character can be used to specify a range of charac- + ters in a character class. For example, [d-m] matches any letter + between d and m, inclusive. If a minus character is required in a + class, it must be escaped with a backslash or appear in a position + where it cannot be interpreted as indicating a range, typically as the first or last character in the class. It is not possible to have the literal character "]" as the end charac- - ter of a range. A pattern such as [W-]46] is interpreted as a class of - two characters ("W" and "-") followed by a literal string "46]", so it - would match "W46]" or "-46]". However, if the "]" is escaped with a - backslash it is interpreted as the end of range, so [W-\]46] is inter- - preted as a class containing a range followed by two other characters. - The octal or hexadecimal representation of "]" can also be used to end + ter of a range. A pattern such as [W-]46] is interpreted as a class of + two characters ("W" and "-") followed by a literal string "46]", so it + would match "W46]" or "-46]". However, if the "]" is escaped with a + backslash it is interpreted as the end of range, so [W-\]46] is inter- + preted as a class containing a range followed by two other characters. + The octal or hexadecimal representation of "]" can also be used to end a range. - Ranges operate in the collating sequence of character values. They can - also be used for characters specified numerically, for example - [\000-\037]. In UTF-8 mode, ranges can include characters whose values + Ranges operate in the collating sequence of character values. They can + also be used for characters specified numerically, for example + [\000-\037]. In UTF-8 mode, ranges can include characters whose values are greater than 255, for example [\x{100}-\x{2ff}]. If a range that includes letters is used when caseless matching is set, it matches the letters in either case. For example, [W-c] is equivalent - to [][\\^_`wxyzabc], matched caselessly, and in non-UTF-8 mode, if - character tables for a French locale are in use, [\xc8-\xcb] matches - accented E characters in both cases. In UTF-8 mode, PCRE supports the - concept of case for characters with values greater than 128 only when + to [][\\^_`wxyzabc], matched caselessly, and in non-UTF-8 mode, if + character tables for a French locale are in use, [\xc8-\xcb] matches + accented E characters in both cases. In UTF-8 mode, PCRE supports the + concept of case for characters with values greater than 128 only when it is compiled with Unicode property support. - The character types \d, \D, \p, \P, \s, \S, \w, and \W may also appear - in a character class, and add the characters that they match to the + The character types \d, \D, \p, \P, \s, \S, \w, and \W may also appear + in a character class, and add the characters that they match to the class. For example, [\dABCDEF] matches any hexadecimal digit. A circum- - flex can conveniently be used with the upper case character types to - specify a more restricted set of characters than the matching lower - case type. For example, the class [^\W_] matches any letter or digit, + flex can conveniently be used with the upper case character types to + specify a more restricted set of characters than the matching lower + case type. For example, the class [^\W_] matches any letter or digit, but not underscore. - The only metacharacters that are recognized in character classes are - backslash, hyphen (only where it can be interpreted as specifying a - range), circumflex (only at the start), opening square bracket (only - when it can be interpreted as introducing a POSIX class name - see the - next section), and the terminating closing square bracket. However, + The only metacharacters that are recognized in character classes are + backslash, hyphen (only where it can be interpreted as specifying a + range), circumflex (only at the start), opening square bracket (only + when it can be interpreted as introducing a POSIX class name - see the + next section), and the terminating closing square bracket. However, escaping other non-alphanumeric characters does no harm. POSIX CHARACTER CLASSES Perl supports the POSIX notation for character classes. This uses names - enclosed by [: and :] within the enclosing square brackets. PCRE also + enclosed by [: and :] within the enclosing square brackets. PCRE also supports this notation. For example, [01[:alpha:]%] @@ -3685,18 +3743,18 @@ POSIX CHARACTER CLASSES word "word" characters (same as \w) xdigit hexadecimal digits - The "space" characters are HT (9), LF (10), VT (11), FF (12), CR (13), - and space (32). Notice that this list includes the VT character (code + The "space" characters are HT (9), LF (10), VT (11), FF (12), CR (13), + and space (32). Notice that this list includes the VT character (code 11). This makes "space" different to \s, which does not include VT (for Perl compatibility). - The name "word" is a Perl extension, and "blank" is a GNU extension - from Perl 5.8. Another Perl extension is negation, which is indicated + The name "word" is a Perl extension, and "blank" is a GNU extension + from Perl 5.8. Another Perl extension is negation, which is indicated by a ^ character after the colon. For example, [12[:^digit:]] - matches "1", "2", or any non-digit. PCRE (and Perl) also recognize the + matches "1", "2", or any non-digit. PCRE (and Perl) also recognize the POSIX syntax [.ch.] and [=ch=] where "ch" is a "collating element", but these are not supported, and an error is given if they are encountered. @@ -3706,24 +3764,24 @@ POSIX CHARACTER CLASSES VERTICAL BAR - Vertical bar characters are used to separate alternative patterns. For + Vertical bar characters are used to separate alternative patterns. For example, the pattern gilbert|sullivan - matches either "gilbert" or "sullivan". Any number of alternatives may - appear, and an empty alternative is permitted (matching the empty + matches either "gilbert" or "sullivan". Any number of alternatives may + appear, and an empty alternative is permitted (matching the empty string). The matching process tries each alternative in turn, from left - to right, and the first one that succeeds is used. If the alternatives - are within a subpattern (defined below), "succeeds" means matching the - rest of the main pattern as well as the alternative in the subpattern. + to right, and the first one that succeeds is used. If the alternatives + are within a subpattern (defined below), "succeeds" means matching the + rest of the main pattern as well as the alternative in the subpattern. INTERNAL OPTION SETTING - The settings of the PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and - PCRE_EXTENDED options (which are Perl-compatible) can be changed from - within the pattern by a sequence of Perl option letters enclosed + The settings of the PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and + PCRE_EXTENDED options (which are Perl-compatible) can be changed from + within the pattern by a sequence of Perl option letters enclosed between "(?" and ")". The option letters are i for PCRE_CASELESS @@ -3733,44 +3791,44 @@ INTERNAL OPTION SETTING For example, (?im) sets caseless, multiline matching. It is also possi- ble to unset these options by preceding the letter with a hyphen, and a - combined setting and unsetting such as (?im-sx), which sets PCRE_CASE- - LESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and PCRE_EXTENDED, - is also permitted. If a letter appears both before and after the + combined setting and unsetting such as (?im-sx), which sets PCRE_CASE- + LESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and PCRE_EXTENDED, + is also permitted. If a letter appears both before and after the hyphen, the option is unset. - The PCRE-specific options PCRE_DUPNAMES, PCRE_UNGREEDY, and PCRE_EXTRA - can be changed in the same way as the Perl-compatible options by using + The PCRE-specific options PCRE_DUPNAMES, PCRE_UNGREEDY, and PCRE_EXTRA + can be changed in the same way as the Perl-compatible options by using the characters J, U and X respectively. - When an option change occurs at top level (that is, not inside subpat- - tern parentheses), the change applies to the remainder of the pattern + When an option change occurs at top level (that is, not inside subpat- + tern parentheses), the change applies to the remainder of the pattern that follows. If the change is placed right at the start of a pattern, PCRE extracts it into the global options (and it will therefore show up in data extracted by the pcre_fullinfo() function). - An option change within a subpattern (see below for a description of + An option change within a subpattern (see below for a description of subpatterns) affects only that part of the current pattern that follows it, so (a(?i)b)c matches abc and aBc and no other strings (assuming PCRE_CASELESS is not - used). By this means, options can be made to have different settings - in different parts of the pattern. Any changes made in one alternative - do carry on into subsequent branches within the same subpattern. For + used). By this means, options can be made to have different settings + in different parts of the pattern. Any changes made in one alternative + do carry on into subsequent branches within the same subpattern. For example, (a(?i)b|c) - matches "ab", "aB", "c", and "C", even though when matching "C" the - first branch is abandoned before the option setting. This is because - the effects of option settings happen at compile time. There would be + matches "ab", "aB", "c", and "C", even though when matching "C" the + first branch is abandoned before the option setting. This is because + the effects of option settings happen at compile time. There would be some very weird behaviour otherwise. - Note: There are other PCRE-specific options that can be set by the - application when the compile or match functions are called. In some - cases the pattern can contain special leading sequences to override - what the application has set or what has been defaulted. Details are + Note: There are other PCRE-specific options that can be set by the + application when the compile or match functions are called. In some + cases the pattern can contain special leading sequences to override + what the application has set or what has been defaulted. Details are given in the section entitled "Newline sequences" above. @@ -3783,18 +3841,18 @@ SUBPATTERNS cat(aract|erpillar|) - matches one of the words "cat", "cataract", or "caterpillar". Without - the parentheses, it would match "cataract", "erpillar" or an empty + matches one of the words "cat", "cataract", or "caterpillar". Without + the parentheses, it would match "cataract", "erpillar" or an empty string. - 2. It sets up the subpattern as a capturing subpattern. This means - that, when the whole pattern matches, that portion of the subject + 2. It sets up the subpattern as a capturing subpattern. This means + that, when the whole pattern matches, that portion of the subject string that matched the subpattern is passed back to the caller via the - ovector argument of pcre_exec(). Opening parentheses are counted from - left to right (starting from 1) to obtain numbers for the capturing + ovector argument of pcre_exec(). Opening parentheses are counted from + left to right (starting from 1) to obtain numbers for the capturing subpatterns. - For example, if the string "the red king" is matched against the pat- + For example, if the string "the red king" is matched against the pat- tern the ((red|white) (king|queen)) @@ -3802,12 +3860,12 @@ SUBPATTERNS the captured substrings are "red king", "red", and "king", and are num- bered 1, 2, and 3, respectively. - The fact that plain parentheses fulfil two functions is not always - helpful. There are often times when a grouping subpattern is required - without a capturing requirement. If an opening parenthesis is followed - by a question mark and a colon, the subpattern does not do any captur- - ing, and is not counted when computing the number of any subsequent - capturing subpatterns. For example, if the string "the white queen" is + The fact that plain parentheses fulfil two functions is not always + helpful. There are often times when a grouping subpattern is required + without a capturing requirement. If an opening parenthesis is followed + by a question mark and a colon, the subpattern does not do any captur- + ing, and is not counted when computing the number of any subsequent + capturing subpatterns. For example, if the string "the white queen" is matched against the pattern the ((?:red|white) (king|queen)) @@ -3815,80 +3873,80 @@ SUBPATTERNS the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of capturing subpatterns is 65535. - As a convenient shorthand, if any option settings are required at the - start of a non-capturing subpattern, the option letters may appear + As a convenient shorthand, if any option settings are required at the + start of a non-capturing subpattern, the option letters may appear between the "?" and the ":". Thus the two patterns (?i:saturday|sunday) (?:(?i)saturday|sunday) match exactly the same set of strings. Because alternative branches are - tried from left to right, and options are not reset until the end of - the subpattern is reached, an option setting in one branch does affect - subsequent branches, so the above patterns match "SUNDAY" as well as + tried from left to right, and options are not reset until the end of + the subpattern is reached, an option setting in one branch does affect + subsequent branches, so the above patterns match "SUNDAY" as well as "Saturday". DUPLICATE SUBPATTERN NUMBERS Perl 5.10 introduced a feature whereby each alternative in a subpattern - uses the same numbers for its capturing parentheses. Such a subpattern - starts with (?| and is itself a non-capturing subpattern. For example, + uses the same numbers for its capturing parentheses. Such a subpattern + starts with (?| and is itself a non-capturing subpattern. For example, consider this pattern: (?|(Sat)ur|(Sun))day - Because the two alternatives are inside a (?| group, both sets of cap- - turing parentheses are numbered one. Thus, when the pattern matches, - you can look at captured substring number one, whichever alternative - matched. This construct is useful when you want to capture part, but + Because the two alternatives are inside a (?| group, both sets of cap- + turing parentheses are numbered one. Thus, when the pattern matches, + you can look at captured substring number one, whichever alternative + matched. This construct is useful when you want to capture part, but not all, of one of a number of alternatives. Inside a (?| group, paren- - theses are numbered as usual, but the number is reset at the start of - each branch. The numbers of any capturing buffers that follow the sub- - pattern start after the highest number used in any branch. The follow- - ing example is taken from the Perl documentation. The numbers under- + theses are numbered as usual, but the number is reset at the start of + each branch. The numbers of any capturing buffers that follow the sub- + pattern start after the highest number used in any branch. The follow- + ing example is taken from the Perl documentation. The numbers under- neath show in which buffer the captured content will be stored. # before ---------------branch-reset----------- after / ( a ) (?| x ( y ) z | (p (q) r) | (t) u (v) ) ( z ) /x # 1 2 2 3 2 3 4 - A backreference or a recursive call to a numbered subpattern always + A backreference or a recursive call to a numbered subpattern always refers to the first one in the pattern with the given number. - An alternative approach to using this "branch reset" feature is to use + An alternative approach to using this "branch reset" feature is to use duplicate named subpatterns, as described in the next section. NAMED SUBPATTERNS - Identifying capturing parentheses by number is simple, but it can be - very hard to keep track of the numbers in complicated regular expres- - sions. Furthermore, if an expression is modified, the numbers may - change. To help with this difficulty, PCRE supports the naming of sub- + Identifying capturing parentheses by number is simple, but it can be + very hard to keep track of the numbers in complicated regular expres- + sions. Furthermore, if an expression is modified, the numbers may + change. To help with this difficulty, PCRE supports the naming of sub- patterns. This feature was not added to Perl until release 5.10. Python - had the feature earlier, and PCRE introduced it at release 4.0, using - the Python syntax. PCRE now supports both the Perl and the Python syn- + had the feature earlier, and PCRE introduced it at release 4.0, using + the Python syntax. PCRE now supports both the Perl and the Python syn- tax. - In PCRE, a subpattern can be named in one of three ways: (?...) - or (?'name'...) as in Perl, or (?P...) as in Python. References + In PCRE, a subpattern can be named in one of three ways: (?...) + or (?'name'...) as in Perl, or (?P...) as in Python. References to capturing parentheses from other parts of the pattern, such as back- - references, recursion, and conditions, can be made by name as well as + references, recursion, and conditions, can be made by name as well as by number. - Names consist of up to 32 alphanumeric characters and underscores. - Named capturing parentheses are still allocated numbers as well as - names, exactly as if the names were not present. The PCRE API provides + Names consist of up to 32 alphanumeric characters and underscores. + Named capturing parentheses are still allocated numbers as well as + names, exactly as if the names were not present. The PCRE API provides function calls for extracting the name-to-number translation table from a compiled pattern. There is also a convenience function for extracting a captured substring by name. - By default, a name must be unique within a pattern, but it is possible + By default, a name must be unique within a pattern, but it is possible to relax this constraint by setting the PCRE_DUPNAMES option at compile - time. This can be useful for patterns where only one instance of the - named parentheses can match. Suppose you want to match the name of a - weekday, either as a 3-letter abbreviation or as the full name, and in + time. This can be useful for patterns where only one instance of the + named parentheses can match. Suppose you want to match the name of a + weekday, either as a 3-letter abbreviation or as the full name, and in both cases you want to extract the abbreviation. This pattern (ignoring the line breaks) does the job: @@ -3898,22 +3956,22 @@ NAMED SUBPATTERNS (?Thu)(?:rsday)?| (?Sat)(?:urday)? - There are five capturing substrings, but only one is ever set after a + There are five capturing substrings, but only one is ever set after a match. (An alternative way of solving this problem is to use a "branch reset" subpattern, as described in the previous section.) - The convenience function for extracting the data by name returns the - substring for the first (and in this example, the only) subpattern of - that name that matched. This saves searching to find which numbered - subpattern it was. If you make a reference to a non-unique named sub- - pattern from elsewhere in the pattern, the one that corresponds to the - lowest number is used. For further details of the interfaces for han- + The convenience function for extracting the data by name returns the + substring for the first (and in this example, the only) subpattern of + that name that matched. This saves searching to find which numbered + subpattern it was. If you make a reference to a non-unique named sub- + pattern from elsewhere in the pattern, the one that corresponds to the + lowest number is used. For further details of the interfaces for han- dling named subpatterns, see the pcreapi documentation. REPETITION - Repetition is specified by quantifiers, which can follow any of the + Repetition is specified by quantifiers, which can follow any of the following items: a literal data character @@ -3926,17 +3984,17 @@ REPETITION a back reference (see next section) a parenthesized subpattern (unless it is an assertion) - The general repetition quantifier specifies a minimum and maximum num- - ber of permitted matches, by giving the two numbers in curly brackets - (braces), separated by a comma. The numbers must be less than 65536, + The general repetition quantifier specifies a minimum and maximum num- + ber of permitted matches, by giving the two numbers in curly brackets + (braces), separated by a comma. The numbers must be less than 65536, and the first must be less than or equal to the second. For example: z{2,4} - matches "zz", "zzz", or "zzzz". A closing brace on its own is not a - special character. If the second number is omitted, but the comma is - present, there is no upper limit; if the second number and the comma - are both omitted, the quantifier specifies an exact number of required + matches "zz", "zzz", or "zzzz". A closing brace on its own is not a + special character. If the second number is omitted, but the comma is + present, there is no upper limit; if the second number and the comma + are both omitted, the quantifier specifies an exact number of required matches. Thus [aeiou]{3,} @@ -3945,20 +4003,23 @@ REPETITION \d{8} - matches exactly 8 digits. An opening curly bracket that appears in a - position where a quantifier is not allowed, or one that does not match - the syntax of a quantifier, is taken as a literal character. For exam- + matches exactly 8 digits. An opening curly bracket that appears in a + position where a quantifier is not allowed, or one that does not match + the syntax of a quantifier, is taken as a literal character. For exam- ple, {,6} is not a quantifier, but a literal string of four characters. - In UTF-8 mode, quantifiers apply to UTF-8 characters rather than to + In UTF-8 mode, quantifiers apply to UTF-8 characters rather than to individual bytes. Thus, for example, \x{100}{2} matches two UTF-8 char- acters, each of which is represented by a two-byte sequence. Similarly, when Unicode property support is available, \X{3} matches three Unicode - extended sequences, each of which may be several bytes long (and they + extended sequences, each of which may be several bytes long (and they may be of different lengths). The quantifier {0} is permitted, causing the expression to behave as if - the previous item and the quantifier were not present. + the previous item and the quantifier were not present. This may be use- + ful for subpatterns that are referenced as subroutines from elsewhere + in the pattern. Items other than subpatterns that have a {0} quantifier + are omitted from the compiled pattern. For convenience, the three most common quantifiers have single-charac- ter abbreviations: @@ -4736,54 +4797,76 @@ SUBPATTERNS AS SUBROUTINES processing option does not affect the called subpattern. +ONIGURUMA SUBROUTINE SYNTAX + + For compatibility with Oniguruma, the non-Perl syntax \g followed by a + name or a number enclosed either in angle brackets or single quotes, is + an alternative syntax for referencing a subpattern as a subroutine, + possibly recursively. Here are two of the examples used above, rewrit- + ten using this syntax: + + (? \( ( (?>[^()]+) | \g )* \) ) + (sens|respons)e and \g'1'ibility + + PCRE supports an extension to Oniguruma: if a number is preceded by a + plus or a minus sign it is taken as a relative reference. For example: + + (abc)(?i:\g<-1>) + + Note that \g{...} (Perl syntax) and \g<...> (Oniguruma syntax) are not + synonymous. The former is a back reference; the latter is a subroutine + call. + + CALLOUTS Perl has a feature whereby using the sequence (?{...}) causes arbitrary - Perl code to be obeyed in the middle of matching a regular expression. + Perl code to be obeyed in the middle of matching a regular expression. This makes it possible, amongst other things, to extract different sub- strings that match the same pair of parentheses when there is a repeti- tion. PCRE provides a similar feature, but of course it cannot obey arbitrary Perl code. The feature is called "callout". The caller of PCRE provides - an external function by putting its entry point in the global variable - pcre_callout. By default, this variable contains NULL, which disables + an external function by putting its entry point in the global variable + pcre_callout. By default, this variable contains NULL, which disables all calling out. - Within a regular expression, (?C) indicates the points at which the - external function is to be called. If you want to identify different - callout points, you can put a number less than 256 after the letter C. - The default value is zero. For example, this pattern has two callout + Within a regular expression, (?C) indicates the points at which the + external function is to be called. If you want to identify different + callout points, you can put a number less than 256 after the letter C. + The default value is zero. For example, this pattern has two callout points: (?C1)abc(?C2)def If the PCRE_AUTO_CALLOUT flag is passed to pcre_compile(), callouts are - automatically installed before each item in the pattern. They are all + automatically installed before each item in the pattern. They are all numbered 255. During matching, when PCRE reaches a callout point (and pcre_callout is - set), the external function is called. It is provided with the number - of the callout, the position in the pattern, and, optionally, one item - of data originally supplied by the caller of pcre_exec(). The callout - function may cause matching to proceed, to backtrack, or to fail alto- + set), the external function is called. It is provided with the number + of the callout, the position in the pattern, and, optionally, one item + of data originally supplied by the caller of pcre_exec(). The callout + function may cause matching to proceed, to backtrack, or to fail alto- gether. A complete description of the interface to the callout function is given in the pcrecallout documentation. BACKTRACKING CONTROL - Perl 5.10 introduced a number of "Special Backtracking Control Verbs", + Perl 5.10 introduced a number of "Special Backtracking Control Verbs", which are described in the Perl documentation as "experimental and sub- - ject to change or removal in a future version of Perl". It goes on to - say: "Their usage in production code should be noted to avoid problems + ject to change or removal in a future version of Perl". It goes on to + say: "Their usage in production code should be noted to avoid problems during upgrades." The same remarks apply to the PCRE features described in this section. - Since these verbs are specifically related to backtracking, they can be - used only when the pattern is to be matched using pcre_exec(), which - uses a backtracking algorithm. They cause an error if encountered by - pcre_dfa_exec(). + Since these verbs are specifically related to backtracking, most of + them can be used only when the pattern is to be matched using + pcre_exec(), which uses a backtracking algorithm. With the exception of + (*FAIL), which behaves like a failing negative assertion, they cause an + error if encountered by pcre_dfa_exec(). The new verbs make use of what was previously invalid syntax: an open- ing parenthesis followed by an asterisk. In Perl, they are generally of @@ -4902,8 +4985,8 @@ AUTHOR REVISION - Last updated: 17 September 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 19 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -5161,6 +5244,14 @@ SUBROUTINE REFERENCES (POSSIBLY RECURSIVE) (?-n) call subpattern by relative number (?&name) call subpattern by name (Perl) (?P>name) call subpattern by name (Python) + \g call subpattern by name (Oniguruma) + \g'name' call subpattern by name (Oniguruma) + \g call subpattern by absolute number (Oniguruma) + \g'n' call subpattern by absolute number (Oniguruma) + \g<+n> call subpattern by relative number (PCRE extension) + \g'+n' call subpattern by relative number (PCRE extension) + \g<-n> call subpattern by relative number (PCRE extension) + \g'-n' call subpattern by relative number (PCRE extension) CONDITIONAL PATTERNS @@ -5240,8 +5331,8 @@ AUTHOR REVISION - Last updated: 14 November 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 09 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -5896,8 +5987,9 @@ MATCHING NEWLINE CHARACTERS MATCHING A PATTERN The function regexec() is called to match a compiled pattern preg - against a given string, which is terminated by a zero byte, subject to - the options in eflags. These can be: + against a given string, which is by default terminated by a zero byte + (but see REG_STARTEND below), subject to the options in eflags. These + can be: REG_NOTBOL @@ -5909,6 +6001,17 @@ MATCHING A PATTERN The PCRE_NOTEOL option is set when calling the underlying PCRE matching function. + REG_STARTEND + + The string is considered to start at string + pmatch[0].rm_so and to + have a terminating NUL located at string + pmatch[0].rm_eo (there need + not actually be a NUL at that location), regardless of the value of + nmatch. This is a BSD extension, compatible with but not specified by + IEEE Standard 1003.2 (POSIX.2), and should be used with caution in + software intended to be portable to other systems. Note that a non-zero + rm_so does not imply REG_NOTBOL; REG_STARTEND affects only the location + of the string, not how it is matched. + If the pattern was compiled with the REG_NOSUB flag, no data about any matched strings is returned. The nmatch and pmatch arguments of regexec() are ignored. @@ -5955,8 +6058,8 @@ AUTHOR REVISION - Last updated: 06 March 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 05 April 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ @@ -6437,6 +6540,8 @@ PCRE DISCUSSION OF STACK USAGE ing long subject strings is to write repeated parenthesized subpatterns to match more than one character whenever possible. + Compiling PCRE to use heap instead of stack + In environments where stack memory is constrained, you might want to compile PCRE to use heap memory instead of stack for remembering back- up points. This makes it run a lot more slowly, however. Details of how @@ -6449,6 +6554,24 @@ PCRE DISCUSSION OF STACK USAGE freed in reverse order, it may be possible to implement customized mem- ory handlers that are more efficient than the standard functions. + Limiting PCRE's stack usage + + PCRE has an internal counter that can be used to limit the depth of + recursion, and thus cause pcre_exec() to give an error code before it + runs out of stack. By default, the limit is very large, and unlikely + ever to operate. It can be changed when PCRE is built, and it can also + be set when pcre_exec() is called. For details of these interfaces, see + the pcrebuild and pcreapi documentation. + + As a very rough rule of thumb, you should reckon on about 500 bytes per + recursion. Thus, if you want to limit your stack usage to 8Mb, you + should set the limit at 16000 recursions. A 64Mb stack, on the other + hand, can support around 128000 recursions. The pcretest test program + has a command line option (-S) that can be used to increase the size of + its stack. + + Changing stack size in Unix-like systems + In Unix-like environments, there is not often a problem with the stack unless very long strings are involved, though the default limit on stack size varies from system to system. Values from 8Mb to 64Mb are @@ -6469,19 +6592,12 @@ PCRE DISCUSSION OF STACK USAGE attempts to increase the soft limit to 100Mb using setrlimit(). You must do this before calling pcre_exec(). - PCRE has an internal counter that can be used to limit the depth of - recursion, and thus cause pcre_exec() to give an error code before it - runs out of stack. By default, the limit is very large, and unlikely - ever to operate. It can be changed when PCRE is built, and it can also - be set when pcre_exec() is called. For details of these interfaces, see - the pcrebuild and pcreapi documentation. + Changing stack size in Mac OS X - As a very rough rule of thumb, you should reckon on about 500 bytes per - recursion. Thus, if you want to limit your stack usage to 8Mb, you - should set the limit at 16000 recursions. A 64Mb stack, on the other - hand, can support around 128000 recursions. The pcretest test program - has a command line option (-S) that can be used to increase the size of - its stack. + Using setrlimit(), as described above, should also work on Mac OS X. It + is also possible to set a stack size when linking a program. There is a + discussion about stack sizes in Mac OS X at this web site: + http://developer.apple.com/qa/qa2005/qa1419.html. AUTHOR @@ -6493,8 +6609,8 @@ AUTHOR REVISION - Last updated: 05 June 2007 - Copyright (c) 1997-2007 University of Cambridge. + Last updated: 09 July 2008 + Copyright (c) 1997-2008 University of Cambridge. ------------------------------------------------------------------------------ diff --git a/ext/pcre/pcrelib/pcre.h b/ext/pcre/pcrelib/pcre.h index c85c32ea3..efd105a40 100644 --- a/ext/pcre/pcrelib/pcre.h +++ b/ext/pcre/pcrelib/pcre.h @@ -5,7 +5,7 @@ /* This is the public header file for the PCRE library, to be #included by applications that call the PCRE functions. - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE. /* The current PCRE version information. */ #define PCRE_MAJOR 7 -#define PCRE_MINOR 6 +#define PCRE_MINOR 8 #define PCRE_PRERELEASE -#define PCRE_DATE 2008-01-28 +#define PCRE_DATE 2008-09-05 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE, the appropriate @@ -124,6 +124,7 @@ extern "C" { #define PCRE_NEWLINE_ANYCRLF 0x00500000 #define PCRE_BSR_ANYCRLF 0x00800000 #define PCRE_BSR_UNICODE 0x01000000 +#define PCRE_JAVASCRIPT_COMPAT 0x02000000 /* Exec-time and get/set-time error codes */ diff --git a/ext/pcre/pcrelib/pcre_compile.c b/ext/pcre/pcrelib/pcre_compile.c index 07b6369d6..b079d1962 100644 --- a/ext/pcre/pcrelib/pcre_compile.c +++ b/ext/pcre/pcrelib/pcre_compile.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -156,7 +156,7 @@ static const char verbnames[] = "SKIP\0" "THEN"; -static verbitem verbs[] = { +static const verbitem verbs[] = { { 6, OP_ACCEPT }, { 6, OP_COMMIT }, { 1, OP_FAIL }, @@ -166,7 +166,7 @@ static verbitem verbs[] = { { 4, OP_THEN } }; -static int verbcount = sizeof(verbs)/sizeof(verbitem); +static const int verbcount = sizeof(verbs)/sizeof(verbitem); /* Tables of names of POSIX character classes and their lengths. The names are @@ -293,14 +293,15 @@ static const char error_texts[] = /* 55 */ "repeating a DEFINE group is not allowed\0" "inconsistent NEWLINE options\0" - "\\g is not followed by a braced name or an optionally braced non-zero number\0" - "(?+ or (?- or (?(+ or (?(- must be followed by a non-zero number\0" + "\\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number\0" + "a numbered reference must not be zero\0" "(*VERB) with an argument is not supported\0" /* 60 */ "(*VERB) not recognized\0" "number is too big\0" "subpattern name expected\0" - "digit expected after (?+"; + "digit expected after (?+\0" + "] is an invalid data character in JavaScript compatibility mode"; /* Table to identify digits and hex digits. This is used when compiling @@ -452,7 +453,7 @@ static const char * find_error_text(int n) { const char *s = error_texts; -for (; n > 0; n--) while (*s++ != 0); +for (; n > 0; n--) while (*s++ != 0) {}; return s; } @@ -529,14 +530,31 @@ else *errorcodeptr = ERR37; break; - /* \g must be followed by a number, either plain or braced. If positive, it - is an absolute backreference. If negative, it is a relative backreference. - This is a Perl 5.10 feature. Perl 5.10 also supports \g{name} as a - reference to a named group. This is part of Perl's movement towards a - unified syntax for back references. As this is synonymous with \k{name}, we - fudge it up by pretending it really was \k. */ + /* \g must be followed by one of a number of specific things: + + (1) A number, either plain or braced. If positive, it is an absolute + backreference. If negative, it is a relative backreference. This is a Perl + 5.10 feature. + + (2) Perl 5.10 also supports \g{name} as a reference to a named group. This + is part of Perl's movement towards a unified syntax for back references. As + this is synonymous with \k{name}, we fudge it up by pretending it really + was \k. + + (3) For Oniguruma compatibility we also support \g followed by a name or a + number either in angle brackets or in single quotes. However, these are + (possibly recursive) subroutine calls, _not_ backreferences. Just return + the -ESC_g code (cf \k). */ case 'g': + if (ptr[1] == '<' || ptr[1] == '\'') + { + c = -ESC_g; + break; + } + + /* Handle the Perl-compatible cases */ + if (ptr[1] == '{') { const uschar *p; @@ -563,18 +581,24 @@ else while ((digitab[ptr[1]] & ctype_digit) != 0) c = c * 10 + *(++ptr) - '0'; - if (c < 0) + if (c < 0) /* Integer overflow */ { *errorcodeptr = ERR61; break; } - if (c == 0 || (braced && *(++ptr) != '}')) + if (braced && *(++ptr) != '}') { *errorcodeptr = ERR57; break; } + if (c == 0) + { + *errorcodeptr = ERR58; + break; + } + if (negated) { if (c > bracount) @@ -609,7 +633,7 @@ else c -= '0'; while ((digitab[ptr[1]] & ctype_digit) != 0) c = c * 10 + *(++ptr) - '0'; - if (c < 0) + if (c < 0) /* Integer overflow */ { *errorcodeptr = ERR61; break; @@ -950,7 +974,7 @@ be terminated by '>' because that is checked in the first pass. Arguments: ptr current position in the pattern - count current count of capturing parens so far encountered + cd compile background data name name to seek, or NULL if seeking a numbered subpattern lorn name length, or subpattern number if name is NULL xmode TRUE if we are in /x mode @@ -959,10 +983,11 @@ Returns: the number of the named subpattern, or -1 if not found */ static int -find_parens(const uschar *ptr, int count, const uschar *name, int lorn, +find_parens(const uschar *ptr, compile_data *cd, const uschar *name, int lorn, BOOL xmode) { const uschar *thisname; +int count = cd->bracount; for (; *ptr != 0; ptr++) { @@ -975,17 +1000,41 @@ for (; *ptr != 0; ptr++) if (*(++ptr) == 0) return -1; if (*ptr == 'Q') for (;;) { - while (*(++ptr) != 0 && *ptr != '\\'); + while (*(++ptr) != 0 && *ptr != '\\') {}; if (*ptr == 0) return -1; if (*(++ptr) == 'E') break; } continue; } - /* Skip over character classes */ + /* Skip over character classes; this logic must be similar to the way they + are handled for real. If the first character is '^', skip it. Also, if the + first few characters (either before or after ^) are \Q\E or \E we skip them + too. This makes for compatibility with Perl. */ if (*ptr == '[') { + BOOL negate_class = FALSE; + for (;;) + { + int c = *(++ptr); + if (c == '\\') + { + if (ptr[1] == 'E') ptr++; + else if (strncmp((const char *)ptr+1, "Q\\E", 3) == 0) ptr += 3; + else break; + } + else if (!negate_class && c == '^') + negate_class = TRUE; + else break; + } + + /* If the next character is ']', it is a data character that must be + skipped, except in JavaScript compatibility mode. */ + + if (ptr[1] == ']' && (cd->external_options & PCRE_JAVASCRIPT_COMPAT) == 0) + ptr++; + while (*(++ptr) != ']') { if (*ptr == 0) return -1; @@ -994,7 +1043,7 @@ for (; *ptr != 0; ptr++) if (*(++ptr) == 0) return -1; if (*ptr == 'Q') for (;;) { - while (*(++ptr) != 0 && *ptr != '\\'); + while (*(++ptr) != 0 && *ptr != '\\') {}; if (*ptr == 0) return -1; if (*(++ptr) == 'E') break; } @@ -1008,7 +1057,7 @@ for (; *ptr != 0; ptr++) if (xmode && *ptr == '#') { - while (*(++ptr) != 0 && *ptr != '\n'); + while (*(++ptr) != 0 && *ptr != '\n') {}; if (*ptr == 0) return -1; continue; } @@ -1250,6 +1299,7 @@ for (;;) case OP_NOT_WORDCHAR: case OP_WORDCHAR: case OP_ANY: + case OP_ALLANY: branchlength++; cc++; break; @@ -1398,6 +1448,8 @@ for (;;) if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f]; break; } +#else + (void)(utf8); /* Keep compiler happy by referencing function argument */ #endif } } @@ -1491,6 +1543,8 @@ for (;;) if (code[-1] >= 0xc0) code += _pcre_utf8_table4[code[-1] & 0x3f]; break; } +#else + (void)(utf8); /* Keep compiler happy by referencing function argument */ #endif } } @@ -1542,7 +1596,7 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE /* Groups with zero repeats can of course be empty; skip them. */ - if (c == OP_BRAZERO || c == OP_BRAMINZERO) + if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO) { code += _pcre_OP_lengths[c]; do code += GET(code, 1); while (*code == OP_ALT); @@ -1628,6 +1682,7 @@ for (code = first_significant_code(code + _pcre_OP_lengths[*code], NULL, 0, TRUE case OP_NOT_WORDCHAR: case OP_WORDCHAR: case OP_ANY: + case OP_ALLANY: case OP_ANYBYTE: case OP_CHAR: case OP_CHARNC: @@ -1822,11 +1877,12 @@ return -1; that is referenced. This means that groups can be replicated for fixed repetition simply by copying (because the recursion is allowed to refer to earlier groups that are outside the current group). However, when a group is -optional (i.e. the minimum quantifier is zero), OP_BRAZERO is inserted before -it, after it has been compiled. This means that any OP_RECURSE items within it -that refer to the group itself or any contained groups have to have their -offsets adjusted. That one of the jobs of this function. Before it is called, -the partially compiled regex must be temporarily terminated with OP_END. +optional (i.e. the minimum quantifier is zero), OP_BRAZERO or OP_SKIPZERO is +inserted before it, after it has been compiled. This means that any OP_RECURSE +items within it that refer to the group itself or any contained groups have to +have their offsets adjusted. That one of the jobs of this function. Before it +is called, the partially compiled regex must be temporarily terminated with +OP_END. This function has been extended with the possibility of forward references for recursions and subroutine calls. It must also check the list of such references @@ -1961,7 +2017,7 @@ get_othercase_range(unsigned int *cptr, unsigned int d, unsigned int *ocptr, unsigned int c, othercase, next; for (c = *cptr; c <= d; c++) - { if ((othercase = _pcre_ucp_othercase(c)) != NOTACHAR) break; } + { if ((othercase = UCD_OTHERCASE(c)) != c) break; } if (c > d) return FALSE; @@ -1970,7 +2026,7 @@ next = othercase + 1; for (++c; c <= d; c++) { - if (_pcre_ucp_othercase(c) != next) break; + if (UCD_OTHERCASE(c) != next) break; next++; } @@ -2080,6 +2136,8 @@ if (next >= 0) switch(op_code) case OP_CHAR: #ifdef SUPPORT_UTF8 if (utf8 && item > 127) { GETCHAR(item, utf8_char); } +#else + (void)(utf8_char); /* Keep compiler happy by referencing function argument */ #endif return item != next; @@ -2098,7 +2156,7 @@ if (next >= 0) switch(op_code) unsigned int othercase; if (next < 128) othercase = cd->fcc[next]; else #ifdef SUPPORT_UCP - othercase = _pcre_ucp_othercase((unsigned int)next); + othercase = UCD_OTHERCASE((unsigned int)next); #else othercase = NOTACHAR; #endif @@ -2111,7 +2169,6 @@ if (next >= 0) switch(op_code) /* For OP_NOT, "item" must be a single-byte character. */ case OP_NOT: - if (next < 0) return FALSE; /* Not a character */ if (item == next) return TRUE; if ((options & PCRE_CASELESS) == 0) return FALSE; #ifdef SUPPORT_UTF8 @@ -2120,7 +2177,7 @@ if (next >= 0) switch(op_code) unsigned int othercase; if (next < 128) othercase = cd->fcc[next]; else #ifdef SUPPORT_UCP - othercase = _pcre_ucp_othercase(next); + othercase = UCD_OTHERCASE(next); #else othercase = NOTACHAR; #endif @@ -2614,7 +2671,7 @@ for (;; ptr++) zerofirstbyte = firstbyte; zeroreqbyte = reqbyte; previous = code; - *code++ = OP_ANY; + *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY; break; @@ -2629,7 +2686,17 @@ for (;; ptr++) opcode is compiled. It may optionally have a bit map for characters < 256, but those above are are explicitly listed afterwards. A flag byte tells whether the bitmap is present, and whether this is a negated class or not. - */ + + In JavaScript compatibility mode, an isolated ']' causes an error. In + default (Perl) mode, it is treated as a data character. */ + + case ']': + if ((cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) + { + *errorcodeptr = ERR64; + goto FAILED; + } + goto NORMAL_CHAR; case '[': previous = code; @@ -2663,6 +2730,19 @@ for (;; ptr++) else break; } + /* Empty classes are allowed in JavaScript compatibility mode. Otherwise, + an initial ']' is taken as a data character -- the code below handles + that. In JS mode, [] must always fail, so generate OP_FAIL, whereas + [^] must match any character, so generate OP_ALLANY. */ + + if (c ==']' && (cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) + { + *code++ = negate_class? OP_ALLANY : OP_FAIL; + if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE; + zerofirstbyte = firstbyte; + break; + } + /* If a class contains a negative special such as \S, we need to flip the negation flag at the end, so that support for characters > 255 works correctly (they are all included in the class). */ @@ -3263,7 +3343,7 @@ for (;; ptr++) if ((options & PCRE_CASELESS) != 0) { unsigned int othercase; - if ((othercase = _pcre_ucp_othercase(c)) != NOTACHAR) + if ((othercase = UCD_OTHERCASE(c)) != c) { *class_utf8data++ = XCL_SINGLE; class_utf8data += _pcre_ord2utf8(othercase, class_utf8data); @@ -3818,28 +3898,38 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (repeat_min == 0) { - /* If the maximum is also zero, we just omit the group from the output - altogether. */ - - if (repeat_max == 0) - { - code = previous; - goto END_REPEAT; - } - - /* If the maximum is 1 or unlimited, we just have to stick in the - BRAZERO and do no more at this point. However, we do need to adjust - any OP_RECURSE calls inside the group that refer to the group itself or - any internal or forward referenced group, because the offset is from - the start of the whole regex. Temporarily terminate the pattern while - doing this. */ - - if (repeat_max <= 1) + /* If the maximum is also zero, we used to just omit the group from the + output altogether, like this: + + ** if (repeat_max == 0) + ** { + ** code = previous; + ** goto END_REPEAT; + ** } + + However, that fails when a group is referenced as a subroutine from + elsewhere in the pattern, so now we stick in OP_SKIPZERO in front of it + so that it is skipped on execution. As we don't have a list of which + groups are referenced, we cannot do this selectively. + + If the maximum is 1 or unlimited, we just have to stick in the BRAZERO + and do no more at this point. However, we do need to adjust any + OP_RECURSE calls inside the group that refer to the group itself or any + internal or forward referenced group, because the offset is from the + start of the whole regex. Temporarily terminate the pattern while doing + this. */ + + if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ { *code = OP_END; adjust_recurse(previous, 1, utf8, cd, save_hwm); memmove(previous+1, previous, len); code++; + if (repeat_max == 0) + { + *previous++ = OP_SKIPZERO; + goto END_REPEAT; + } *previous++ = OP_BRAZERO + repeat_type; } @@ -4034,6 +4124,13 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ } } + /* If previous is OP_FAIL, it was generated by an empty class [] in + JavaScript mode. The other ways in which OP_FAIL can be generated, that is + by (*FAIL) or (?!) set previous to NULL, which gives a "nothing to repeat" + error above. We can just ignore the repeat in JS case. */ + + else if (*previous == OP_FAIL) goto END_REPEAT; + /* Else there's some kind of shambles */ else @@ -4123,7 +4220,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ const char *vn = verbnames; const uschar *name = ++ptr; previous = NULL; - while ((cd->ctypes[*++ptr] & ctype_letter) != 0); + while ((cd->ctypes[*++ptr] & ctype_letter) != 0) {}; if (*ptr == ':') { *errorcodeptr = ERR59; /* Not supported */ @@ -4320,7 +4417,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ /* Search the pattern for a forward reference */ - else if ((i = find_parens(ptr, cd->bracount, name, namelen, + else if ((i = find_parens(ptr, cd, name, namelen, (options & PCRE_EXTENDED) != 0)) > 0) { PUT2(code, 2+LINK_SIZE, i); @@ -4566,7 +4663,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ references (?P=name) and recursion (?P>name), as well as falling through from the Perl recursion syntax (?&name). We also come here from the Perl \k or \k'name' back reference syntax and the \k{name} - .NET syntax. */ + .NET syntax, and the Oniguruma \g<...> and \g'...' subroutine syntax. */ NAMED_REF_OR_RECURSE: name = ++ptr; @@ -4617,7 +4714,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ recno = GET2(slot, 0); } else if ((recno = /* Forward back reference */ - find_parens(ptr, cd->bracount, name, namelen, + find_parens(ptr, cd, name, namelen, (options & PCRE_EXTENDED) != 0)) <= 0) { *errorcodeptr = ERR15; @@ -4644,6 +4741,15 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ case '5': case '6': case '7': case '8': case '9': /* subroutine */ { const uschar *called; + terminator = ')'; + + /* Come here from the \g<...> and \g'...' code (Oniguruma + compatibility). However, the syntax has been checked to ensure that + the ... are a (signed) number, so that neither ERR63 nor ERR29 will + be called on this path, nor with the jump to OTHER_CHAR_AFTER_QUERY + ever be taken. */ + + HANDLE_NUMERICAL_RECURSION: if ((refsign = *ptr) == '+') { @@ -4665,7 +4771,7 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ while((digitab[*ptr] & ctype_digit) != 0) recno = recno * 10 + *ptr++ - '0'; - if (*ptr != ')') + if (*ptr != terminator) { *errorcodeptr = ERR29; goto FAILED; @@ -4718,8 +4824,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ if (called == NULL) { - if (find_parens(ptr, cd->bracount, NULL, recno, - (options & PCRE_EXTENDED) != 0) < 0) + if (find_parens(ptr, cd, NULL, recno, + (options & PCRE_EXTENDED) != 0) < 0) { *errorcodeptr = ERR15; goto FAILED; @@ -4818,10 +4924,8 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ both phases. If we are not at the pattern start, compile code to change the ims - options if this setting actually changes any of them. We also pass the - new setting back so that it can be put at the start of any following - branches, and when this group ends (if we are in a group), a resetting - item can be compiled. */ + options if this setting actually changes any of them, and reset the + greedy defaults and the case value for firstbyte and reqbyte. */ if (*ptr == ')') { @@ -4829,7 +4933,6 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE)) { cd->external_options = newoptions; - options = newoptions; } else { @@ -4838,17 +4941,17 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ *code++ = OP_OPT; *code++ = newoptions & PCRE_IMS; } - - /* Change options at this level, and pass them back for use - in subsequent branches. Reset the greedy defaults and the case - value for firstbyte and reqbyte. */ - - *optionsptr = options = newoptions; greedy_default = ((newoptions & PCRE_UNGREEDY) != 0); greedy_non_default = greedy_default ^ 1; - req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS : 0; + req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS : 0; } + /* Change options at this level, and pass them back for use + in subsequent branches. When not at the start of the pattern, this + information is also necessary so that a resetting item can be + compiled at the end of a group (if we are in a group). */ + + *optionsptr = options = newoptions; previous = NULL; /* This item can't be repeated */ continue; /* It is complete */ } @@ -5089,6 +5192,64 @@ we set the flag only if there is a literal "\r" or "\n" in the class. */ zerofirstbyte = firstbyte; zeroreqbyte = reqbyte; + /* \g or \g'name' is a subroutine call by name and \g or \g'n' + is a subroutine call by number (Oniguruma syntax). In fact, the value + -ESC_g is returned only for these cases. So we don't need to check for < + or ' if the value is -ESC_g. For the Perl syntax \g{n} the value is + -ESC_REF+n, and for the Perl syntax \g{name} the result is -ESC_k (as + that is a synonym for a named back reference). */ + + if (-c == ESC_g) + { + const uschar *p; + save_hwm = cd->hwm; /* Normally this is set when '(' is read */ + terminator = (*(++ptr) == '<')? '>' : '\''; + + /* These two statements stop the compiler for warning about possibly + unset variables caused by the jump to HANDLE_NUMERICAL_RECURSION. In + fact, because we actually check for a number below, the paths that + would actually be in error are never taken. */ + + skipbytes = 0; + reset_bracount = FALSE; + + /* Test for a name */ + + if (ptr[1] != '+' && ptr[1] != '-') + { + BOOL isnumber = TRUE; + for (p = ptr + 1; *p != 0 && *p != terminator; p++) + { + if ((cd->ctypes[*p] & ctype_digit) == 0) isnumber = FALSE; + if ((cd->ctypes[*p] & ctype_word) == 0) break; + } + if (*p != terminator) + { + *errorcodeptr = ERR57; + break; + } + if (isnumber) + { + ptr++; + goto HANDLE_NUMERICAL_RECURSION; + } + is_recurse = TRUE; + goto NAMED_REF_OR_RECURSE; + } + + /* Test a signed number in angle brackets or quotes. */ + + p = ptr + 2; + while ((digitab[*p] & ctype_digit) != 0) p++; + if (*p != terminator) + { + *errorcodeptr = ERR57; + break; + } + ptr++; + goto HANDLE_NUMERICAL_RECURSION; + } + /* \k or \k'name' is a back reference by name (Perl syntax). We also support \k{name} (.NET syntax) */ @@ -5595,14 +5756,14 @@ do { if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE; } - /* .* is not anchored unless DOTALL is set and it isn't in brackets that - are or may be referenced. */ + /* .* is not anchored unless DOTALL is set (which generates OP_ALLANY) and + it isn't in brackets that are or may be referenced. */ else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR || - op == OP_TYPEPOSSTAR) && - (*options & PCRE_DOTALL) != 0) + op == OP_TYPEPOSSTAR)) { - if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE; + if (scode[1] != OP_ALLANY || (bracket_map & backref_map) != 0) + return FALSE; } /* Check for explicit anchoring */ @@ -5784,7 +5945,7 @@ Returns: pointer to compiled data block, or NULL on error, with errorptr and erroroffset set */ -PCRE_EXP_DEFN pcre * +PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION pcre_compile(const char *pattern, int options, const char **errorptr, int *erroroffset, const unsigned char *tables) { @@ -5792,7 +5953,7 @@ return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables); } -PCRE_EXP_DEFN pcre * +PCRE_EXP_DEFN pcre * PCRE_CALL_CONVENTION pcre_compile2(const char *pattern, int options, int *errorcodeptr, const char **errorptr, int *erroroffset, const unsigned char *tables) { diff --git a/ext/pcre/pcrelib/pcre_config.c b/ext/pcre/pcrelib/pcre_config.c index 32f9047b0..5796f75d7 100644 --- a/ext/pcre/pcrelib/pcre_config.c +++ b/ext/pcre/pcrelib/pcre_config.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -60,7 +60,7 @@ Arguments: Returns: 0 if data returned, negative on error */ -PCRE_EXP_DEFN int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_config(int what, void *where) { switch (what) diff --git a/ext/pcre/pcrelib/pcre_exec.c b/ext/pcre/pcrelib/pcre_exec.c index 5520d153b..91b504773 100644 --- a/ext/pcre/pcrelib/pcre_exec.c +++ b/ext/pcre/pcrelib/pcre_exec.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -156,13 +156,39 @@ printf("\n"); if (length > md->end_subject - eptr) return FALSE; -/* Separate the caselesss case for speed */ +/* Separate the caseless case for speed. In UTF-8 mode we can only do this +properly if Unicode properties are supported. Otherwise, we can check only +ASCII characters. */ if ((ims & PCRE_CASELESS) != 0) { +#ifdef SUPPORT_UTF8 +#ifdef SUPPORT_UCP + if (md->utf8) + { + USPTR endptr = eptr + length; + while (eptr < endptr) + { + int c, d; + GETCHARINC(c, eptr); + GETCHARINC(d, p); + if (c != d && c != UCD_OTHERCASE(d)) return FALSE; + } + } + else +#endif +#endif + + /* The same code works when not in UTF-8 mode and in UTF-8 mode when there + is no UCP support. */ + while (length-- > 0) - if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE; + { if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE; } } + +/* In the caseful case, we can just compare the bytes, whether or not we +are in UTF-8 mode. */ + else { while (length-- > 0) if (*p++ != *eptr++) return FALSE; } @@ -1146,11 +1172,11 @@ for (;;) do ecode += GET(ecode,1); while (*ecode == OP_ALT); break; - /* BRAZERO and BRAMINZERO occur just before a bracket group, indicating - that it may occur zero times. It may repeat infinitely, or not at all - - i.e. it could be ()* or ()? in the pattern. Brackets with fixed upper - repeat limits are compiled as a number of copies, with the optional ones - preceded by BRAZERO or BRAMINZERO. */ + /* BRAZERO, BRAMINZERO and SKIPZERO occur just before a bracket group, + indicating that it may occur zero times. It may repeat infinitely, or not + at all - i.e. it could be ()* or ()? or even (){0} in the pattern. Brackets + with fixed upper repeat limits are compiled as a number of copies, with the + optional ones preceded by BRAZERO or BRAMINZERO. */ case OP_BRAZERO: { @@ -1172,6 +1198,14 @@ for (;;) } break; + case OP_SKIPZERO: + { + next = ecode+1; + do next += GET(next,1); while (*next == OP_ALT); + ecode = next + 1 + LINK_SIZE; + } + break; + /* End of a group, repeated or non-repeating. */ case OP_KET: @@ -1419,13 +1453,12 @@ for (;;) /* Match a single character type; inline for speed */ case OP_ANY: - if ((ims & PCRE_DOTALL) == 0) - { - if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); - } + if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); + /* Fall through */ + + case OP_ALLANY: if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH); - if (utf8) - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; ecode++; break; @@ -1644,8 +1677,7 @@ for (;;) if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); { - int chartype, script; - int category = _pcre_ucp_findprop(c, &chartype, &script); + const ucd_record * prop = GET_UCD(c); switch(ecode[1]) { @@ -1654,24 +1686,24 @@ for (;;) break; case PT_LAMP: - if ((chartype == ucp_Lu || - chartype == ucp_Ll || - chartype == ucp_Lt) == (op == OP_NOTPROP)) + if ((prop->chartype == ucp_Lu || + prop->chartype == ucp_Ll || + prop->chartype == ucp_Lt) == (op == OP_NOTPROP)) RRETURN(MATCH_NOMATCH); break; case PT_GC: - if ((ecode[2] != category) == (op == OP_PROP)) + if ((ecode[2] != _pcre_ucp_gentype[prop->chartype]) == (op == OP_PROP)) RRETURN(MATCH_NOMATCH); break; case PT_PC: - if ((ecode[2] != chartype) == (op == OP_PROP)) + if ((ecode[2] != prop->chartype) == (op == OP_PROP)) RRETURN(MATCH_NOMATCH); break; case PT_SC: - if ((ecode[2] != script) == (op == OP_PROP)) + if ((ecode[2] != prop->script) == (op == OP_PROP)) RRETURN(MATCH_NOMATCH); break; @@ -1690,8 +1722,7 @@ for (;;) if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); { - int chartype, script; - int category = _pcre_ucp_findprop(c, &chartype, &script); + int category = UCD_CATEGORY(c); if (category == ucp_M) RRETURN(MATCH_NOMATCH); while (eptr < md->end_subject) { @@ -1700,7 +1731,7 @@ for (;;) { GETCHARLEN(c, eptr, len); } - category = _pcre_ucp_findprop(c, &chartype, &script); + category = UCD_CATEGORY(c); if (category != ucp_M) break; eptr += len; } @@ -1721,16 +1752,25 @@ for (;;) case OP_REF: { offset = GET2(ecode, 1) << 1; /* Doubled ref number */ - ecode += 3; /* Advance past item */ + ecode += 3; - /* If the reference is unset, set the length to be longer than the amount - of subject left; this ensures that every attempt at a match fails. We - can't just fail here, because of the possibility of quantifiers with zero - minima. */ + /* If the reference is unset, there are two possibilities: - length = (offset >= offset_top || md->offset_vector[offset] < 0)? - md->end_subject - eptr + 1 : - md->offset_vector[offset+1] - md->offset_vector[offset]; + (a) In the default, Perl-compatible state, set the length to be longer + than the amount of subject left; this ensures that every attempt at a + match fails. We can't just fail here, because of the possibility of + quantifiers with zero minima. + + (b) If the JavaScript compatibility flag is set, set the length to zero + so that the back reference matches an empty string. + + Otherwise, set the length to the length of what was matched by the + referenced subpattern. */ + + if (offset >= offset_top || md->offset_vector[offset] < 0) + length = (md->jscript_compat)? 0 : md->end_subject - eptr + 1; + else + length = md->offset_vector[offset+1] - md->offset_vector[offset]; /* Set up for repetition, or handle the non-repeated case */ @@ -2156,7 +2196,7 @@ for (;;) if (fc != dc) { #ifdef SUPPORT_UCP - if (dc != _pcre_ucp_othercase(fc)) + if (dc != UCD_OTHERCASE(fc)) #endif RRETURN(MATCH_NOMATCH); } @@ -2247,7 +2287,7 @@ for (;;) #ifdef SUPPORT_UCP unsigned int othercase; if ((ims & PCRE_CASELESS) != 0 && - (othercase = _pcre_ucp_othercase(fc)) != NOTACHAR) + (othercase = UCD_OTHERCASE(fc)) != fc) oclength = _pcre_ord2utf8(othercase, occhars); else oclength = 0; #endif /* SUPPORT_UCP */ @@ -2567,10 +2607,11 @@ for (;;) { RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM28); if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(d, eptr); if (d < 256) d = md->lcc[d]; - if (fi >= max || eptr >= md->end_subject || fc == d) - RRETURN(MATCH_NOMATCH); + if (fc == d) RRETURN(MATCH_NOMATCH); + } } else @@ -2676,9 +2717,9 @@ for (;;) { RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM32); if (rrc != MATCH_NOMATCH) RRETURN(rrc); + if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(d, eptr); - if (fi >= max || eptr >= md->end_subject || fc == d) - RRETURN(MATCH_NOMATCH); + if (fc == d) RRETURN(MATCH_NOMATCH); } } else @@ -2852,7 +2893,7 @@ for (;;) { if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == ucp_Lu || prop_chartype == ucp_Ll || prop_chartype == ucp_Lt) == prop_fail_result) @@ -2865,7 +2906,7 @@ for (;;) { if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if ((prop_category == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -2876,7 +2917,7 @@ for (;;) { if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -2887,7 +2928,7 @@ for (;;) { if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_script = UCD_SCRIPT(c); if ((prop_script == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -2906,7 +2947,7 @@ for (;;) for (i = 1; i <= min; i++) { GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH); while (eptr < md->end_subject) { @@ -2915,7 +2956,7 @@ for (;;) { GETCHARLEN(c, eptr, len); } - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category != ucp_M) break; eptr += len; } @@ -2933,14 +2974,22 @@ for (;;) case OP_ANY: for (i = 1; i <= min; i++) { - if (eptr >= md->end_subject || - ((ims & PCRE_DOTALL) == 0 && IS_NEWLINE(eptr))) + if (eptr >= md->end_subject || IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); eptr++; while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; } break; + case OP_ALLANY: + for (i = 1; i <= min; i++) + { + if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); + eptr++; + while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; + } + break; + case OP_ANYBYTE: eptr += min; break; @@ -3149,15 +3198,15 @@ for (;;) switch(ctype) { case OP_ANY: - if ((ims & PCRE_DOTALL) == 0) + for (i = 1; i <= min; i++) { - for (i = 1; i <= min; i++) - { - if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); - eptr++; - } + if (IS_NEWLINE(eptr)) RRETURN(MATCH_NOMATCH); + eptr++; } - else eptr += min; + break; + + case OP_ALLANY: + eptr += min; break; case OP_ANYBYTE: @@ -3323,7 +3372,7 @@ for (;;) if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == ucp_Lu || prop_chartype == ucp_Ll || prop_chartype == ucp_Lt) == prop_fail_result) @@ -3338,7 +3387,7 @@ for (;;) if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if ((prop_category == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -3351,7 +3400,7 @@ for (;;) if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -3364,7 +3413,7 @@ for (;;) if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINC(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_script = UCD_SCRIPT(c); if ((prop_script == prop_value) == prop_fail_result) RRETURN(MATCH_NOMATCH); } @@ -3386,7 +3435,7 @@ for (;;) if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH); GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH); while (eptr < md->end_subject) { @@ -3395,7 +3444,7 @@ for (;;) { GETCHARLEN(c, eptr, len); } - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category != ucp_M) break; eptr += len; } @@ -3414,16 +3463,14 @@ for (;;) RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42); if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject || - (ctype == OP_ANY && (ims & PCRE_DOTALL) == 0 && - IS_NEWLINE(eptr))) + (ctype == OP_ANY && IS_NEWLINE(eptr))) RRETURN(MATCH_NOMATCH); GETCHARINC(c, eptr); switch(ctype) { - case OP_ANY: /* This is the DOTALL case */ - break; - + case OP_ANY: /* This is the non-NL case */ + case OP_ALLANY: case OP_ANYBYTE: break; @@ -3575,15 +3622,14 @@ for (;;) RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43); if (rrc != MATCH_NOMATCH) RRETURN(rrc); if (fi >= max || eptr >= md->end_subject || - ((ims & PCRE_DOTALL) == 0 && IS_NEWLINE(eptr))) + (ctype == OP_ANY && IS_NEWLINE(eptr))) RRETURN(MATCH_NOMATCH); c = *eptr++; switch(ctype) { - case OP_ANY: /* This is the DOTALL case */ - break; - + case OP_ANY: /* This is the non-NL case */ + case OP_ALLANY: case OP_ANYBYTE: break; @@ -3716,7 +3762,7 @@ for (;;) int len = 1; if (eptr >= md->end_subject) break; GETCHARLEN(c, eptr, len); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == ucp_Lu || prop_chartype == ucp_Ll || prop_chartype == ucp_Lt) == prop_fail_result) @@ -3731,7 +3777,7 @@ for (;;) int len = 1; if (eptr >= md->end_subject) break; GETCHARLEN(c, eptr, len); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if ((prop_category == prop_value) == prop_fail_result) break; eptr+= len; @@ -3744,7 +3790,7 @@ for (;;) int len = 1; if (eptr >= md->end_subject) break; GETCHARLEN(c, eptr, len); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_chartype = UCD_CHARTYPE(c); if ((prop_chartype == prop_value) == prop_fail_result) break; eptr+= len; @@ -3757,7 +3803,7 @@ for (;;) int len = 1; if (eptr >= md->end_subject) break; GETCHARLEN(c, eptr, len); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_script = UCD_SCRIPT(c); if ((prop_script == prop_value) == prop_fail_result) break; eptr+= len; @@ -3786,7 +3832,7 @@ for (;;) { if (eptr >= md->end_subject) break; GETCHARINCTEST(c, eptr); - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category == ucp_M) break; while (eptr < md->end_subject) { @@ -3795,7 +3841,7 @@ for (;;) { GETCHARLEN(c, eptr, len); } - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category != ucp_M) break; eptr += len; } @@ -3817,7 +3863,7 @@ for (;;) BACKCHAR(eptr); GETCHARLEN(c, eptr, len); } - prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script); + prop_category = UCD_CATEGORY(c); if (prop_category != ucp_M) break; eptr--; } @@ -3837,23 +3883,11 @@ for (;;) case OP_ANY: if (max < INT_MAX) { - if ((ims & PCRE_DOTALL) == 0) - { - for (i = min; i < max; i++) - { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; - eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; - } - } - else + for (i = min; i < max; i++) { - for (i = min; i < max; i++) - { - if (eptr >= md->end_subject) break; - eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; - } + if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + eptr++; + while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; } } @@ -3861,20 +3895,26 @@ for (;;) else { - if ((ims & PCRE_DOTALL) == 0) + for (i = min; i < max; i++) { - for (i = min; i < max; i++) - { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; - eptr++; - while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; - } + if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + eptr++; + while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; } - else + } + break; + + case OP_ALLANY: + if (max < INT_MAX) + { + for (i = min; i < max; i++) { - eptr = md->end_subject; + if (eptr >= md->end_subject) break; + eptr++; + while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; } } + else eptr = md->end_subject; /* Unlimited UTF-8 repeat */ break; /* The byte case is the same as non-UTF8 */ @@ -4062,17 +4102,14 @@ for (;;) switch(ctype) { case OP_ANY: - if ((ims & PCRE_DOTALL) == 0) + for (i = min; i < max; i++) { - for (i = min; i < max; i++) - { - if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; - eptr++; - } - break; + if (eptr >= md->end_subject || IS_NEWLINE(eptr)) break; + eptr++; } - /* For DOTALL case, fall through and treat as \C */ + break; + case OP_ALLANY: case OP_ANYBYTE: c = max - min; if (c > (unsigned int)(md->end_subject - eptr)) @@ -4346,7 +4383,7 @@ Returns: > 0 => success; value is the number of elements filled in < -1 => some kind of unexpected problem */ -PCRE_EXP_DEFN int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_exec(const pcre *argument_re, const pcre_extra *extra_data, PCRE_SPTR subject, int length, int start_offset, int options, int *offsets, int offsetcount) @@ -4448,6 +4485,7 @@ end_subject = md->end_subject; md->endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0; utf8 = md->utf8 = (re->options & PCRE_UTF8) != 0; +md->jscript_compat = (re->options & PCRE_JAVASCRIPT_COMPAT) != 0; md->notbol = (options & PCRE_NOTBOL) != 0; md->noteol = (options & PCRE_NOTEOL) != 0; @@ -4657,31 +4695,53 @@ for(;;) if (firstline) { USPTR t = start_match; +#ifdef SUPPORT_UTF8 + if (utf8) + { + while (t < md->end_subject && !IS_NEWLINE(t)) + { + t++; + while (t < end_subject && (*t & 0xc0) == 0x80) t++; + } + } + else +#endif while (t < md->end_subject && !IS_NEWLINE(t)) t++; end_subject = t; } - /* Now test for a unique first byte */ + /* Now advance to a unique first byte if there is one. */ if (first_byte >= 0) { if (first_byte_caseless) - while (start_match < end_subject && - md->lcc[*start_match] != first_byte) - { NEXTCHAR(start_match); } + while (start_match < end_subject && md->lcc[*start_match] != first_byte) + start_match++; else while (start_match < end_subject && *start_match != first_byte) - { NEXTCHAR(start_match); } + start_match++; } - /* Or to just after a linebreak for a multiline match if possible */ + /* Or to just after a linebreak for a multiline match */ else if (startline) { if (start_match > md->start_subject + start_offset) { - while (start_match <= end_subject && !WAS_NEWLINE(start_match)) - { NEXTCHAR(start_match); } +#ifdef SUPPORT_UTF8 + if (utf8) + { + while (start_match < end_subject && !WAS_NEWLINE(start_match)) + { + start_match++; + while(start_match < end_subject && (*start_match & 0xc0) == 0x80) + start_match++; + } + } + else +#endif + while (start_match < end_subject && !WAS_NEWLINE(start_match)) + start_match++; /* If we have just passed a CR and the newline option is ANY or ANYCRLF, and we are now at a LF, advance the match position by one more character. @@ -4695,16 +4755,15 @@ for(;;) } } - /* Or to a non-unique first char after study */ + /* Or to a non-unique first byte after study */ else if (start_bits != NULL) { while (start_match < end_subject) { register unsigned int c = *start_match; - if ((start_bits[c/8] & (1 << (c&7))) == 0) - { NEXTCHAR(start_match); } - else break; + if ((start_bits[c/8] & (1 << (c&7))) == 0) start_match++; + else break; } } diff --git a/ext/pcre/pcrelib/pcre_fullinfo.c b/ext/pcre/pcrelib/pcre_fullinfo.c index b91ea035e..4012b7a4e 100644 --- a/ext/pcre/pcrelib/pcre_fullinfo.c +++ b/ext/pcre/pcrelib/pcre_fullinfo.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -63,7 +63,7 @@ Arguments: Returns: 0 if data returned, negative on error */ -PCRE_EXP_DEFN int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what, void *where) { diff --git a/ext/pcre/pcrelib/pcre_get.c b/ext/pcre/pcrelib/pcre_get.c index c185c331a..65a81c99b 100644 --- a/ext/pcre/pcrelib/pcre_get.c +++ b/ext/pcre/pcrelib/pcre_get.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -63,7 +63,7 @@ Returns: the number of the named parentheses, or a negative number (PCRE_ERROR_NOSUBSTRING) if not found */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_get_stringnumber(const pcre *code, const char *stringname) { int rc; @@ -112,7 +112,7 @@ Returns: the length of each entry, or a negative number (PCRE_ERROR_NOSUBSTRING) if not found */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_get_stringtable_entries(const pcre *code, const char *stringname, char **firstptr, char **lastptr) { @@ -229,7 +229,7 @@ Returns: if successful: PCRE_ERROR_NOSUBSTRING (-7) no such captured substring */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_copy_substring(const char *subject, int *ovector, int stringcount, int stringnumber, char *buffer, int size) { @@ -274,7 +274,7 @@ Returns: if successful: PCRE_ERROR_NOSUBSTRING (-7) no such captured substring */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_copy_named_substring(const pcre *code, const char *subject, int *ovector, int stringcount, const char *stringname, char *buffer, int size) { @@ -306,7 +306,7 @@ Returns: if successful: 0 PCRE_ERROR_NOMEMORY (-6) failed to get store */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_get_substring_list(const char *subject, int *ovector, int stringcount, const char ***listptr) { @@ -351,7 +351,7 @@ Argument: the result of a previous pcre_get_substring_list() Returns: nothing */ -void +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION pcre_free_substring_list(const char **pointer) { (pcre_free)((void *)pointer); @@ -384,7 +384,7 @@ Returns: if successful: PCRE_ERROR_NOSUBSTRING (-7) substring not present */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_get_substring(const char *subject, int *ovector, int stringcount, int stringnumber, const char **stringptr) { @@ -431,7 +431,7 @@ Returns: if successful: PCRE_ERROR_NOSUBSTRING (-7) no such captured substring */ -int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_get_named_substring(const pcre *code, const char *subject, int *ovector, int stringcount, const char *stringname, const char **stringptr) { @@ -454,7 +454,7 @@ Argument: the result of a previous pcre_get_substring() Returns: nothing */ -void +PCRE_EXP_DEFN void PCRE_CALL_CONVENTION pcre_free_substring(const char *pointer) { (pcre_free)((void *)pointer); diff --git a/ext/pcre/pcrelib/pcre_globals.c b/ext/pcre/pcrelib/pcre_globals.c index aa3ef90a2..f684edbe3 100644 --- a/ext/pcre/pcrelib/pcre_globals.c +++ b/ext/pcre/pcrelib/pcre_globals.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/pcre/pcrelib/pcre_info.c b/ext/pcre/pcrelib/pcre_info.c index f653d70bd..0e0a02f59 100644 --- a/ext/pcre/pcrelib/pcre_info.c +++ b/ext/pcre/pcrelib/pcre_info.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -70,7 +70,7 @@ Returns: number of capturing subpatterns or negative values on error */ -PCRE_EXP_DEFN int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_info(const pcre *argument_re, int *optptr, int *first_byte) { real_pcre internal_re; diff --git a/ext/pcre/pcrelib/pcre_internal.h b/ext/pcre/pcrelib/pcre_internal.h index caf7b831d..c652ed9de 100644 --- a/ext/pcre/pcrelib/pcre_internal.h +++ b/ext/pcre/pcrelib/pcre_internal.h @@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -132,6 +132,20 @@ PCRE_EXP_DATA_DEFN only if they are not already set. */ # endif #endif +/* When compiling with the MSVC compiler, it is sometimes necessary to include +a "calling convention" before exported function names. (This is secondhand +information; I know nothing about MSVC myself). For example, something like + + void __cdecl function(....) + +might be needed. In order so make this easy, all the exported functions have +PCRE_CALL_CONVENTION just before their names. It is rarely needed; if not +set, we ensure here that it has no effect. */ + +#ifndef PCRE_CALL_CONVENTION +#define PCRE_CALL_CONVENTION +#endif + /* We need to have types that specify unsigned 16-bit and 32-bit integers. We cannot determine these outside the compilation (e.g. by running a program as part of "configure") because PCRE is often cross-compiled for use on other @@ -140,16 +154,20 @@ preprocessor time in standard C environments. */ #if USHRT_MAX == 65535 typedef unsigned short pcre_uint16; + typedef short pcre_int16; #elif UINT_MAX == 65535 typedef unsigned int pcre_uint16; + typedef int pcre_int16; #else #error Cannot determine a type for 16-bit unsigned integers #endif #if UINT_MAX == 4294967295 typedef unsigned int pcre_uint32; + typedef int pcre_int32; #elif ULONG_MAX == 4294967295 typedef unsigned long int pcre_uint32; + typedef long int pcre_int32; #else #error Cannot determine a type for 32-bit unsigned integers #endif @@ -363,7 +381,6 @@ never be called in byte mode. To make sure it can never even appear when UTF-8 support is omitted, we don't even define it. */ #ifndef SUPPORT_UTF8 -#define NEXTCHAR(p) p++; #define GETCHAR(c, eptr) c = *eptr; #define GETCHARTEST(c, eptr) c = *eptr; #define GETCHARINC(c, eptr) c = *eptr++; @@ -373,13 +390,6 @@ support is omitted, we don't even define it. */ #else /* SUPPORT_UTF8 */ -/* Advance a character pointer one byte in non-UTF-8 mode and by one character -in UTF-8 mode. */ - -#define NEXTCHAR(p) \ - p++; \ - if (utf8) { while((*p & 0xc0) == 0x80) p++; } - /* Get the next UTF-8 character, not advancing the pointer. This is called when we know we are in UTF-8 mode. */ @@ -514,7 +524,8 @@ time, run time, or study time, respectively. */ (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \ PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \ PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \ - PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE) + PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \ + PCRE_JAVASCRIPT_COMPAT) #define PUBLIC_EXEC_OPTIONS \ (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \ @@ -548,12 +559,15 @@ variable-length repeat, or a anything other than literal characters. */ #define REQ_CASELESS 0x0100 /* indicates caselessness */ #define REQ_VARY 0x0200 /* reqbyte followed non-literal item */ -/* Miscellaneous definitions */ +/* Miscellaneous definitions. The #ifndef is to pacify compiler warnings in +environments where these macros are defined elsewhere. */ +#ifndef FALSE typedef int BOOL; #define FALSE 0 #define TRUE 1 +#endif /* Escape items that are just an encoding of a particular data value. */ @@ -604,16 +618,20 @@ contain UTF-8 characters with values greater than 255. */ value such as \n. They must have non-zero values, as check_escape() returns their negation. Also, they must appear in the same order as in the opcode definitions below, up to ESC_z. There's a dummy for OP_ANY because it -corresponds to "." rather than an escape sequence. The final one must be -ESC_REF as subsequent values are used for backreferences (\1, \2, \3, etc). -There are two tests in the code for an escape greater than ESC_b and less than -ESC_Z to detect the types that may be repeated. These are the types that -consume characters. If any new escapes are put in between that don't consume a -character, that code will have to change. */ +corresponds to "." rather than an escape sequence, and another for OP_ALLANY +(which is used for [^] in JavaScript compatibility mode). + +The final escape must be ESC_REF as subsequent values are used for +backreferences (\1, \2, \3, etc). There are two tests in the code for an escape +greater than ESC_b and less than ESC_Z to detect the types that may be +repeated. These are the types that consume characters. If any new escapes are +put in between that don't consume a character, that code will have to change. +*/ enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, - ESC_W, ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, ESC_h, - ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_k, ESC_REF }; + ESC_W, ESC_w, ESC_dum1, ESC_dum2, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, + ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_g, ESC_k, + ESC_REF }; /* Opcode table: Starting from 1 (i.e. after OP_END), the values up to @@ -639,141 +657,146 @@ enum { OP_WHITESPACE, /* 9 \s */ OP_NOT_WORDCHAR, /* 10 \W */ OP_WORDCHAR, /* 11 \w */ - OP_ANY, /* 12 Match any character */ - OP_ANYBYTE, /* 13 Match any byte (\C); different to OP_ANY for UTF-8 */ - OP_NOTPROP, /* 14 \P (not Unicode property) */ - OP_PROP, /* 15 \p (Unicode property) */ - OP_ANYNL, /* 16 \R (any newline sequence) */ - OP_NOT_HSPACE, /* 17 \H (not horizontal whitespace) */ - OP_HSPACE, /* 18 \h (horizontal whitespace) */ - OP_NOT_VSPACE, /* 19 \V (not vertical whitespace) */ - OP_VSPACE, /* 20 \v (vertical whitespace) */ - OP_EXTUNI, /* 21 \X (extended Unicode sequence */ - OP_EODN, /* 22 End of data or \n at end of data: \Z. */ - OP_EOD, /* 23 End of data: \z */ - - OP_OPT, /* 24 Set runtime options */ - OP_CIRC, /* 25 Start of line - varies with multiline switch */ - OP_DOLL, /* 26 End of line - varies with multiline switch */ - OP_CHAR, /* 27 Match one character, casefully */ - OP_CHARNC, /* 28 Match one character, caselessly */ - OP_NOT, /* 29 Match one character, not the following one */ - - OP_STAR, /* 30 The maximizing and minimizing versions of */ - OP_MINSTAR, /* 31 these six opcodes must come in pairs, with */ - OP_PLUS, /* 32 the minimizing one second. */ - OP_MINPLUS, /* 33 This first set applies to single characters.*/ - OP_QUERY, /* 34 */ - OP_MINQUERY, /* 35 */ - - OP_UPTO, /* 36 From 0 to n matches */ - OP_MINUPTO, /* 37 */ - OP_EXACT, /* 38 Exactly n matches */ - - OP_POSSTAR, /* 39 Possessified star */ - OP_POSPLUS, /* 40 Possessified plus */ - OP_POSQUERY, /* 41 Posesssified query */ - OP_POSUPTO, /* 42 Possessified upto */ - - OP_NOTSTAR, /* 43 The maximizing and minimizing versions of */ - OP_NOTMINSTAR, /* 44 these six opcodes must come in pairs, with */ - OP_NOTPLUS, /* 45 the minimizing one second. They must be in */ - OP_NOTMINPLUS, /* 46 exactly the same order as those above. */ - OP_NOTQUERY, /* 47 This set applies to "not" single characters. */ - OP_NOTMINQUERY, /* 48 */ - - OP_NOTUPTO, /* 49 From 0 to n matches */ - OP_NOTMINUPTO, /* 50 */ - OP_NOTEXACT, /* 51 Exactly n matches */ - - OP_NOTPOSSTAR, /* 52 Possessified versions */ - OP_NOTPOSPLUS, /* 53 */ - OP_NOTPOSQUERY, /* 54 */ - OP_NOTPOSUPTO, /* 55 */ - - OP_TYPESTAR, /* 56 The maximizing and minimizing versions of */ - OP_TYPEMINSTAR, /* 57 these six opcodes must come in pairs, with */ - OP_TYPEPLUS, /* 58 the minimizing one second. These codes must */ - OP_TYPEMINPLUS, /* 59 be in exactly the same order as those above. */ - OP_TYPEQUERY, /* 60 This set applies to character types such as \d */ - OP_TYPEMINQUERY, /* 61 */ - - OP_TYPEUPTO, /* 62 From 0 to n matches */ - OP_TYPEMINUPTO, /* 63 */ - OP_TYPEEXACT, /* 64 Exactly n matches */ - - OP_TYPEPOSSTAR, /* 65 Possessified versions */ - OP_TYPEPOSPLUS, /* 66 */ - OP_TYPEPOSQUERY, /* 67 */ - OP_TYPEPOSUPTO, /* 68 */ - - OP_CRSTAR, /* 69 The maximizing and minimizing versions of */ - OP_CRMINSTAR, /* 70 all these opcodes must come in pairs, with */ - OP_CRPLUS, /* 71 the minimizing one second. These codes must */ - OP_CRMINPLUS, /* 72 be in exactly the same order as those above. */ - OP_CRQUERY, /* 73 These are for character classes and back refs */ - OP_CRMINQUERY, /* 74 */ - OP_CRRANGE, /* 75 These are different to the three sets above. */ - OP_CRMINRANGE, /* 76 */ - - OP_CLASS, /* 77 Match a character class, chars < 256 only */ - OP_NCLASS, /* 78 Same, but the bitmap was created from a negative + OP_ANY, /* 12 Match any character (subject to DOTALL) */ + OP_ALLANY, /* 13 Match any character (not subject to DOTALL) */ + OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */ + OP_NOTPROP, /* 15 \P (not Unicode property) */ + OP_PROP, /* 16 \p (Unicode property) */ + OP_ANYNL, /* 17 \R (any newline sequence) */ + OP_NOT_HSPACE, /* 18 \H (not horizontal whitespace) */ + OP_HSPACE, /* 19 \h (horizontal whitespace) */ + OP_NOT_VSPACE, /* 20 \V (not vertical whitespace) */ + OP_VSPACE, /* 21 \v (vertical whitespace) */ + OP_EXTUNI, /* 22 \X (extended Unicode sequence */ + OP_EODN, /* 23 End of data or \n at end of data: \Z. */ + OP_EOD, /* 24 End of data: \z */ + + OP_OPT, /* 25 Set runtime options */ + OP_CIRC, /* 26 Start of line - varies with multiline switch */ + OP_DOLL, /* 27 End of line - varies with multiline switch */ + OP_CHAR, /* 28 Match one character, casefully */ + OP_CHARNC, /* 29 Match one character, caselessly */ + OP_NOT, /* 30 Match one character, not the following one */ + + OP_STAR, /* 31 The maximizing and minimizing versions of */ + OP_MINSTAR, /* 32 these six opcodes must come in pairs, with */ + OP_PLUS, /* 33 the minimizing one second. */ + OP_MINPLUS, /* 34 This first set applies to single characters.*/ + OP_QUERY, /* 35 */ + OP_MINQUERY, /* 36 */ + + OP_UPTO, /* 37 From 0 to n matches */ + OP_MINUPTO, /* 38 */ + OP_EXACT, /* 39 Exactly n matches */ + + OP_POSSTAR, /* 40 Possessified star */ + OP_POSPLUS, /* 41 Possessified plus */ + OP_POSQUERY, /* 42 Posesssified query */ + OP_POSUPTO, /* 43 Possessified upto */ + + OP_NOTSTAR, /* 44 The maximizing and minimizing versions of */ + OP_NOTMINSTAR, /* 45 these six opcodes must come in pairs, with */ + OP_NOTPLUS, /* 46 the minimizing one second. They must be in */ + OP_NOTMINPLUS, /* 47 exactly the same order as those above. */ + OP_NOTQUERY, /* 48 This set applies to "not" single characters. */ + OP_NOTMINQUERY, /* 49 */ + + OP_NOTUPTO, /* 50 From 0 to n matches */ + OP_NOTMINUPTO, /* 51 */ + OP_NOTEXACT, /* 52 Exactly n matches */ + + OP_NOTPOSSTAR, /* 53 Possessified versions */ + OP_NOTPOSPLUS, /* 54 */ + OP_NOTPOSQUERY, /* 55 */ + OP_NOTPOSUPTO, /* 56 */ + + OP_TYPESTAR, /* 57 The maximizing and minimizing versions of */ + OP_TYPEMINSTAR, /* 58 these six opcodes must come in pairs, with */ + OP_TYPEPLUS, /* 59 the minimizing one second. These codes must */ + OP_TYPEMINPLUS, /* 60 be in exactly the same order as those above. */ + OP_TYPEQUERY, /* 61 This set applies to character types such as \d */ + OP_TYPEMINQUERY, /* 62 */ + + OP_TYPEUPTO, /* 63 From 0 to n matches */ + OP_TYPEMINUPTO, /* 64 */ + OP_TYPEEXACT, /* 65 Exactly n matches */ + + OP_TYPEPOSSTAR, /* 66 Possessified versions */ + OP_TYPEPOSPLUS, /* 67 */ + OP_TYPEPOSQUERY, /* 68 */ + OP_TYPEPOSUPTO, /* 69 */ + + OP_CRSTAR, /* 70 The maximizing and minimizing versions of */ + OP_CRMINSTAR, /* 71 all these opcodes must come in pairs, with */ + OP_CRPLUS, /* 72 the minimizing one second. These codes must */ + OP_CRMINPLUS, /* 73 be in exactly the same order as those above. */ + OP_CRQUERY, /* 74 These are for character classes and back refs */ + OP_CRMINQUERY, /* 75 */ + OP_CRRANGE, /* 76 These are different to the three sets above. */ + OP_CRMINRANGE, /* 77 */ + + OP_CLASS, /* 78 Match a character class, chars < 256 only */ + OP_NCLASS, /* 79 Same, but the bitmap was created from a negative class - the difference is relevant only when a UTF-8 character > 255 is encountered. */ - OP_XCLASS, /* 79 Extended class for handling UTF-8 chars within the + OP_XCLASS, /* 80 Extended class for handling UTF-8 chars within the class. This does both positive and negative. */ - OP_REF, /* 80 Match a back reference */ - OP_RECURSE, /* 81 Match a numbered subpattern (possibly recursive) */ - OP_CALLOUT, /* 82 Call out to external function if provided */ + OP_REF, /* 81 Match a back reference */ + OP_RECURSE, /* 82 Match a numbered subpattern (possibly recursive) */ + OP_CALLOUT, /* 83 Call out to external function if provided */ - OP_ALT, /* 83 Start of alternation */ - OP_KET, /* 84 End of group that doesn't have an unbounded repeat */ - OP_KETRMAX, /* 85 These two must remain together and in this */ - OP_KETRMIN, /* 86 order. They are for groups the repeat for ever. */ + OP_ALT, /* 84 Start of alternation */ + OP_KET, /* 85 End of group that doesn't have an unbounded repeat */ + OP_KETRMAX, /* 86 These two must remain together and in this */ + OP_KETRMIN, /* 87 order. They are for groups the repeat for ever. */ /* The assertions must come before BRA, CBRA, ONCE, and COND.*/ - OP_ASSERT, /* 87 Positive lookahead */ - OP_ASSERT_NOT, /* 88 Negative lookahead */ - OP_ASSERTBACK, /* 89 Positive lookbehind */ - OP_ASSERTBACK_NOT, /* 90 Negative lookbehind */ - OP_REVERSE, /* 91 Move pointer back - used in lookbehind assertions */ + OP_ASSERT, /* 88 Positive lookahead */ + OP_ASSERT_NOT, /* 89 Negative lookahead */ + OP_ASSERTBACK, /* 90 Positive lookbehind */ + OP_ASSERTBACK_NOT, /* 91 Negative lookbehind */ + OP_REVERSE, /* 92 Move pointer back - used in lookbehind assertions */ /* ONCE, BRA, CBRA, and COND must come after the assertions, with ONCE first, as there's a test for >= ONCE for a subpattern that isn't an assertion. */ - OP_ONCE, /* 92 Atomic group */ - OP_BRA, /* 93 Start of non-capturing bracket */ - OP_CBRA, /* 94 Start of capturing bracket */ - OP_COND, /* 95 Conditional group */ + OP_ONCE, /* 93 Atomic group */ + OP_BRA, /* 94 Start of non-capturing bracket */ + OP_CBRA, /* 95 Start of capturing bracket */ + OP_COND, /* 96 Conditional group */ /* These three must follow the previous three, in the same order. There's a check for >= SBRA to distinguish the two sets. */ - OP_SBRA, /* 96 Start of non-capturing bracket, check empty */ - OP_SCBRA, /* 97 Start of capturing bracket, check empty */ - OP_SCOND, /* 98 Conditional group, check empty */ + OP_SBRA, /* 97 Start of non-capturing bracket, check empty */ + OP_SCBRA, /* 98 Start of capturing bracket, check empty */ + OP_SCOND, /* 99 Conditional group, check empty */ - OP_CREF, /* 99 Used to hold a capture number as condition */ - OP_RREF, /* 100 Used to hold a recursion number as condition */ - OP_DEF, /* 101 The DEFINE condition */ + OP_CREF, /* 100 Used to hold a capture number as condition */ + OP_RREF, /* 101 Used to hold a recursion number as condition */ + OP_DEF, /* 102 The DEFINE condition */ - OP_BRAZERO, /* 102 These two must remain together and in this */ - OP_BRAMINZERO, /* 103 order. */ + OP_BRAZERO, /* 103 These two must remain together and in this */ + OP_BRAMINZERO, /* 104 order. */ /* These are backtracking control verbs */ - OP_PRUNE, /* 104 */ - OP_SKIP, /* 105 */ - OP_THEN, /* 106 */ - OP_COMMIT, /* 107 */ + OP_PRUNE, /* 105 */ + OP_SKIP, /* 106 */ + OP_THEN, /* 107 */ + OP_COMMIT, /* 108 */ /* These are forced failure and success verbs */ - OP_FAIL, /* 108 */ - OP_ACCEPT /* 109 */ + OP_FAIL, /* 109 */ + OP_ACCEPT, /* 110 */ + + /* This is used to skip a subpattern with a {0} quantifier */ + + OP_SKIPZERO /* 111 */ }; @@ -782,7 +805,7 @@ for debugging. The macro is referenced only in pcre_printint.c. */ #define OP_NAME_LIST \ "End", "\\A", "\\G", "\\K", "\\B", "\\b", "\\D", "\\d", \ - "\\S", "\\s", "\\W", "\\w", "Any", "Anybyte", \ + "\\S", "\\s", "\\W", "\\w", "Any", "AllAny", "Anybyte", \ "notprop", "prop", "\\R", "\\H", "\\h", "\\V", "\\v", \ "extuni", "\\Z", "\\z", \ "Opt", "^", "$", "char", "charnc", "not", \ @@ -798,7 +821,8 @@ for debugging. The macro is referenced only in pcre_printint.c. */ "AssertB", "AssertB not", "Reverse", \ "Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ "Cond ref", "Cond rec", "Cond def", "Brazero", "Braminzero", \ - "*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT" + "*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ + "Skip zero" /* This macro defines the length of fixed length operations in the compiled @@ -814,7 +838,7 @@ in UTF-8 mode. The code that uses this table must know about such things. */ 1, /* End */ \ 1, 1, 1, 1, 1, /* \A, \G, \K, \B, \b */ \ 1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ \ - 1, 1, /* Any, Anybyte */ \ + 1, 1, 1, /* Any, AllAny, Anybyte */ \ 3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \ 1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ \ 1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \ @@ -863,7 +887,7 @@ in UTF-8 mode. The code that uses this table must know about such things. */ 1, /* DEF */ \ 1, 1, /* BRAZERO, BRAMINZERO */ \ 1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ - 1, 1 /* FAIL, ACCEPT */ + 1, 1, 1 /* FAIL, ACCEPT, SKIPZERO */ /* A magic value for OP_RREF to indicate the "any recursion" condition. */ @@ -879,7 +903,7 @@ enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, - ERR60, ERR61, ERR62, ERR63 }; + ERR60, ERR61, ERR62, ERR63, ERR64 }; /* The real format of the start of the pcre block; the index of names and the code vector run on as long as necessary after the end. We store an explicit @@ -1004,6 +1028,7 @@ typedef struct match_data { BOOL notbol; /* NOTBOL flag */ BOOL noteol; /* NOTEOL flag */ BOOL utf8; /* UTF8 flag */ + BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */ BOOL endonly; /* Dollar not before final \n */ BOOL notempty; /* Empty string match not wanted */ BOOL partial; /* PARTIAL flag */ @@ -1114,13 +1139,38 @@ extern BOOL _pcre_is_newline(const uschar *, int, const uschar *, extern int _pcre_ord2utf8(int, uschar *); extern real_pcre *_pcre_try_flipped(const real_pcre *, real_pcre *, const pcre_study_data *, pcre_study_data *); -extern int _pcre_ucp_findprop(const unsigned int, int *, int *); -extern unsigned int _pcre_ucp_othercase(const unsigned int); extern int _pcre_valid_utf8(const uschar *, int); extern BOOL _pcre_was_newline(const uschar *, int, const uschar *, int *, BOOL); extern BOOL _pcre_xclass(int, const uschar *); + +/* Unicode character database (UCD) */ + +typedef struct { + uschar script; + uschar chartype; + pcre_int32 other_case; +} ucd_record; + +extern const ucd_record _pcre_ucd_records[]; +extern const uschar _pcre_ucd_stage1[]; +extern const pcre_uint16 _pcre_ucd_stage2[]; +extern const int _pcre_ucp_gentype[]; + + +/* UCD access macros */ + +#define UCD_BLOCK_SIZE 128 +#define GET_UCD(ch) (_pcre_ucd_records + \ + _pcre_ucd_stage2[_pcre_ucd_stage1[(ch) / UCD_BLOCK_SIZE] * \ + UCD_BLOCK_SIZE + ch % UCD_BLOCK_SIZE]) + +#define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype +#define UCD_SCRIPT(ch) GET_UCD(ch)->script +#define UCD_CATEGORY(ch) _pcre_ucp_gentype[UCD_CHARTYPE(ch)] +#define UCD_OTHERCASE(ch) (ch + GET_UCD(ch)->other_case) + #endif /* End of pcre_internal.h */ diff --git a/ext/pcre/pcrelib/pcre_maketables.c b/ext/pcre/pcrelib/pcre_maketables.c index 2ba612cec..5b1232209 100644 --- a/ext/pcre/pcrelib/pcre_maketables.c +++ b/ext/pcre/pcrelib/pcre_maketables.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/pcre/pcrelib/pcre_newline.c b/ext/pcre/pcrelib/pcre_newline.c index e4223cbb6..0b682437b 100644 --- a/ext/pcre/pcrelib/pcre_newline.c +++ b/ext/pcre/pcrelib/pcre_newline.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/pcre/pcrelib/pcre_ord2utf8.c b/ext/pcre/pcrelib/pcre_ord2utf8.c index dfd88bcdb..c0a574cc8 100644 --- a/ext/pcre/pcrelib/pcre_ord2utf8.c +++ b/ext/pcre/pcrelib/pcre_ord2utf8.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -76,8 +76,10 @@ for (j = i; j > 0; j--) *buffer = _pcre_utf8_table2[i] | cvalue; return i + 1; #else -return 0; /* Keep compiler happy; this function won't ever be */ -#endif /* called when SUPPORT_UTF8 is not defined. */ +(void)(cvalue); /* Keep compiler happy; this function won't ever be */ +(void)(buffer); /* called when SUPPORT_UTF8 is not defined. */ +return 0; +#endif } /* End of pcre_ord2utf8.c */ diff --git a/ext/pcre/pcrelib/pcre_refcount.c b/ext/pcre/pcrelib/pcre_refcount.c index f31399ea2..2cc5a9d9f 100644 --- a/ext/pcre/pcrelib/pcre_refcount.c +++ b/ext/pcre/pcrelib/pcre_refcount.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -66,7 +66,7 @@ Returns: the (possibly updated) count value (a non-negative number), or a negative error number */ -PCRE_EXP_DEFN int +PCRE_EXP_DEFN int PCRE_CALL_CONVENTION pcre_refcount(pcre *argument_re, int adjust) { real_pcre *re = (real_pcre *)argument_re; diff --git a/ext/pcre/pcrelib/pcre_study.c b/ext/pcre/pcrelib/pcre_study.c index b396d7218..97e3a92f7 100644 --- a/ext/pcre/pcrelib/pcre_study.c +++ b/ext/pcre/pcrelib/pcre_study.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -215,6 +215,14 @@ do tcode += 1 + LINK_SIZE; break; + /* SKIPZERO skips the bracket. */ + + case OP_SKIPZERO: + tcode++; + do tcode += GET(tcode,1); while (*tcode == OP_ALT); + tcode += 1 + LINK_SIZE; + break; + /* Single-char * or ? sets the bit and tries the next item */ case OP_STAR: @@ -339,6 +347,7 @@ do switch(tcode[1]) { case OP_ANY: + case OP_ALLANY: return SSB_FAIL; case OP_NOT_DIGIT: @@ -493,7 +502,7 @@ Returns: pointer to a pcre_extra block, with study_data filled in and the NULL on error or if no optimization possible */ -PCRE_EXP_DEFN pcre_extra * +PCRE_EXP_DEFN pcre_extra * PCRE_CALL_CONVENTION pcre_study(const pcre *external_re, int options, const char **errorptr) { uschar start_bits[32]; diff --git a/ext/pcre/pcrelib/pcre_tables.c b/ext/pcre/pcrelib/pcre_tables.c index 646ddb568..08e5a4a84 100644 --- a/ext/pcre/pcrelib/pcre_tables.c +++ b/ext/pcre/pcrelib/pcre_tables.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -85,6 +85,19 @@ const uschar _pcre_utf8_table4[] = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 }; +/* Table to translate from particular type value to the general value. */ + +const int _pcre_ucp_gentype[] = { + ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */ + ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */ + ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */ + ucp_N, ucp_N, ucp_N, /* Nd, Nl, No */ + ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, /* Pc, Pd, Pe, Pf, Pi */ + ucp_P, ucp_P, /* Ps, Po */ + ucp_S, ucp_S, ucp_S, ucp_S, /* Sc, Sk, Sm, So */ + ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */ +}; + /* The pcre_utt[] table below translates Unicode property names into type and code values. It is searched by binary chop, so must be in collating sequence of name. Originally, the table contained pointers to the name strings in the first @@ -92,7 +105,10 @@ field of each entry. However, that leads to a large number of relocations when a shared library is dynamically loaded. A significant reduction is made by putting all the names into a single, large string and then using offsets in the table itself. Maintenance is more error-prone, but frequent changes to this -data is unlikely. */ +data are unlikely. + +July 2008: There is now a script called maint/GenerateUtt.py which can be used +to generate this data instead of maintaining it entirely by hand. */ const char _pcre_utt_names[] = "Any\0" @@ -106,8 +122,10 @@ const char _pcre_utt_names[] = "Buhid\0" "C\0" "Canadian_Aboriginal\0" + "Carian\0" "Cc\0" "Cf\0" + "Cham\0" "Cherokee\0" "Cn\0" "Co\0" @@ -134,12 +152,14 @@ const char _pcre_utt_names[] = "Inherited\0" "Kannada\0" "Katakana\0" + "Kayah_Li\0" "Kharoshthi\0" "Khmer\0" "L\0" "L&\0" "Lao\0" "Latin\0" + "Lepcha\0" "Limbu\0" "Linear_B\0" "Ll\0" @@ -147,6 +167,8 @@ const char _pcre_utt_names[] = "Lo\0" "Lt\0" "Lu\0" + "Lycian\0" + "Lydian\0" "M\0" "Malayalam\0" "Mc\0" @@ -161,6 +183,7 @@ const char _pcre_utt_names[] = "Nl\0" "No\0" "Ogham\0" + "Ol_Chiki\0" "Old_Italic\0" "Old_Persian\0" "Oriya\0" @@ -175,14 +198,17 @@ const char _pcre_utt_names[] = "Pi\0" "Po\0" "Ps\0" + "Rejang\0" "Runic\0" "S\0" + "Saurashtra\0" "Sc\0" "Shavian\0" "Sinhala\0" "Sk\0" "Sm\0" "So\0" + "Sundanese\0" "Syloti_Nagri\0" "Syriac\0" "Tagalog\0" @@ -195,6 +221,7 @@ const char _pcre_utt_names[] = "Tibetan\0" "Tifinagh\0" "Ugaritic\0" + "Vai\0" "Yi\0" "Z\0" "Zl\0" @@ -202,111 +229,122 @@ const char _pcre_utt_names[] = "Zs\0"; const ucp_type_table _pcre_utt[] = { - { 0, PT_ANY, 0 }, - { 4, PT_SC, ucp_Arabic }, - { 11, PT_SC, ucp_Armenian }, - { 20, PT_SC, ucp_Balinese }, - { 29, PT_SC, ucp_Bengali }, - { 37, PT_SC, ucp_Bopomofo }, - { 46, PT_SC, ucp_Braille }, - { 54, PT_SC, ucp_Buginese }, - { 63, PT_SC, ucp_Buhid }, - { 69, PT_GC, ucp_C }, - { 71, PT_SC, ucp_Canadian_Aboriginal }, - { 91, PT_PC, ucp_Cc }, - { 94, PT_PC, ucp_Cf }, - { 97, PT_SC, ucp_Cherokee }, - { 106, PT_PC, ucp_Cn }, - { 109, PT_PC, ucp_Co }, - { 112, PT_SC, ucp_Common }, - { 119, PT_SC, ucp_Coptic }, - { 126, PT_PC, ucp_Cs }, - { 129, PT_SC, ucp_Cuneiform }, - { 139, PT_SC, ucp_Cypriot }, - { 147, PT_SC, ucp_Cyrillic }, - { 156, PT_SC, ucp_Deseret }, - { 164, PT_SC, ucp_Devanagari }, - { 175, PT_SC, ucp_Ethiopic }, - { 184, PT_SC, ucp_Georgian }, - { 193, PT_SC, ucp_Glagolitic }, - { 204, PT_SC, ucp_Gothic }, - { 211, PT_SC, ucp_Greek }, - { 217, PT_SC, ucp_Gujarati }, - { 226, PT_SC, ucp_Gurmukhi }, - { 235, PT_SC, ucp_Han }, - { 239, PT_SC, ucp_Hangul }, - { 246, PT_SC, ucp_Hanunoo }, - { 254, PT_SC, ucp_Hebrew }, - { 261, PT_SC, ucp_Hiragana }, - { 270, PT_SC, ucp_Inherited }, - { 280, PT_SC, ucp_Kannada }, - { 288, PT_SC, ucp_Katakana }, - { 297, PT_SC, ucp_Kharoshthi }, - { 308, PT_SC, ucp_Khmer }, - { 314, PT_GC, ucp_L }, - { 316, PT_LAMP, 0 }, - { 319, PT_SC, ucp_Lao }, - { 323, PT_SC, ucp_Latin }, - { 329, PT_SC, ucp_Limbu }, - { 335, PT_SC, ucp_Linear_B }, - { 344, PT_PC, ucp_Ll }, - { 347, PT_PC, ucp_Lm }, - { 350, PT_PC, ucp_Lo }, - { 353, PT_PC, ucp_Lt }, - { 356, PT_PC, ucp_Lu }, - { 359, PT_GC, ucp_M }, - { 361, PT_SC, ucp_Malayalam }, - { 371, PT_PC, ucp_Mc }, - { 374, PT_PC, ucp_Me }, - { 377, PT_PC, ucp_Mn }, - { 380, PT_SC, ucp_Mongolian }, - { 390, PT_SC, ucp_Myanmar }, - { 398, PT_GC, ucp_N }, - { 400, PT_PC, ucp_Nd }, - { 403, PT_SC, ucp_New_Tai_Lue }, - { 415, PT_SC, ucp_Nko }, - { 419, PT_PC, ucp_Nl }, - { 422, PT_PC, ucp_No }, - { 425, PT_SC, ucp_Ogham }, - { 431, PT_SC, ucp_Old_Italic }, - { 442, PT_SC, ucp_Old_Persian }, - { 454, PT_SC, ucp_Oriya }, - { 460, PT_SC, ucp_Osmanya }, - { 468, PT_GC, ucp_P }, - { 470, PT_PC, ucp_Pc }, - { 473, PT_PC, ucp_Pd }, - { 476, PT_PC, ucp_Pe }, - { 479, PT_PC, ucp_Pf }, - { 482, PT_SC, ucp_Phags_Pa }, - { 491, PT_SC, ucp_Phoenician }, - { 502, PT_PC, ucp_Pi }, - { 505, PT_PC, ucp_Po }, - { 508, PT_PC, ucp_Ps }, - { 511, PT_SC, ucp_Runic }, - { 517, PT_GC, ucp_S }, - { 519, PT_PC, ucp_Sc }, - { 522, PT_SC, ucp_Shavian }, - { 530, PT_SC, ucp_Sinhala }, - { 538, PT_PC, ucp_Sk }, - { 541, PT_PC, ucp_Sm }, - { 544, PT_PC, ucp_So }, - { 547, PT_SC, ucp_Syloti_Nagri }, - { 560, PT_SC, ucp_Syriac }, - { 567, PT_SC, ucp_Tagalog }, - { 575, PT_SC, ucp_Tagbanwa }, - { 584, PT_SC, ucp_Tai_Le }, - { 591, PT_SC, ucp_Tamil }, - { 597, PT_SC, ucp_Telugu }, - { 604, PT_SC, ucp_Thaana }, - { 611, PT_SC, ucp_Thai }, - { 616, PT_SC, ucp_Tibetan }, - { 624, PT_SC, ucp_Tifinagh }, - { 633, PT_SC, ucp_Ugaritic }, - { 642, PT_SC, ucp_Yi }, - { 645, PT_GC, ucp_Z }, - { 647, PT_PC, ucp_Zl }, - { 650, PT_PC, ucp_Zp }, - { 653, PT_PC, ucp_Zs } + { 0, PT_ANY, 0 }, + { 4, PT_SC, ucp_Arabic }, + { 11, PT_SC, ucp_Armenian }, + { 20, PT_SC, ucp_Balinese }, + { 29, PT_SC, ucp_Bengali }, + { 37, PT_SC, ucp_Bopomofo }, + { 46, PT_SC, ucp_Braille }, + { 54, PT_SC, ucp_Buginese }, + { 63, PT_SC, ucp_Buhid }, + { 69, PT_GC, ucp_C }, + { 71, PT_SC, ucp_Canadian_Aboriginal }, + { 91, PT_SC, ucp_Carian }, + { 98, PT_PC, ucp_Cc }, + { 101, PT_PC, ucp_Cf }, + { 104, PT_SC, ucp_Cham }, + { 109, PT_SC, ucp_Cherokee }, + { 118, PT_PC, ucp_Cn }, + { 121, PT_PC, ucp_Co }, + { 124, PT_SC, ucp_Common }, + { 131, PT_SC, ucp_Coptic }, + { 138, PT_PC, ucp_Cs }, + { 141, PT_SC, ucp_Cuneiform }, + { 151, PT_SC, ucp_Cypriot }, + { 159, PT_SC, ucp_Cyrillic }, + { 168, PT_SC, ucp_Deseret }, + { 176, PT_SC, ucp_Devanagari }, + { 187, PT_SC, ucp_Ethiopic }, + { 196, PT_SC, ucp_Georgian }, + { 205, PT_SC, ucp_Glagolitic }, + { 216, PT_SC, ucp_Gothic }, + { 223, PT_SC, ucp_Greek }, + { 229, PT_SC, ucp_Gujarati }, + { 238, PT_SC, ucp_Gurmukhi }, + { 247, PT_SC, ucp_Han }, + { 251, PT_SC, ucp_Hangul }, + { 258, PT_SC, ucp_Hanunoo }, + { 266, PT_SC, ucp_Hebrew }, + { 273, PT_SC, ucp_Hiragana }, + { 282, PT_SC, ucp_Inherited }, + { 292, PT_SC, ucp_Kannada }, + { 300, PT_SC, ucp_Katakana }, + { 309, PT_SC, ucp_Kayah_Li }, + { 318, PT_SC, ucp_Kharoshthi }, + { 329, PT_SC, ucp_Khmer }, + { 335, PT_GC, ucp_L }, + { 337, PT_LAMP, 0 }, + { 340, PT_SC, ucp_Lao }, + { 344, PT_SC, ucp_Latin }, + { 350, PT_SC, ucp_Lepcha }, + { 357, PT_SC, ucp_Limbu }, + { 363, PT_SC, ucp_Linear_B }, + { 372, PT_PC, ucp_Ll }, + { 375, PT_PC, ucp_Lm }, + { 378, PT_PC, ucp_Lo }, + { 381, PT_PC, ucp_Lt }, + { 384, PT_PC, ucp_Lu }, + { 387, PT_SC, ucp_Lycian }, + { 394, PT_SC, ucp_Lydian }, + { 401, PT_GC, ucp_M }, + { 403, PT_SC, ucp_Malayalam }, + { 413, PT_PC, ucp_Mc }, + { 416, PT_PC, ucp_Me }, + { 419, PT_PC, ucp_Mn }, + { 422, PT_SC, ucp_Mongolian }, + { 432, PT_SC, ucp_Myanmar }, + { 440, PT_GC, ucp_N }, + { 442, PT_PC, ucp_Nd }, + { 445, PT_SC, ucp_New_Tai_Lue }, + { 457, PT_SC, ucp_Nko }, + { 461, PT_PC, ucp_Nl }, + { 464, PT_PC, ucp_No }, + { 467, PT_SC, ucp_Ogham }, + { 473, PT_SC, ucp_Ol_Chiki }, + { 482, PT_SC, ucp_Old_Italic }, + { 493, PT_SC, ucp_Old_Persian }, + { 505, PT_SC, ucp_Oriya }, + { 511, PT_SC, ucp_Osmanya }, + { 519, PT_GC, ucp_P }, + { 521, PT_PC, ucp_Pc }, + { 524, PT_PC, ucp_Pd }, + { 527, PT_PC, ucp_Pe }, + { 530, PT_PC, ucp_Pf }, + { 533, PT_SC, ucp_Phags_Pa }, + { 542, PT_SC, ucp_Phoenician }, + { 553, PT_PC, ucp_Pi }, + { 556, PT_PC, ucp_Po }, + { 559, PT_PC, ucp_Ps }, + { 562, PT_SC, ucp_Rejang }, + { 569, PT_SC, ucp_Runic }, + { 575, PT_GC, ucp_S }, + { 577, PT_SC, ucp_Saurashtra }, + { 588, PT_PC, ucp_Sc }, + { 591, PT_SC, ucp_Shavian }, + { 599, PT_SC, ucp_Sinhala }, + { 607, PT_PC, ucp_Sk }, + { 610, PT_PC, ucp_Sm }, + { 613, PT_PC, ucp_So }, + { 616, PT_SC, ucp_Sundanese }, + { 626, PT_SC, ucp_Syloti_Nagri }, + { 639, PT_SC, ucp_Syriac }, + { 646, PT_SC, ucp_Tagalog }, + { 654, PT_SC, ucp_Tagbanwa }, + { 663, PT_SC, ucp_Tai_Le }, + { 670, PT_SC, ucp_Tamil }, + { 676, PT_SC, ucp_Telugu }, + { 683, PT_SC, ucp_Thaana }, + { 690, PT_SC, ucp_Thai }, + { 695, PT_SC, ucp_Tibetan }, + { 703, PT_SC, ucp_Tifinagh }, + { 712, PT_SC, ucp_Ugaritic }, + { 721, PT_SC, ucp_Vai }, + { 725, PT_SC, ucp_Yi }, + { 728, PT_GC, ucp_Z }, + { 730, PT_PC, ucp_Zl }, + { 733, PT_PC, ucp_Zp }, + { 736, PT_PC, ucp_Zs } }; const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table); diff --git a/ext/pcre/pcrelib/pcre_try_flipped.c b/ext/pcre/pcrelib/pcre_try_flipped.c index 5e67943cc..6a8a770da 100644 --- a/ext/pcre/pcrelib/pcre_try_flipped.c +++ b/ext/pcre/pcrelib/pcre_try_flipped.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without diff --git a/ext/pcre/pcrelib/pcre_ucd.c b/ext/pcre/pcrelib/pcre_ucd.c new file mode 100644 index 000000000..33394a039 --- /dev/null +++ b/ext/pcre/pcrelib/pcre_ucd.c @@ -0,0 +1,2608 @@ +#include "config.h" +#include "pcre_internal.h" + +/* Unicode character database. */ +/* This file was autogenerated by the MultiStage2.py script. */ +/* Total size: 52808 bytes, block size: 128. */ +/* When recompiling tables with a new Unicode version, +please check types in the structure definition from pcre_internal.h: +typedef struct { +uschar property_0; +uschar property_1; +pcre_int32 property_2; +} ucd_record; */ + + +const ucd_record _pcre_ucd_records[] = { /* 3656 bytes, record size 8 */ + { 9, 0, 0, }, /* 0 */ + { 9, 29, 0, }, /* 1 */ + { 9, 21, 0, }, /* 2 */ + { 9, 23, 0, }, /* 3 */ + { 9, 22, 0, }, /* 4 */ + { 9, 18, 0, }, /* 5 */ + { 9, 25, 0, }, /* 6 */ + { 9, 17, 0, }, /* 7 */ + { 9, 13, 0, }, /* 8 */ + { 33, 9, 32, }, /* 9 */ + { 9, 24, 0, }, /* 10 */ + { 9, 16, 0, }, /* 11 */ + { 33, 5, -32, }, /* 12 */ + { 9, 26, 0, }, /* 13 */ + { 33, 5, 0, }, /* 14 */ + { 9, 20, 0, }, /* 15 */ + { 9, 1, 0, }, /* 16 */ + { 9, 15, 0, }, /* 17 */ + { 9, 5, 743, }, /* 18 */ + { 9, 19, 0, }, /* 19 */ + { 33, 5, 121, }, /* 20 */ + { 33, 9, 1, }, /* 21 */ + { 33, 5, -1, }, /* 22 */ + { 33, 9, -199, }, /* 23 */ + { 33, 5, -232, }, /* 24 */ + { 33, 9, -121, }, /* 25 */ + { 33, 5, -300, }, /* 26 */ + { 33, 5, 195, }, /* 27 */ + { 33, 9, 210, }, /* 28 */ + { 33, 9, 206, }, /* 29 */ + { 33, 9, 205, }, /* 30 */ + { 33, 9, 79, }, /* 31 */ + { 33, 9, 202, }, /* 32 */ + { 33, 9, 203, }, /* 33 */ + { 33, 9, 207, }, /* 34 */ + { 33, 5, 97, }, /* 35 */ + { 33, 9, 211, }, /* 36 */ + { 33, 9, 209, }, /* 37 */ + { 33, 5, 163, }, /* 38 */ + { 33, 9, 213, }, /* 39 */ + { 33, 5, 130, }, /* 40 */ + { 33, 9, 214, }, /* 41 */ + { 33, 9, 218, }, /* 42 */ + { 33, 9, 217, }, /* 43 */ + { 33, 9, 219, }, /* 44 */ + { 33, 7, 0, }, /* 45 */ + { 33, 5, 56, }, /* 46 */ + { 33, 9, 2, }, /* 47 */ + { 33, 8, -1, }, /* 48 */ + { 33, 5, -2, }, /* 49 */ + { 33, 5, -79, }, /* 50 */ + { 33, 9, -97, }, /* 51 */ + { 33, 9, -56, }, /* 52 */ + { 33, 9, -130, }, /* 53 */ + { 33, 9, 10795, }, /* 54 */ + { 33, 9, -163, }, /* 55 */ + { 33, 9, 10792, }, /* 56 */ + { 33, 9, -195, }, /* 57 */ + { 33, 9, 69, }, /* 58 */ + { 33, 9, 71, }, /* 59 */ + { 33, 5, 10783, }, /* 60 */ + { 33, 5, 10780, }, /* 61 */ + { 33, 5, -210, }, /* 62 */ + { 33, 5, -206, }, /* 63 */ + { 33, 5, -205, }, /* 64 */ + { 33, 5, -202, }, /* 65 */ + { 33, 5, -203, }, /* 66 */ + { 33, 5, -207, }, /* 67 */ + { 33, 5, -209, }, /* 68 */ + { 33, 5, -211, }, /* 69 */ + { 33, 5, 10743, }, /* 70 */ + { 33, 5, 10749, }, /* 71 */ + { 33, 5, -213, }, /* 72 */ + { 33, 5, -214, }, /* 73 */ + { 33, 5, 10727, }, /* 74 */ + { 33, 5, -218, }, /* 75 */ + { 33, 5, -69, }, /* 76 */ + { 33, 5, -217, }, /* 77 */ + { 33, 5, -71, }, /* 78 */ + { 33, 5, -219, }, /* 79 */ + { 33, 6, 0, }, /* 80 */ + { 9, 6, 0, }, /* 81 */ + { 27, 12, 0, }, /* 82 */ + { 27, 12, 84, }, /* 83 */ + { 19, 9, 1, }, /* 84 */ + { 19, 5, -1, }, /* 85 */ + { 19, 24, 0, }, /* 86 */ + { 9, 2, 0, }, /* 87 */ + { 19, 6, 0, }, /* 88 */ + { 19, 5, 130, }, /* 89 */ + { 19, 9, 38, }, /* 90 */ + { 19, 9, 37, }, /* 91 */ + { 19, 9, 64, }, /* 92 */ + { 19, 9, 63, }, /* 93 */ + { 19, 5, 0, }, /* 94 */ + { 19, 9, 32, }, /* 95 */ + { 19, 5, -38, }, /* 96 */ + { 19, 5, -37, }, /* 97 */ + { 19, 5, -32, }, /* 98 */ + { 19, 5, -31, }, /* 99 */ + { 19, 5, -64, }, /* 100 */ + { 19, 5, -63, }, /* 101 */ + { 19, 9, 8, }, /* 102 */ + { 19, 5, -62, }, /* 103 */ + { 19, 5, -57, }, /* 104 */ + { 19, 9, 0, }, /* 105 */ + { 19, 5, -47, }, /* 106 */ + { 19, 5, -54, }, /* 107 */ + { 19, 5, -8, }, /* 108 */ + { 10, 9, 1, }, /* 109 */ + { 10, 5, -1, }, /* 110 */ + { 19, 5, -86, }, /* 111 */ + { 19, 5, -80, }, /* 112 */ + { 19, 5, 7, }, /* 113 */ + { 19, 9, -60, }, /* 114 */ + { 19, 5, -96, }, /* 115 */ + { 19, 25, 0, }, /* 116 */ + { 19, 9, -7, }, /* 117 */ + { 19, 9, -130, }, /* 118 */ + { 12, 9, 80, }, /* 119 */ + { 12, 9, 32, }, /* 120 */ + { 12, 5, -32, }, /* 121 */ + { 12, 5, -80, }, /* 122 */ + { 12, 9, 1, }, /* 123 */ + { 12, 5, -1, }, /* 124 */ + { 12, 26, 0, }, /* 125 */ + { 12, 12, 0, }, /* 126 */ + { 12, 11, 0, }, /* 127 */ + { 12, 9, 15, }, /* 128 */ + { 12, 5, -15, }, /* 129 */ + { 1, 9, 48, }, /* 130 */ + { 1, 6, 0, }, /* 131 */ + { 1, 21, 0, }, /* 132 */ + { 1, 5, -48, }, /* 133 */ + { 1, 5, 0, }, /* 134 */ + { 1, 17, 0, }, /* 135 */ + { 25, 12, 0, }, /* 136 */ + { 25, 17, 0, }, /* 137 */ + { 25, 21, 0, }, /* 138 */ + { 25, 7, 0, }, /* 139 */ + { 0, 25, 0, }, /* 140 */ + { 0, 21, 0, }, /* 141 */ + { 0, 23, 0, }, /* 142 */ + { 0, 26, 0, }, /* 143 */ + { 0, 12, 0, }, /* 144 */ + { 0, 7, 0, }, /* 145 */ + { 0, 11, 0, }, /* 146 */ + { 0, 6, 0, }, /* 147 */ + { 0, 13, 0, }, /* 148 */ + { 49, 21, 0, }, /* 149 */ + { 49, 1, 0, }, /* 150 */ + { 49, 7, 0, }, /* 151 */ + { 49, 12, 0, }, /* 152 */ + { 55, 7, 0, }, /* 153 */ + { 55, 12, 0, }, /* 154 */ + { 63, 13, 0, }, /* 155 */ + { 63, 7, 0, }, /* 156 */ + { 63, 12, 0, }, /* 157 */ + { 63, 6, 0, }, /* 158 */ + { 63, 26, 0, }, /* 159 */ + { 63, 21, 0, }, /* 160 */ + { 14, 12, 0, }, /* 161 */ + { 14, 10, 0, }, /* 162 */ + { 14, 7, 0, }, /* 163 */ + { 14, 13, 0, }, /* 164 */ + { 14, 6, 0, }, /* 165 */ + { 2, 12, 0, }, /* 166 */ + { 2, 10, 0, }, /* 167 */ + { 2, 7, 0, }, /* 168 */ + { 2, 13, 0, }, /* 169 */ + { 2, 23, 0, }, /* 170 */ + { 2, 15, 0, }, /* 171 */ + { 2, 26, 0, }, /* 172 */ + { 21, 12, 0, }, /* 173 */ + { 21, 10, 0, }, /* 174 */ + { 21, 7, 0, }, /* 175 */ + { 21, 13, 0, }, /* 176 */ + { 20, 12, 0, }, /* 177 */ + { 20, 10, 0, }, /* 178 */ + { 20, 7, 0, }, /* 179 */ + { 20, 13, 0, }, /* 180 */ + { 20, 23, 0, }, /* 181 */ + { 43, 12, 0, }, /* 182 */ + { 43, 10, 0, }, /* 183 */ + { 43, 7, 0, }, /* 184 */ + { 43, 13, 0, }, /* 185 */ + { 43, 26, 0, }, /* 186 */ + { 53, 12, 0, }, /* 187 */ + { 53, 7, 0, }, /* 188 */ + { 53, 10, 0, }, /* 189 */ + { 53, 13, 0, }, /* 190 */ + { 53, 15, 0, }, /* 191 */ + { 53, 26, 0, }, /* 192 */ + { 53, 23, 0, }, /* 193 */ + { 54, 10, 0, }, /* 194 */ + { 54, 7, 0, }, /* 195 */ + { 54, 12, 0, }, /* 196 */ + { 54, 13, 0, }, /* 197 */ + { 54, 15, 0, }, /* 198 */ + { 54, 26, 0, }, /* 199 */ + { 28, 10, 0, }, /* 200 */ + { 28, 7, 0, }, /* 201 */ + { 28, 12, 0, }, /* 202 */ + { 28, 13, 0, }, /* 203 */ + { 36, 10, 0, }, /* 204 */ + { 36, 7, 0, }, /* 205 */ + { 36, 12, 0, }, /* 206 */ + { 36, 13, 0, }, /* 207 */ + { 36, 15, 0, }, /* 208 */ + { 36, 26, 0, }, /* 209 */ + { 47, 10, 0, }, /* 210 */ + { 47, 7, 0, }, /* 211 */ + { 47, 12, 0, }, /* 212 */ + { 47, 21, 0, }, /* 213 */ + { 56, 7, 0, }, /* 214 */ + { 56, 12, 0, }, /* 215 */ + { 56, 6, 0, }, /* 216 */ + { 56, 21, 0, }, /* 217 */ + { 56, 13, 0, }, /* 218 */ + { 32, 7, 0, }, /* 219 */ + { 32, 12, 0, }, /* 220 */ + { 32, 6, 0, }, /* 221 */ + { 32, 13, 0, }, /* 222 */ + { 57, 7, 0, }, /* 223 */ + { 57, 26, 0, }, /* 224 */ + { 57, 21, 0, }, /* 225 */ + { 57, 12, 0, }, /* 226 */ + { 57, 13, 0, }, /* 227 */ + { 57, 15, 0, }, /* 228 */ + { 57, 22, 0, }, /* 229 */ + { 57, 18, 0, }, /* 230 */ + { 57, 10, 0, }, /* 231 */ + { 38, 7, 0, }, /* 232 */ + { 38, 10, 0, }, /* 233 */ + { 38, 12, 0, }, /* 234 */ + { 38, 13, 0, }, /* 235 */ + { 38, 21, 0, }, /* 236 */ + { 38, 26, 0, }, /* 237 */ + { 16, 9, 7264, }, /* 238 */ + { 16, 7, 0, }, /* 239 */ + { 16, 6, 0, }, /* 240 */ + { 23, 7, 0, }, /* 241 */ + { 15, 7, 0, }, /* 242 */ + { 15, 12, 0, }, /* 243 */ + { 15, 26, 0, }, /* 244 */ + { 15, 21, 0, }, /* 245 */ + { 15, 15, 0, }, /* 246 */ + { 8, 7, 0, }, /* 247 */ + { 7, 7, 0, }, /* 248 */ + { 7, 21, 0, }, /* 249 */ + { 40, 29, 0, }, /* 250 */ + { 40, 7, 0, }, /* 251 */ + { 40, 22, 0, }, /* 252 */ + { 40, 18, 0, }, /* 253 */ + { 45, 7, 0, }, /* 254 */ + { 45, 14, 0, }, /* 255 */ + { 50, 7, 0, }, /* 256 */ + { 50, 12, 0, }, /* 257 */ + { 24, 7, 0, }, /* 258 */ + { 24, 12, 0, }, /* 259 */ + { 6, 7, 0, }, /* 260 */ + { 6, 12, 0, }, /* 261 */ + { 51, 7, 0, }, /* 262 */ + { 51, 12, 0, }, /* 263 */ + { 31, 7, 0, }, /* 264 */ + { 31, 1, 0, }, /* 265 */ + { 31, 10, 0, }, /* 266 */ + { 31, 12, 0, }, /* 267 */ + { 31, 21, 0, }, /* 268 */ + { 31, 6, 0, }, /* 269 */ + { 31, 23, 0, }, /* 270 */ + { 31, 13, 0, }, /* 271 */ + { 31, 15, 0, }, /* 272 */ + { 37, 21, 0, }, /* 273 */ + { 37, 17, 0, }, /* 274 */ + { 37, 12, 0, }, /* 275 */ + { 37, 29, 0, }, /* 276 */ + { 37, 13, 0, }, /* 277 */ + { 37, 7, 0, }, /* 278 */ + { 37, 6, 0, }, /* 279 */ + { 34, 7, 0, }, /* 280 */ + { 34, 12, 0, }, /* 281 */ + { 34, 10, 0, }, /* 282 */ + { 34, 26, 0, }, /* 283 */ + { 34, 21, 0, }, /* 284 */ + { 34, 13, 0, }, /* 285 */ + { 52, 7, 0, }, /* 286 */ + { 39, 7, 0, }, /* 287 */ + { 39, 10, 0, }, /* 288 */ + { 39, 13, 0, }, /* 289 */ + { 39, 21, 0, }, /* 290 */ + { 31, 26, 0, }, /* 291 */ + { 5, 7, 0, }, /* 292 */ + { 5, 12, 0, }, /* 293 */ + { 5, 10, 0, }, /* 294 */ + { 5, 21, 0, }, /* 295 */ + { 61, 12, 0, }, /* 296 */ + { 61, 10, 0, }, /* 297 */ + { 61, 7, 0, }, /* 298 */ + { 61, 13, 0, }, /* 299 */ + { 61, 21, 0, }, /* 300 */ + { 61, 26, 0, }, /* 301 */ + { 75, 12, 0, }, /* 302 */ + { 75, 10, 0, }, /* 303 */ + { 75, 7, 0, }, /* 304 */ + { 75, 13, 0, }, /* 305 */ + { 69, 7, 0, }, /* 306 */ + { 69, 10, 0, }, /* 307 */ + { 69, 12, 0, }, /* 308 */ + { 69, 21, 0, }, /* 309 */ + { 69, 13, 0, }, /* 310 */ + { 72, 13, 0, }, /* 311 */ + { 72, 7, 0, }, /* 312 */ + { 72, 6, 0, }, /* 313 */ + { 72, 21, 0, }, /* 314 */ + { 12, 5, 0, }, /* 315 */ + { 12, 6, 0, }, /* 316 */ + { 33, 5, 35332, }, /* 317 */ + { 33, 5, 3814, }, /* 318 */ + { 33, 5, -59, }, /* 319 */ + { 33, 9, -7615, }, /* 320 */ + { 19, 5, 8, }, /* 321 */ + { 19, 9, -8, }, /* 322 */ + { 19, 5, 74, }, /* 323 */ + { 19, 5, 86, }, /* 324 */ + { 19, 5, 100, }, /* 325 */ + { 19, 5, 128, }, /* 326 */ + { 19, 5, 112, }, /* 327 */ + { 19, 5, 126, }, /* 328 */ + { 19, 8, -8, }, /* 329 */ + { 19, 5, 9, }, /* 330 */ + { 19, 9, -74, }, /* 331 */ + { 19, 8, -9, }, /* 332 */ + { 19, 5, -7205, }, /* 333 */ + { 19, 9, -86, }, /* 334 */ + { 19, 9, -100, }, /* 335 */ + { 19, 9, -112, }, /* 336 */ + { 19, 9, -128, }, /* 337 */ + { 19, 9, -126, }, /* 338 */ + { 27, 1, 0, }, /* 339 */ + { 9, 27, 0, }, /* 340 */ + { 9, 28, 0, }, /* 341 */ + { 27, 11, 0, }, /* 342 */ + { 9, 9, 0, }, /* 343 */ + { 9, 5, 0, }, /* 344 */ + { 19, 9, -7517, }, /* 345 */ + { 33, 9, -8383, }, /* 346 */ + { 33, 9, -8262, }, /* 347 */ + { 33, 9, 28, }, /* 348 */ + { 9, 7, 0, }, /* 349 */ + { 33, 5, -28, }, /* 350 */ + { 33, 14, 16, }, /* 351 */ + { 33, 14, -16, }, /* 352 */ + { 33, 14, 0, }, /* 353 */ + { 9, 26, 26, }, /* 354 */ + { 9, 26, -26, }, /* 355 */ + { 4, 26, 0, }, /* 356 */ + { 17, 9, 48, }, /* 357 */ + { 17, 5, -48, }, /* 358 */ + { 33, 9, -10743, }, /* 359 */ + { 33, 9, -3814, }, /* 360 */ + { 33, 9, -10727, }, /* 361 */ + { 33, 5, -10795, }, /* 362 */ + { 33, 5, -10792, }, /* 363 */ + { 33, 9, -10780, }, /* 364 */ + { 33, 9, -10749, }, /* 365 */ + { 33, 9, -10783, }, /* 366 */ + { 10, 5, 0, }, /* 367 */ + { 10, 26, 0, }, /* 368 */ + { 10, 21, 0, }, /* 369 */ + { 10, 15, 0, }, /* 370 */ + { 16, 5, -7264, }, /* 371 */ + { 58, 7, 0, }, /* 372 */ + { 58, 6, 0, }, /* 373 */ + { 22, 26, 0, }, /* 374 */ + { 22, 6, 0, }, /* 375 */ + { 22, 14, 0, }, /* 376 */ + { 26, 7, 0, }, /* 377 */ + { 26, 6, 0, }, /* 378 */ + { 29, 7, 0, }, /* 379 */ + { 29, 6, 0, }, /* 380 */ + { 3, 7, 0, }, /* 381 */ + { 23, 26, 0, }, /* 382 */ + { 29, 26, 0, }, /* 383 */ + { 22, 7, 0, }, /* 384 */ + { 60, 7, 0, }, /* 385 */ + { 60, 6, 0, }, /* 386 */ + { 60, 26, 0, }, /* 387 */ + { 76, 7, 0, }, /* 388 */ + { 76, 6, 0, }, /* 389 */ + { 76, 21, 0, }, /* 390 */ + { 76, 13, 0, }, /* 391 */ + { 12, 7, 0, }, /* 392 */ + { 12, 21, 0, }, /* 393 */ + { 33, 9, -35332, }, /* 394 */ + { 48, 7, 0, }, /* 395 */ + { 48, 12, 0, }, /* 396 */ + { 48, 10, 0, }, /* 397 */ + { 48, 26, 0, }, /* 398 */ + { 64, 7, 0, }, /* 399 */ + { 64, 21, 0, }, /* 400 */ + { 74, 10, 0, }, /* 401 */ + { 74, 7, 0, }, /* 402 */ + { 74, 12, 0, }, /* 403 */ + { 74, 21, 0, }, /* 404 */ + { 74, 13, 0, }, /* 405 */ + { 68, 13, 0, }, /* 406 */ + { 68, 7, 0, }, /* 407 */ + { 68, 12, 0, }, /* 408 */ + { 68, 21, 0, }, /* 409 */ + { 73, 7, 0, }, /* 410 */ + { 73, 12, 0, }, /* 411 */ + { 73, 10, 0, }, /* 412 */ + { 73, 21, 0, }, /* 413 */ + { 67, 7, 0, }, /* 414 */ + { 67, 12, 0, }, /* 415 */ + { 67, 10, 0, }, /* 416 */ + { 67, 13, 0, }, /* 417 */ + { 67, 21, 0, }, /* 418 */ + { 9, 4, 0, }, /* 419 */ + { 9, 3, 0, }, /* 420 */ + { 25, 25, 0, }, /* 421 */ + { 35, 7, 0, }, /* 422 */ + { 19, 14, 0, }, /* 423 */ + { 19, 15, 0, }, /* 424 */ + { 19, 26, 0, }, /* 425 */ + { 70, 7, 0, }, /* 426 */ + { 66, 7, 0, }, /* 427 */ + { 41, 7, 0, }, /* 428 */ + { 41, 15, 0, }, /* 429 */ + { 18, 7, 0, }, /* 430 */ + { 18, 14, 0, }, /* 431 */ + { 59, 7, 0, }, /* 432 */ + { 59, 21, 0, }, /* 433 */ + { 42, 7, 0, }, /* 434 */ + { 42, 21, 0, }, /* 435 */ + { 42, 14, 0, }, /* 436 */ + { 13, 9, 40, }, /* 437 */ + { 13, 5, -40, }, /* 438 */ + { 46, 7, 0, }, /* 439 */ + { 44, 7, 0, }, /* 440 */ + { 44, 13, 0, }, /* 441 */ + { 11, 7, 0, }, /* 442 */ + { 65, 7, 0, }, /* 443 */ + { 65, 15, 0, }, /* 444 */ + { 65, 21, 0, }, /* 445 */ + { 71, 7, 0, }, /* 446 */ + { 71, 21, 0, }, /* 447 */ + { 30, 7, 0, }, /* 448 */ + { 30, 12, 0, }, /* 449 */ + { 30, 15, 0, }, /* 450 */ + { 30, 21, 0, }, /* 451 */ + { 62, 7, 0, }, /* 452 */ + { 62, 14, 0, }, /* 453 */ + { 62, 21, 0, }, /* 454 */ + { 9, 10, 0, }, /* 455 */ + { 19, 12, 0, }, /* 456 */ +}; + +const uschar _pcre_ucd_stage1[] = { /* 8704 bytes */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, /* U+0000 */ + 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, /* U+0800 */ + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 40, 40, 41, 42, 43, 44, /* U+1000 */ + 45, 46, 47, 48, 49, 16, 50, 51, 52, 16, 53, 54, 55, 56, 57, 58, /* U+1800 */ + 59, 60, 61, 62, 63, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, /* U+2000 */ + 74, 74, 63, 75, 63, 63, 76, 16, 77, 78, 79, 80, 81, 82, 83, 84, /* U+2800 */ + 85, 86, 87, 88, 89, 90, 91, 68, 92, 92, 92, 92, 92, 92, 92, 92, /* U+3000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+3800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+4000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 92, 92, 92, 92, /* U+4800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+5000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+5800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+6000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+6800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+7000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+7800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+8000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+8800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+9000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 94, /* U+9800 */ + 95, 96, 96, 96, 96, 96, 96, 96, 96, 97, 98, 98, 99,100,101,102, /* U+A000 */ +103,104,105, 16,106, 16, 16, 16,107,107,107,107,107,107,107,107, /* U+A800 */ +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+B000 */ +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+B800 */ +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+C000 */ +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, /* U+C800 */ +107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,108, /* U+D000 */ +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, /* U+D800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+E000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+E800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F000 */ +110,110, 92, 92,111,112,113,114,115,115,116,117,118,119,120,121, /* U+F800 */ +122,123,124,125, 16,126,127,128,129,130, 16, 16, 16, 16, 16, 16, /* U+10000 */ +131, 16,132, 16,133, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+10800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11800 */ +134,134,134,134,134,134,135, 16,136, 16, 16, 16, 16, 16, 16, 16, /* U+12000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+12800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C800 */ + 68,137,138,139,140, 16,141, 16,142,143,144,145,146,147,148,149, /* U+1D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E800 */ +150,151, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+20000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+20800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+21000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+21800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+22000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+22800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+23000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+23800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+24000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+24800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+25000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+25800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+26000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+26800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+27000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+27800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+28000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+28800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+29000 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* U+29800 */ + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,152, 16, 16, /* U+2A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F000 */ + 92, 92, 92, 92,153, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF800 */ +154, 16,155,156, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE800 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF000 */ + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F0000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F0800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F1000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F1800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F2000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F2800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F3000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F3800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F4000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F4800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F5000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F5800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F6000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F6800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F7000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F7800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F8000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F8800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F9000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+F9800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FA000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FA800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FB000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FB800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FC000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FC800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FD000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FD800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FE000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FE800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+FF000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,157, /* U+FF800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+100000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+100800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+101000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+101800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+102000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+102800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+103000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+103800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+104000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+104800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+105000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+105800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+106000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+106800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+107000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+107800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+108000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+108800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+109000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+109800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10A000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10A800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10B000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10B800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10C000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10C800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10D000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10D800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10E000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10E800 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, /* U+10F000 */ +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,157, /* U+10F800 */ +}; + +const pcre_uint16 _pcre_ucd_stage2[] = { /* 40448 bytes, block = 128 */ +/* block 0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 2, 2, 3, 2, 2, 2, 4, 5, 2, 6, 2, 7, 2, 2, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 6, 6, 6, 2, + 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 2, 5, 10, 11, + 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 6, 5, 6, 0, + +/* block 1 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 3, 3, 3, 13, 13, 10, 13, 14, 15, 6, 16, 13, 10, + 13, 6, 17, 17, 10, 18, 13, 2, 10, 17, 14, 19, 17, 17, 17, 2, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9, 9, 9, 14, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 20, + +/* block 2 */ + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 23, 24, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, 21, + 22, 21, 22, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 25, 21, 22, 21, 22, 21, 22, 26, + +/* block 3 */ + 27, 28, 21, 22, 21, 22, 29, 21, 22, 30, 30, 21, 22, 14, 31, 32, + 33, 21, 22, 30, 34, 35, 36, 37, 21, 22, 38, 14, 36, 39, 40, 41, + 21, 22, 21, 22, 21, 22, 42, 21, 22, 42, 14, 14, 21, 22, 42, 21, + 22, 43, 43, 21, 22, 21, 22, 44, 21, 22, 14, 45, 21, 22, 14, 46, + 45, 45, 45, 45, 47, 48, 49, 47, 48, 49, 47, 48, 49, 21, 22, 21, + 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 50, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 14, 47, 48, 49, 21, 22, 51, 52, 21, 22, 21, 22, 21, 22, 21, 22, + +/* block 4 */ + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 53, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 14, 14, 14, 14, 14, 14, 54, 21, 22, 55, 56, 14, + 14, 21, 22, 57, 58, 59, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 60, 61, 14, 62, 63, 14, 64, 64, 14, 65, 14, 66, 14, 14, 14, 14, + 64, 14, 14, 67, 14, 14, 14, 14, 68, 69, 14, 70, 14, 14, 14, 69, + 14, 71, 72, 14, 14, 73, 14, 14, 14, 14, 14, 14, 14, 74, 14, 14, + +/* block 5 */ + 75, 14, 14, 75, 14, 14, 14, 14, 75, 76, 77, 77, 78, 14, 14, 14, + 14, 14, 79, 14, 45, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 10, 10, 10, 10, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 80, 80, 80, 80, 80, 10, 10, 10, 10, 10, 10, 10, 81, 10, 81, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + +/* block 6 */ + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 84, 85, 84, 85, 81, 86, 84, 85, 87, 87, 88, 89, 89, 89, 2, 87, + +/* block 7 */ + 87, 87, 87, 87, 86, 10, 90, 2, 91, 91, 91, 87, 92, 87, 93, 93, + 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 87, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 97, 97, 97, + 94, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 99, 98, 98, 98, 98, 98, 98, 98, 98, 98,100,101,101,102, +103,104,105,105,105,106,107,108, 84, 85, 84, 85, 84, 85, 84, 85, + 84, 85,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +111,112,113, 94,114,115,116, 84, 85,117, 84, 85, 94,118,118,118, + +/* block 8 */ +119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, + +/* block 9 */ +123,124,125,126,126,126,126,126,127,127,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +128,123,124,123,124,123,124,123,124,123,124,123,124,123,124,129, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, + +/* block 10 */ +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, +130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, +130,130,130,130,130,130,130, 87, 87,131,132,132,132,132,132,132, + 87,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, +133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, + +/* block 11 */ +133,133,133,133,133,133,133,134, 87, 2,135, 87, 87, 87, 87, 87, + 87,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,137,136, +138,136,136,138,136,136,138,136, 87, 87, 87, 87, 87, 87, 87, 87, +139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139, +139,139,139,139,139,139,139,139,139,139,139, 87, 87, 87, 87, 87, +139,139,139,138,138, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 12 */ + 16, 16, 16, 16, 87, 87,140,140,140,141,141,142, 2,141,143,143, +144,144,144,144,144,144,144,144,144,144,144, 2, 87, 87,141, 2, + 87,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + 81,145,145,145,145,145,145,145,145,145,145, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82,144,144,144,144,144,144,144,144,144, 87, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,141,141,141,141,145,145, + 82,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 13 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,141,145,144,144,144,144,144,144,144, 16,146,144, +144,144,144,144,144,147,147,144,144,143,144,144,144,144,145,145, +148,148,148,148,148,148,148,148,148,148,145,145,145,143,143,145, + +/* block 14 */ +149,149,149,149,149,149,149,149,149,149,149,149,149,149, 87,150, +151,152,151,151,151,151,151,151,151,151,151,151,151,151,151,151, +151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152, 87, 87,151,151,151, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 15 */ +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,154,154,154,154,154,154,154,154,154,154, +154,153, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +155,155,155,155,155,155,155,155,155,155,156,156,156,156,156,156, +156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, +156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157, +157,157,157,157,158,158,159,160,160,160,158, 87, 87, 87, 87, 87, + +/* block 16 */ + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 17 */ + 87,161,161,162,163,163,163,163,163,163,163,163,163,163,163,163, +163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, +163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163, +163,163,163,163,163,163,163,163,163,163, 87, 87,161,163,162,162, +162,161,161,161,161,161,161,161,161,162,162,162,162,161, 87, 87, +163, 82, 82,161,161, 87, 87, 87,163,163,163,163,163,163,163,163, +163,163,161,161, 2, 2,164,164,164,164,164,164,164,164,164,164, + 2,165,163, 87, 87, 87, 87, 87, 87, 87, 87,163,163,163,163,163, + +/* block 18 */ + 87,166,167,167, 87,168,168,168,168,168,168,168,168, 87, 87,168, +168, 87, 87,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168, 87,168,168,168,168,168,168, +168, 87,168, 87, 87, 87,168,168,168,168, 87, 87,166,168,167,167, +167,166,166,166,166, 87, 87,167,167, 87, 87,167,167,166,168, 87, + 87, 87, 87, 87, 87, 87, 87,167, 87, 87, 87, 87,168,168, 87,168, +168,168,166,166, 87, 87,169,169,169,169,169,169,169,169,169,169, +168,168,170,170,171,171,171,171,171,171,172, 87, 87, 87, 87, 87, + +/* block 19 */ + 87,173,173,174, 87,175,175,175,175,175,175, 87, 87, 87, 87,175, +175, 87, 87,175,175,175,175,175,175,175,175,175,175,175,175,175, +175,175,175,175,175,175,175,175,175, 87,175,175,175,175,175,175, +175, 87,175,175, 87,175,175, 87,175,175, 87, 87,173, 87,174,174, +174,173,173, 87, 87, 87, 87,173,173, 87, 87,173,173,173, 87, 87, + 87,173, 87, 87, 87, 87, 87, 87, 87,175,175,175,175, 87,175, 87, + 87, 87, 87, 87, 87, 87,176,176,176,176,176,176,176,176,176,176, +173,173,175,175,175,173, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 20 */ + 87,177,177,178, 87,179,179,179,179,179,179,179,179,179, 87,179, +179,179, 87,179,179,179,179,179,179,179,179,179,179,179,179,179, +179,179,179,179,179,179,179,179,179, 87,179,179,179,179,179,179, +179, 87,179,179, 87,179,179,179,179,179, 87, 87,177,179,178,178, +178,177,177,177,177,177, 87,177,177,178, 87,178,178,177, 87, 87, +179, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +179,179,177,177, 87, 87,180,180,180,180,180,180,180,180,180,180, + 87,181, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 21 */ + 87,182,183,183, 87,184,184,184,184,184,184,184,184, 87, 87,184, +184, 87, 87,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184, 87,184,184,184,184,184,184, +184, 87,184,184, 87,184,184,184,184,184, 87, 87,182,184,183,182, +183,182,182,182,182, 87, 87,183,183, 87, 87,183,183,182, 87, 87, + 87, 87, 87, 87, 87, 87,182,183, 87, 87, 87, 87,184,184, 87,184, +184,184,182,182, 87, 87,185,185,185,185,185,185,185,185,185,185, +186,184, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 22 */ + 87, 87,187,188, 87,188,188,188,188,188,188, 87, 87, 87,188,188, +188, 87,188,188,188,188, 87, 87, 87,188,188, 87,188, 87,188,188, + 87, 87, 87,188,188, 87, 87, 87,188,188,188, 87, 87, 87,188,188, +188,188,188,188,188,188,188,188,188,188, 87, 87, 87, 87,189,189, +187,189,189, 87, 87, 87,189,189,189, 87,189,189,189,187, 87, 87, +188, 87, 87, 87, 87, 87, 87,189, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87,190,190,190,190,190,190,190,190,190,190, +191,191,191,192,192,192,192,192,192,193,192, 87, 87, 87, 87, 87, + +/* block 23 */ + 87,194,194,194, 87,195,195,195,195,195,195,195,195, 87,195,195, +195, 87,195,195,195,195,195,195,195,195,195,195,195,195,195,195, +195,195,195,195,195,195,195,195,195, 87,195,195,195,195,195,195, +195,195,195,195, 87,195,195,195,195,195, 87, 87, 87,195,196,196, +196,194,194,194,194, 87,196,196,196, 87,196,196,196,196, 87, 87, + 87, 87, 87, 87, 87,196,196, 87,195,195, 87, 87, 87, 87, 87, 87, +195,195,196,196, 87, 87,197,197,197,197,197,197,197,197,197,197, + 87, 87, 87, 87, 87, 87, 87, 87,198,198,198,198,198,198,198,199, + +/* block 24 */ + 87, 87,200,200, 87,201,201,201,201,201,201,201,201, 87,201,201, +201, 87,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201, 87,201,201,201,201,201,201, +201,201,201,201, 87,201,201,201,201,201, 87, 87,202,201,200,202, +200,200,200,200,200, 87,202,200,200, 87,200,200,202,202, 87, 87, + 87, 87, 87, 87, 87,200,200, 87, 87, 87, 87, 87, 87, 87,201, 87, +201,201,202,202, 87, 87,203,203,203,203,203,203,203,203,203,203, + 87, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 25 */ + 87, 87,204,204, 87,205,205,205,205,205,205,205,205, 87,205,205, +205, 87,205,205,205,205,205,205,205,205,205,205,205,205,205,205, +205,205,205,205,205,205,205,205,205, 87,205,205,205,205,205,205, +205,205,205,205,205,205,205,205,205,205, 87, 87, 87,205,204,204, +204,206,206,206,206, 87,204,204,204, 87,204,204,204,206, 87, 87, + 87, 87, 87, 87, 87, 87, 87,204, 87, 87, 87, 87, 87, 87, 87, 87, +205,205,206,206, 87, 87,207,207,207,207,207,207,207,207,207,207, +208,208,208,208,208,208, 87, 87, 87,209,205,205,205,205,205,205, + +/* block 26 */ + 87, 87,210,210, 87,211,211,211,211,211,211,211,211,211,211,211, +211,211,211,211,211,211,211, 87, 87, 87,211,211,211,211,211,211, +211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211, +211,211, 87,211,211,211,211,211,211,211,211,211, 87,211, 87, 87, +211,211,211,211,211,211,211, 87, 87, 87,212, 87, 87, 87, 87,210, +210,210,212,212,212, 87,212, 87,210,210,210,210,210,210,210,210, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87,210,210,213, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 27 */ + 87,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, +214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, +214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214, +214,215,214,214,215,215,215,215,215,215,215, 87, 87, 87, 87, 3, +214,214,214,214,214,214,216,215,215,215,215,215,215,215,215,217, +218,218,218,218,218,218,218,218,218,218,217,217, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 28 */ + 87,219,219, 87,219, 87, 87,219,219, 87,219, 87, 87,219, 87, 87, + 87, 87, 87, 87,219,219,219,219, 87,219,219,219,219,219,219,219, + 87,219,219,219, 87,219, 87,219, 87, 87,219,219, 87,219,219,219, +219,220,219,219,220,220,220,220,220,220, 87,220,220,219, 87, 87, +219,219,219,219,219, 87,221, 87,220,220,220,220,220,220, 87, 87, +222,222,222,222,222,222,222,222,222,222, 87, 87,219,219, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 29 */ +223,224,224,224,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,224,224,224,224,224,226,226,224,224,224,224,224,224, +227,227,227,227,227,227,227,227,227,227,228,228,228,228,228,228, +228,228,228,228,224,226,224,226,224,226,229,230,229,230,231,231, +223,223,223,223,223,223,223,223, 87,223,223,223,223,223,223,223, +223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223, +223,223,223,223,223,223,223,223,223,223,223,223,223, 87, 87, 87, + 87,226,226,226,226,226,226,226,226,226,226,226,226,226,226,231, + +/* block 30 */ +226,226,226,226,226,225,226,226,223,223,223,223, 87, 87, 87, 87, +226,226,226,226,226,226,226,226, 87,226,226,226,226,226,226,226, +226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226, +226,226,226,226,226,226,226,226,226,226,226,226,226, 87,224,224, +224,224,224,224,224,224,226,224,224,224,224,224,224, 87,224,224, +225,225,225,225,225, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 31 */ +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,233,233,234,234,234, +234,233,234,234,234,234,234,234,233,234,234,233,233,234,234,232, +235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236, +232,232,232,232,232,232,233,233,234,234,232,232,232,232,234,234, +234,232,233,233,233,232,232,233,233,233,233,233,233,233,232,232, +232,234,234,234,234,232,232,232,232,232,232,232,232,232,232,232, + +/* block 32 */ +232,232,234,233,233,234,234,233,233,233,233,233,233,234,232,233, +235,235,235,235,235,235,235,235,235,235, 87, 87, 87, 87,237,237, +238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238, +238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238, +238,238,238,238,238,238, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, +239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, +239,239,239,239,239,239,239,239,239,239,239, 2,240, 87, 87, 87, + +/* block 33 */ +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241, 87, 87, 87, 87, 87,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, + +/* block 34 */ +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241, 87, 87, 87, 87, 87,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241, 87, 87, 87, 87, 87, 87, + +/* block 35 */ +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242, 87,242,242,242,242, 87, 87, +242,242,242,242,242,242,242, 87,242, 87,242,242,242,242, 87, 87, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, + +/* block 36 */ +242,242,242,242,242,242,242,242,242, 87,242,242,242,242, 87, 87, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242, 87, +242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, + +/* block 37 */ +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242, 87,242,242,242,242, 87, 87,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242,242,242,242,242, 87, 87, 87, 87,243, +244,245,245,245,245,245,245,245,245,246,246,246,246,246,246,246, +246,246,246,246,246,246,246,246,246,246,246,246,246, 87, 87, 87, + +/* block 38 */ +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +244,244,244,244,244,244,244,244,244,244, 87, 87, 87, 87, 87, 87, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, +247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, +247,247,247,247,247, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 39 */ + 87,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, + +/* block 40 */ +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, + +/* block 41 */ +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,249,249,248, +248,248,248,248,248,248,248, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 42 */ +250,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251, +251,251,251,251,251,251,251,251,251,251,251,252,253, 87, 87, 87, +254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, +254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, +254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, +254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, +254,254,254,254,254,254,254,254,254,254,254, 2, 2, 2,255,255, +255, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 43 */ +256,256,256,256,256,256,256,256,256,256,256,256,256, 87,256,256, +256,256,257,257,257, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258, +258,258,259,259,259, 2, 2, 87, 87, 87, 87, 87, 87, 87, 87, 87, +260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260, +260,260,261,261, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +262,262,262,262,262,262,262,262,262,262,262,262,262, 87,262,262, +262, 87,263,263, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 44 */ +264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, +264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, +264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, +264,264,264,264,265,265,266,267,267,267,267,267,267,267,266,266, +266,266,266,266,266,266,267,266,266,267,267,267,267,267,267,267, +267,267,267,267,268,268,268,269,268,268,268,270,264,267, 87, 87, +271,271,271,271,271,271,271,271,271,271, 87, 87, 87, 87, 87, 87, +272,272,272,272,272,272,272,272,272,272, 87, 87, 87, 87, 87, 87, + +/* block 45 */ +273,273, 2, 2,273, 2,274,273,273,273,273,275,275,275,276, 87, +277,277,277,277,277,277,277,277,277,277, 87, 87, 87, 87, 87, 87, +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,279,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 46 */ +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, +278,278,278,278,278,278,278,278,278,275,278, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 47 */ +280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280, +280,280,280,280,280,280,280,280,280,280,280,280,280, 87, 87, 87, +281,281,281,282,282,282,282,281,281,282,282,282, 87, 87, 87, 87, +282,282,281,282,282,282,282,282,282,281,281,281, 87, 87, 87, 87, +283, 87, 87, 87,284,284,285,285,285,285,285,285,285,285,285,285, +286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286, +286,286,286,286,286,286,286,286,286,286,286,286,286,286, 87, 87, +286,286,286,286,286, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 48 */ +287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287, +287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287, +287,287,287,287,287,287,287,287,287,287, 87, 87, 87, 87, 87, 87, +288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, +288,287,287,287,287,287,287,287,288,288, 87, 87, 87, 87, 87, 87, +289,289,289,289,289,289,289,289,289,289, 87, 87, 87, 87,290,290, +291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291, +291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291, + +/* block 49 */ +292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292, +292,292,292,292,292,292,292,293,293,294,294,294, 87, 87,295,295, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 50 */ +296,296,296,296,297,298,298,298,298,298,298,298,298,298,298,298, +298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298, +298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298, +298,298,298,298,296,297,296,296,296,296,296,297,296,297,297,297, +297,297,296,297,297,298,298,298,298,298,298,298, 87, 87, 87, 87, +299,299,299,299,299,299,299,299,299,299,300,300,300,300,300,300, +300,301,301,301,301,301,301,301,301,301,301,296,296,296,296,296, +296,296,296,296,301,301,301,301,301,301,301,301,301, 87, 87, 87, + +/* block 51 */ +302,302,303,304,304,304,304,304,304,304,304,304,304,304,304,304, +304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304, +304,303,302,302,302,302,303,303,302,302,303, 87, 87, 87,304,304, +305,305,305,305,305,305,305,305,305,305, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 52 */ +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,307,307,307,307,307,307,307,307,308,308,308,308, +308,308,308,308,307,307,308,308, 87, 87, 87,309,309,309,309,309, +310,310,310,310,310,310,310,310,310,310, 87, 87, 87,306,306,306, +311,311,311,311,311,311,311,311,311,311,312,312,312,312,312,312, +312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, +312,312,312,312,312,312,312,312,313,313,313,313,313,313,314,314, + +/* block 53 */ + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 94, 94, 94, 94, 94,315, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 88, 88, 88, + 88, 88, 14, 14, 14, 14, 94, 94, 94, 94, 94, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14,316,317, 14, 14, 14,318, 14, 14, + +/* block 54 */ + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 88, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, + +/* block 55 */ + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + +/* block 56 */ + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 14, 14, 14, 14, 14,319, 14, 14,320, 14, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + +/* block 57 */ +321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, +321,321,321,321,321,321, 87, 87,322,322,322,322,322,322, 87, 87, +321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, +321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, +321,321,321,321,321,321, 87, 87,322,322,322,322,322,322, 87, 87, + 94,321, 94,321, 94,321, 94,321, 87,322, 87,322, 87,322, 87,322, +321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322, +323,323,324,324,324,324,325,325,326,326,327,327,328,328, 87, 87, + +/* block 58 */ +321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, +321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, +321,321,321,321,321,321,321,321,329,329,329,329,329,329,329,329, +321,321, 94,330, 94, 87, 94, 94,322,322,331,331,332, 86,333, 86, + 86, 86, 94,330, 94, 87, 94, 94,334,334,334,334,332, 86, 86, 86, +321,321, 94, 94, 87, 87, 94, 94,322,322,335,335, 87, 86, 86, 86, +321,321, 94, 94, 94,113, 94, 94,322,322,336,336,117, 86, 86, 86, + 87, 87, 94,330, 94, 87, 94, 94,337,337,338,338,332, 86, 86, 87, + +/* block 59 */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16,339,339, 16, 16, + 7, 7, 7, 7, 7, 7, 2, 2, 15, 19, 4, 15, 15, 19, 4, 15, + 2, 2, 2, 2, 2, 2, 2, 2,340,341, 16, 16, 16, 16, 16, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 19, 2, 2, 2, 2, 11, + 11, 2, 2, 2, 6, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 6, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 16, 16, 16, 16, 16, 87, 87, 87, 87, 87, 16, 16, 16, 16, 16, 16, + 17, 14, 87, 87, 17, 17, 17, 17, 17, 17, 6, 6, 6, 4, 5, 14, + +/* block 60 */ + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 6, 6, 6, 4, 5, 87, + 80, 80, 80, 80, 80, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,342,342,342, +342, 82,342,342,342, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 61 */ + 13, 13,343, 13, 13, 13, 13,343, 13, 13,344,343,343,343,344,344, +343,343,343,344, 13,343, 13, 13, 13,343,343,343,343,343, 13, 13, + 13, 13, 13, 13,343, 13,345, 13,343, 13,346,347,343,343, 13,344, +343,343,348,343,344,349,349,349,349,344, 13, 13,344,344,343,343, + 6, 6, 6, 6, 6,343,344,344,344,344, 13, 6, 13, 13,350, 13, + 87, 87, 87, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, +351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351, +352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, + +/* block 62 */ +353,353,353, 21, 22,353,353,353,353, 87, 87, 87, 87, 87, 87, 87, + 6, 6, 6, 6, 6, 13, 13, 13, 13, 13, 6, 6, 13, 13, 13, 13, + 6, 13, 13, 6, 13, 13, 6, 13, 13, 13, 13, 13, 13, 13, 6, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, + 13, 13, 6, 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + +/* block 63 */ + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + +/* block 64 */ + 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 6, 6, 13, 13, 13, 13, 13, 13, 13, 4, 5, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 13, 13, 13, + +/* block 65 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, + 6, 6, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 66 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + +/* block 67 */ + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13,354,354,354,354,354,354,354,354,354,354, +354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, +355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355, +355,355,355,355,355,355,355,355,355,355, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + +/* block 68 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + +/* block 69 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 6, 6, 6, 6, 6, 6, 6, 6, + +/* block 70 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 6, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + +/* block 71 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, + 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 72 */ + 87, 13, 13, 13, 13, 87, 13, 13, 13, 13, 87, 87, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 87, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 13, 87, 13, + 13, 13, 13, 87, 87, 87, 13, 87, 13, 13, 13, 13, 13, 13, 13, 87, + 87, 13, 13, 13, 13, 13, 13, 13, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 5, 4, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + +/* block 73 */ + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 13, 87, 87, 87, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 87, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, + 6, 6, 6, 6, 6, 4, 5, 6, 6, 6, 6, 87, 6, 87, 87, 87, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + +/* block 74 */ +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, +356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, + +/* block 75 */ + 6, 6, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, + 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 4, 5, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 6, 6, + +/* block 76 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 13, 13, 6, 6, 6, 6, 6, 6, 87, 87, 87, + 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 77 */ +357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, +357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, +357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, 87, +358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, +358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, +358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 87, + 21, 22,359,360,361,362,363, 21, 22, 21, 22, 21, 22,364,365,366, + 87, 14, 21, 22, 14, 21, 22, 14, 14, 14, 14, 14, 14, 80, 87, 87, + +/* block 78 */ +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,109,110,109,110,109,110,109,110,109,110,109,110, +109,110,109,110,367,368,368,368,368,368,368, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87,369,369,369,369,370,369,369, + +/* block 79 */ +371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, +371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, +371,371,371,371,371,371, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, +372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, +372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, +372,372,372,372,372,372, 87, 87, 87, 87, 87, 87, 87, 87, 87,373, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 80 */ +242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,242,242,242,242,242,242, 87, 87, 87, 87, 87, 87, 87, 87, 87, +242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, +242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, +242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, +242,242,242,242,242,242,242, 87,242,242,242,242,242,242,242, 87, +126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, +126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, + +/* block 81 */ + 2, 2, 15, 19, 15, 19, 2, 2, 2, 15, 19, 2, 15, 19, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 7, 2, 15, 19, 2, 2, + 15, 19, 4, 5, 4, 5, 4, 5, 4, 5, 2, 2, 2, 2, 2, 81, + 2, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 82 */ +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374, 87,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 83 */ +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, + +/* block 84 */ +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, + +/* block 85 */ + 1, 2, 2, 2, 13,375,349,376, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 13, 13, 4, 5, 4, 5, 4, 5, 4, 5, 7, 4, 5, 5, + 13,376,376,376,376,376,376,376,376,376, 82, 82, 82, 82, 82, 82, + 7, 81, 81, 81, 81, 81, 13, 13,376,376,376,375,349, 2, 13, 13, + 87,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, + +/* block 86 */ +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377, 87, 87, 82, 82, 10, 10,378,378,377, + 7,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379, 2, 81,380,380,379, + +/* block 87 */ + 87, 87, 87, 87, 87,381,381,381,381,381,381,381,381,381,381,381, +381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, +381,381,381,381,381,381,381,381,381,381,381,381,381,381, 87, 87, + 87,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, + +/* block 88 */ +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, 87, + 13, 13, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381, +381,381,381,381,381,381,381,381, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, + +/* block 89 */ +382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, +382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, 87, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, +382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, +382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, 13, + +/* block 90 */ + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, 87, + +/* block 91 */ +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, +383,383,383,383,383,383,383,383, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + +/* block 92 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, + +/* block 93 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + +/* block 94 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 95 */ +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,386,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, + +/* block 96 */ +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, +385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385, + +/* block 97 */ +385,385,385,385,385,385,385,385,385,385,385,385,385, 87, 87, 87, +387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, +387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, +387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, +387,387,387,387,387,387,387, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 98 */ +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, + +/* block 99 */ +388,388,388,388,388,388,388,388,388,388,388,388,389,390,390,390, +388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, +391,391,391,391,391,391,391,391,391,391,388,388, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, + 87, 87,123,124,123,124,123,124,123,124,123,124,123,124,392,126, +127,127,127,393, 87, 87, 87, 87, 87, 87, 87, 87,126,126,393,316, + +/* block 100 */ +123,124,123,124,123,124,123,124,123,124,123,124,123,124,123,124, +123,124,123,124,123,124,123,124, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 101 */ + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 10, 10, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 14, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, + 80, 14, 14, 14, 14, 14, 14, 14, 14, 21, 22, 21, 22,394, 21, 22, + +/* block 102 */ + 21, 22, 21, 22, 21, 22, 21, 22, 81, 10, 10, 21, 22, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 45, 45, 45, 45, 45, + +/* block 103 */ +395,395,396,395,395,395,396,395,395,395,395,396,395,395,395,395, +395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395, +395,395,395,397,397,396,396,397,398,398,398,398, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, +399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, +399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399, +399,399,399,399,400,400,400,400, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 104 */ +401,401,402,402,402,402,402,402,402,402,402,402,402,402,402,402, +402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, +402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, +402,402,402,402,401,401,401,401,401,401,401,401,401,401,401,401, +401,401,401,401,403, 87, 87, 87, 87, 87, 87, 87, 87, 87,404,404, +405,405,405,405,405,405,405,405,405,405, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 105 */ +406,406,406,406,406,406,406,406,406,406,407,407,407,407,407,407, +407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407, +407,407,407,407,407,407,408,408,408,408,408,408,408,408,409,409, +410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410, +410,410,410,410,410,410,410,411,411,411,411,411,411,411,411,411, +411,411,412,412, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,413, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 106 */ +414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, +414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, +414,414,414,414,414,414,414,414,414,415,415,415,415,415,415,416, +416,415,415,416,416,415,415, 87, 87, 87, 87, 87, 87, 87, 87, 87, +414,414,414,415,414,414,414,414,414,414,414,414,415,416, 87, 87, +417,417,417,417,417,417,417,417,417,417, 87, 87,418,418,418,418, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 107 */ +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, + +/* block 108 */ +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 109 */ +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, +419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, + +/* block 110 */ +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, + +/* block 111 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384, 87, 87, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384, 87, 87, 87, 87, 87, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, + +/* block 112 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 113 */ + 14, 14, 14, 14, 14, 14, 14, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87,134,134,134,134,134, 87, 87, 87, 87, 87,139,136,139, +139,139,139,139,139,139,139,139,139,421,139,139,139,139,139,139, +139,139,139,139,139,139,139, 87,139,139,139,139,139, 87,139, 87, +139,139, 87,139,139, 87,139,139,139,139,139,139,139,139,139,139, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 114 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 115 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 116 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145, 4, 5, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + +/* block 117 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + 87, 87,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +145,145,145,145,145,145,145,145,145,145,145,145,142, 13, 87, 87, + +/* block 118 */ + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 2, 2, 2, 2, 2, 2, 2, 4, 5, 2, 87, 87, 87, 87, 87, 87, + 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 2, 7, 7, 11, 11, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, + 5, 4, 5, 4, 5, 2, 2, 4, 5, 2, 2, 2, 2, 11, 11, 11, + 2, 2, 2, 87, 2, 2, 2, 2, 7, 4, 5, 4, 5, 4, 5, 2, + 2, 2, 6, 7, 6, 6, 6, 87, 2, 3, 2, 2, 87, 87, 87, 87, +145,145,145,145,145, 87,145,145,145,145,145,145,145,145,145,145, + +/* block 119 */ +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145, 87, 87, 16, + +/* block 120 */ + 87, 2, 2, 2, 3, 2, 2, 2, 4, 5, 2, 6, 2, 7, 2, 2, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 6, 6, 6, 2, + 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 2, 5, 10, 11, + 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 4, 6, 5, 6, 4, + 5, 2, 4, 5, 2, 2,379,379,379,379,379,379,379,379,379,379, + 81,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, + +/* block 121 */ +379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, +379,379,379,379,379,379,379,379,379,379,379,379,379,379, 81, 81, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, 87, + 87, 87,241,241,241,241,241,241, 87, 87,241,241,241,241,241,241, + 87, 87,241,241,241,241,241,241, 87, 87,241,241,241, 87, 87, 87, + 3, 3, 6, 10, 13, 3, 3, 87, 13, 6, 6, 6, 6, 13, 13, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 16, 16, 16, 13, 13, 87, 87, + +/* block 122 */ +422,422,422,422,422,422,422,422,422,422,422,422, 87,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422, 87,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422, 87,422,422, 87,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422, 87, 87, +422,422,422,422,422,422,422,422,422,422,422,422,422,422, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 123 */ +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422, 87, 87, 87, 87, 87, + +/* block 124 */ + 2, 2, 13, 87, 87, 87, 87, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 87, 87, 87, 13, 13, 13, 13, 13, 13, 13, 13, 13, +423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, +423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, +423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, +423,423,423,423,423,424,424,424,424,425,425,425,425,425,425,425, + +/* block 125 */ +425,425,425,425,425,425,425,425,425,425,424, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 82, 87, 87, + +/* block 126 */ +426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, +426,426,426,426,426,426,426,426,426,426,426,426,426, 87, 87, 87, +427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, +427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, +427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, +427, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 127 */ +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, +428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, 87, +429,429,429,429, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430, +430,431,430,430,430,430,430,430,430,430,431, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 128 */ +432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432, +432,432,432,432,432,432,432,432,432,432,432,432,432,432, 87,433, +434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434, +434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434, +434,434,434,434, 87, 87, 87, 87,434,434,434,434,434,434,434,434, +435,436,436,436,436,436, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 129 */ +437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, +437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, +437,437,437,437,437,437,437,437,438,438,438,438,438,438,438,438, +438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, +438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, +439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, +439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, +439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, + +/* block 130 */ +440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, +440,440,440,440,440,440,440,440,440,440,440,440,440,440, 87, 87, +441,441,441,441,441,441,441,441,441,441, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 131 */ +442,442,442,442,442,442, 87, 87,442, 87,442,442,442,442,442,442, +442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, +442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, +442,442,442,442,442,442, 87,442,442, 87, 87, 87,442, 87, 87,442, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 132 */ +443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443, +443,443,443,443,443,443,444,444,444,444, 87, 87, 87, 87, 87,445, +446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446, +446,446,446,446,446,446,446,446,446,446, 87, 87, 87, 87, 87,447, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 133 */ +448,449,449,449, 87,449,449, 87, 87, 87, 87, 87,449,449,449,449, +448,448,448,448, 87,448,448,448, 87,448,448,448,448,448,448,448, +448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, +448,448,448,448, 87, 87, 87, 87,449,449,449, 87, 87, 87, 87,449, +450,450,450,450,450,450,450,450, 87, 87, 87, 87, 87, 87, 87, 87, +451,451,451,451,451,451,451,451,451, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 134 */ +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, + +/* block 135 */ +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, +452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 136 */ +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, +453,453,453, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, +454,454,454,454, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 137 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 138 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 87, 87, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13,455,455, 82, 82, 82, 13, 13, 13,455,455,455, +455,455,455, 16, 16, 16, 16, 16, 16, 16, 16, 82, 82, 82, 82, 82, + +/* block 139 */ + 82, 82, 82, 13, 13, 82, 82, 82, 82, 82, 82, 82, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 82, 82, 82, 82, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 140 */ +425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, +425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, +425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, +425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, +425,425,456,456,456,425, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 141 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 142 */ +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,344, +344,344,344,344,344, 87,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, + +/* block 143 */ +343,343,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,343, 87,343,343, + 87, 87,343, 87, 87,343,343, 87, 87,343,343,343,343, 87,343,343, +343,343,343,343,343,343,344,344,344,344, 87,344, 87,344,344,344, +344,344,344,344, 87,344,344,344,344,344,344,344,344,344,344,344, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, + +/* block 144 */ +344,344,344,344,343,343, 87,343,343,343,343, 87, 87,343,343,343, +343,343,343,343,343, 87,343,343,343,343,343,343,343, 87,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,343,343, 87,343,343,343,343, 87, +343,343,343,343,343, 87,343, 87, 87, 87,343,343,343,343,343,343, +343, 87,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, + +/* block 145 */ +343,343,343,343,343,343,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, + +/* block 146 */ +344,344,344,344,344,344,344,344,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, + +/* block 147 */ +343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344, 87, 87,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343, 6,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344, 6,344,344,344,344, +344,344,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343, 6,344,344,344,344, + +/* block 148 */ +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344, 6,344,344,344,344,344,344,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343, 6,344,344,344,344,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, 6, +344,344,344,344,344,344,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, 6, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, + +/* block 149 */ +344,344,344,344,344,344,344,344,344, 6,344,344,344,344,344,344, +343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343, +343,343,343,343,343,343,343,343,343, 6,344,344,344,344,344,344, +344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, +344,344,344, 6,344,344,344,344,344,344,343,344, 87, 87, 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, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + +/* block 150 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 87, 87, 87, 87, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + +/* block 151 */ + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 152 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 153 */ +384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, +384,384,384,384,384,384,384,384,384,384,384,384,384,384, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 154 */ + 87, 16, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + +/* block 155 */ + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + +/* block 156 */ + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + +/* block 157 */ +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420, +420,420,420,420,420,420,420,420,420,420,420,420,420,420, 87, 87, + +}; + +#if UCD_BLOCK_SIZE != 128 +#error Please correct UCD_BLOCK_SIZE in pcre_internal.h +#endif diff --git a/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c b/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c deleted file mode 100644 index 668ae154d..000000000 --- a/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c +++ /dev/null @@ -1,177 +0,0 @@ -/************************************************* -* Perl-Compatible Regular Expressions * -*************************************************/ - -/* PCRE is a library of functions to support regular expressions whose syntax -and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge - ------------------------------------------------------------------------------ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of the University of Cambridge nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------ -*/ - - -/* This module contains code for searching the table of Unicode character -properties. */ - -#include "config.h" - -#include "pcre_internal.h" - -#include "ucp.h" /* Category definitions */ -#include "ucpinternal.h" /* Internal table details */ -#include "ucptable.h" /* The table itself */ - - -/* Table to translate from particular type value to the general value. */ - -static const int ucp_gentype[] = { - ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */ - ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */ - ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */ - ucp_N, ucp_N, ucp_N, /* Nd, Nl, No */ - ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, /* Pc, Pd, Pe, Pf, Pi */ - ucp_P, ucp_P, /* Ps, Po */ - ucp_S, ucp_S, ucp_S, ucp_S, /* Sc, Sk, Sm, So */ - ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */ -}; - - - -/************************************************* -* Search table and return type * -*************************************************/ - -/* Three values are returned: the category is ucp_C, ucp_L, etc. The detailed -character type is ucp_Lu, ucp_Nd, etc. The script is ucp_Latin, etc. - -Arguments: - c the character value - type_ptr the detailed character type is returned here - script_ptr the script is returned here - -Returns: the character type category -*/ - -int -_pcre_ucp_findprop(const unsigned int c, int *type_ptr, int *script_ptr) -{ -int bot = 0; -int top = sizeof(ucp_table)/sizeof(cnode); -int mid; - -/* The table is searched using a binary chop. You might think that using -intermediate variables to hold some of the common expressions would speed -things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it -makes things a lot slower. */ - -for (;;) - { - if (top <= bot) - { - *type_ptr = ucp_Cn; - *script_ptr = ucp_Common; - return ucp_C; - } - mid = (bot + top) >> 1; - if (c == (ucp_table[mid].f0 & f0_charmask)) break; - if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid; - else - { - if ((ucp_table[mid].f0 & f0_rangeflag) != 0 && - c <= (ucp_table[mid].f0 & f0_charmask) + - (ucp_table[mid].f1 & f1_rangemask)) break; - bot = mid + 1; - } - } - -/* Found an entry in the table. Set the script and detailed type values, and -return the general type. */ - -*script_ptr = (ucp_table[mid].f0 & f0_scriptmask) >> f0_scriptshift; -*type_ptr = (ucp_table[mid].f1 & f1_typemask) >> f1_typeshift; - -return ucp_gentype[*type_ptr]; -} - - - -/************************************************* -* Search table and return other case * -*************************************************/ - -/* If the given character is a letter, and there is another case for the -letter, return the other case. Otherwise, return -1. - -Arguments: - c the character value - -Returns: the other case or NOTACHAR if none -*/ - -unsigned int -_pcre_ucp_othercase(const unsigned int c) -{ -int bot = 0; -int top = sizeof(ucp_table)/sizeof(cnode); -int mid, offset; - -/* The table is searched using a binary chop. You might think that using -intermediate variables to hold some of the common expressions would speed -things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it -makes things a lot slower. */ - -for (;;) - { - if (top <= bot) return -1; - mid = (bot + top) >> 1; - if (c == (ucp_table[mid].f0 & f0_charmask)) break; - if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid; - else - { - if ((ucp_table[mid].f0 & f0_rangeflag) != 0 && - c <= (ucp_table[mid].f0 & f0_charmask) + - (ucp_table[mid].f1 & f1_rangemask)) break; - bot = mid + 1; - } - } - -/* Found an entry in the table. Return NOTACHAR for a range entry. Otherwise -return the other case if there is one, else NOTACHAR. */ - -if ((ucp_table[mid].f0 & f0_rangeflag) != 0) return NOTACHAR; - -offset = ucp_table[mid].f1 & f1_casemask; -if ((offset & f1_caseneg) != 0) offset |= f1_caseneg; -return (offset == 0)? NOTACHAR : c + offset; -} - - -/* End of pcre_ucp_searchfuncs.c */ diff --git a/ext/pcre/pcrelib/pcre_valid_utf8.c b/ext/pcre/pcrelib/pcre_valid_utf8.c index 6b341c195..62f47b952 100644 --- a/ext/pcre/pcrelib/pcre_valid_utf8.c +++ b/ext/pcre/pcrelib/pcre_valid_utf8.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -152,6 +152,9 @@ for (p = string; length-- > 0; p++) if ((*(++p) & 0xc0) != 0x80) return p - string; } } +#else +(void)(string); /* Keep picky compilers happy */ +(void)(length); #endif return -1; diff --git a/ext/pcre/pcrelib/pcre_version.c b/ext/pcre/pcrelib/pcre_version.c index 36ee93e71..13330d1a5 100644 --- a/ext/pcre/pcrelib/pcre_version.c +++ b/ext/pcre/pcrelib/pcre_version.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -77,7 +77,7 @@ I could find no way of detecting that a macro is defined as an empty string at pre-processor time. This hack uses a standard trick for avoiding calling the STRING macro with an empty argument when doing the test. */ -PCRE_EXP_DEFN const char * +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION pcre_version(void) { return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? diff --git a/ext/pcre/pcrelib/pcre_xclass.c b/ext/pcre/pcrelib/pcre_xclass.c index d22d9e648..c939662f0 100644 --- a/ext/pcre/pcrelib/pcre_xclass.c +++ b/ext/pcre/pcrelib/pcre_xclass.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -102,8 +102,7 @@ while ((t = *data++) != XCL_END) #ifdef SUPPORT_UCP else /* XCL_PROP & XCL_NOTPROP */ { - int chartype, script; - int category = _pcre_ucp_findprop(c, &chartype, &script); + const ucd_record * prop = GET_UCD(c); switch(*data) { @@ -112,20 +111,20 @@ while ((t = *data++) != XCL_END) break; case PT_LAMP: - if ((chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) == + if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt) == (t == XCL_PROP)) return !negated; break; case PT_GC: - if ((data[1] == category) == (t == XCL_PROP)) return !negated; + if ((data[1] == _pcre_ucp_gentype[prop->chartype]) == (t == XCL_PROP)) return !negated; break; case PT_PC: - if ((data[1] == chartype) == (t == XCL_PROP)) return !negated; + if ((data[1] == prop->chartype) == (t == XCL_PROP)) return !negated; break; case PT_SC: - if ((data[1] == script) == (t == XCL_PROP)) return !negated; + if ((data[1] == prop->script) == (t == XCL_PROP)) return !negated; break; /* This should never occur, but compilers may mutter if there is no diff --git a/ext/pcre/pcrelib/pcregrep.c b/ext/pcre/pcrelib/pcregrep.c index f192f0c0c..f6774a9da 100644 --- a/ext/pcre/pcrelib/pcregrep.c +++ b/ext/pcre/pcrelib/pcregrep.c @@ -6,7 +6,7 @@ its pattern matching. On a Unix or Win32 system it can recurse into directories. - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -137,9 +137,13 @@ static pcre_extra **hints_list = NULL; static char *include_pattern = NULL; static char *exclude_pattern = NULL; +static char *include_dir_pattern = NULL; +static char *exclude_dir_pattern = NULL; static pcre *include_compiled = NULL; static pcre *exclude_compiled = NULL; +static pcre *include_dir_compiled = NULL; +static pcre *exclude_dir_compiled = NULL; static int after_context = 0; static int before_context = 0; @@ -179,15 +183,17 @@ typedef struct option_item { /* Options without a single-letter equivalent get a negative value. This can be used to identify them. */ -#define N_COLOUR (-1) -#define N_EXCLUDE (-2) -#define N_HELP (-3) -#define N_INCLUDE (-4) -#define N_LABEL (-5) -#define N_LOCALE (-6) -#define N_NULL (-7) -#define N_LOFFSETS (-8) -#define N_FOFFSETS (-9) +#define N_COLOUR (-1) +#define N_EXCLUDE (-2) +#define N_EXCLUDE_DIR (-3) +#define N_HELP (-4) +#define N_INCLUDE (-5) +#define N_INCLUDE_DIR (-6) +#define N_LABEL (-7) +#define N_LOCALE (-8) +#define N_NULL (-9) +#define N_LOFFSETS (-10) +#define N_FOFFSETS (-11) static option_item optionlist[] = { { OP_NODATA, N_NULL, NULL, "", " terminate options" }, @@ -220,6 +226,8 @@ static option_item optionlist[] = { { OP_NODATA, 'r', NULL, "recursive", "recursively scan sub-directories" }, { OP_STRING, N_EXCLUDE,&exclude_pattern, "exclude=pattern","exclude matching files when recursing" }, { OP_STRING, N_INCLUDE,&include_pattern, "include=pattern","include matching files when recursing" }, + { OP_STRING, N_EXCLUDE_DIR,&exclude_dir_pattern, "exclude_dir=pattern","exclude matching directories when recursing" }, + { OP_STRING, N_INCLUDE_DIR,&include_dir_pattern, "include_dir=pattern","include matching directories when recursing" }, #ifdef JFRIEDL_DEBUG { OP_OP_NUMBER, 'S', &S_arg, "jeffS", "replace matched (sub)string with X" }, #endif @@ -1044,10 +1052,10 @@ while (ptr < endptr) if (printname != NULL) fprintf(stdout, "%s:", printname); if (number) fprintf(stdout, "%d:", linenumber); if (line_offsets) - fprintf(stdout, "%d,%d", matchptr + offsets[0] - ptr, + fprintf(stdout, "%d,%d", (int)(matchptr + offsets[0] - ptr), offsets[1] - offsets[0]); else if (file_offsets) - fprintf(stdout, "%d,%d", filepos + matchptr + offsets[0] - ptr, + fprintf(stdout, "%d,%d", (int)(filepos + matchptr + offsets[0] - ptr), offsets[1] - offsets[0]); else fwrite(matchptr + offsets[0], 1, offsets[1] - offsets[0], stdout); @@ -1359,8 +1367,9 @@ if (strcmp(pathname, "-") == 0) } /* If the file is a directory, skip if skipping or if we are recursing, scan -each file within it, subject to any include or exclude patterns that were set. -The scanning code is localized so it can be made system-specific. */ +each file and directory within it, subject to any include or exclude patterns +that were set. The scanning code is localized so it can be made +system-specific. */ if ((sep = isdirectory(pathname)) != 0) { @@ -1381,17 +1390,30 @@ if ((sep = isdirectory(pathname)) != 0) while ((nextfile = readdirectory(dir)) != NULL) { - int frc, blen; + int frc, nflen; sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile); - blen = strlen(buffer); + nflen = strlen(nextfile); - if (exclude_compiled != NULL && - pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0) - continue; + if (isdirectory(buffer)) + { + if (exclude_dir_compiled != NULL && + pcre_exec(exclude_dir_compiled, NULL, nextfile, nflen, 0, 0, NULL, 0) >= 0) + continue; - if (include_compiled != NULL && - pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0) - continue; + if (include_dir_compiled != NULL && + pcre_exec(include_dir_compiled, NULL, nextfile, nflen, 0, 0, NULL, 0) < 0) + continue; + } + else + { + if (exclude_compiled != NULL && + pcre_exec(exclude_compiled, NULL, nextfile, nflen, 0, 0, NULL, 0) >= 0) + continue; + + if (include_compiled != NULL && + pcre_exec(include_compiled, NULL, nextfile, nflen, 0, 0, NULL, 0) < 0) + continue; + } frc = grep_or_recurse(buffer, dir_recurse, FALSE); if (frc > 1) rc = frc; @@ -2287,6 +2309,30 @@ if (include_pattern != NULL) } } +if (exclude_dir_pattern != NULL) + { + exclude_dir_compiled = pcre_compile(exclude_dir_pattern, 0, &error, &errptr, + pcretables); + if (exclude_dir_compiled == NULL) + { + fprintf(stderr, "pcregrep: Error in 'exclude_dir' regex at offset %d: %s\n", + errptr, error); + goto EXIT2; + } + } + +if (include_dir_pattern != NULL) + { + include_dir_compiled = pcre_compile(include_dir_pattern, 0, &error, &errptr, + pcretables); + if (include_dir_compiled == NULL) + { + fprintf(stderr, "pcregrep: Error in 'include_dir' regex at offset %d: %s\n", + errptr, error); + goto EXIT2; + } + } + /* If there are no further arguments, do the business on stdin and exit. */ if (i >= argc) diff --git a/ext/pcre/pcrelib/pcreposix.c b/ext/pcre/pcrelib/pcreposix.c index 4cb5e12a1..87c695b2a 100644 --- a/ext/pcre/pcrelib/pcreposix.c +++ b/ext/pcre/pcrelib/pcreposix.c @@ -6,7 +6,7 @@ and semantics are as close as possible to those of the Perl 5 language. Written by Philip Hazel - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -124,7 +124,8 @@ static const int eint[] = { REG_BADPAT, /* (?+ or (?- must be followed by a non-zero number */ REG_BADPAT, /* number is too big */ REG_BADPAT, /* subpattern name expected */ - REG_BADPAT /* digit expected after (?+ */ + REG_BADPAT, /* digit expected after (?+ */ + REG_BADPAT /* ] is an invalid data character in JavaScript compatibility mode */ }; /* Table of texts corresponding to POSIX error codes */ @@ -157,7 +158,7 @@ static const char *const pstring[] = { * Translate error code to string * *************************************************/ -PCREPOSIX_EXP_DEFN size_t +PCREPOSIX_EXP_DEFN size_t PCRE_CALL_CONVENTION regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size) { const char *message, *addmessage; @@ -192,7 +193,7 @@ return length + addlength; * Free store held by a regex * *************************************************/ -PCREPOSIX_EXP_DEFN void +PCREPOSIX_EXP_DEFN void PCRE_CALL_CONVENTION regfree(regex_t *preg) { (pcre_free)(preg->re_pcre); @@ -215,7 +216,7 @@ Returns: 0 on success various non-zero codes on failure */ -PCREPOSIX_EXP_DEFN int +PCREPOSIX_EXP_DEFN int PCRE_CALL_CONVENTION regcomp(regex_t *preg, const char *pattern, int cflags) { const char *errorptr; @@ -257,11 +258,11 @@ If REG_NOSUB was specified at compile time, the PCRE_NO_AUTO_CAPTURE flag will be set. When this is the case, the nmatch and pmatch arguments are ignored, and the only result is yes/no/error. */ -PCREPOSIX_EXP_DEFN int +PCREPOSIX_EXP_DEFN int PCRE_CALL_CONVENTION regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) { -int rc; +int rc, so, eo; int options = 0; int *ovector = NULL; int small_ovector[POSIX_MALLOC_THRESHOLD * 3]; @@ -294,7 +295,23 @@ else if (nmatch > 0) } } -rc = pcre_exec((const pcre *)preg->re_pcre, NULL, string, (int)strlen(string), +/* REG_STARTEND is a BSD extension, to allow for non-NUL-terminated strings. +The man page from OS X says "REG_STARTEND affects only the location of the +string, not how it is matched". That is why the "so" value is used to bump the +start location rather than being passed as a PCRE "starting offset". */ + +if ((eflags & REG_STARTEND) != 0) + { + so = pmatch[0].rm_so; + eo = pmatch[0].rm_eo; + } +else + { + so = 0; + eo = strlen(string); + } + +rc = pcre_exec((const pcre *)preg->re_pcre, NULL, string + so, (eo - so), 0, options, ovector, nmatch * 3); if (rc == 0) rc = nmatch; /* All captured slots were filled in */ diff --git a/ext/pcre/pcrelib/pcreposix.h b/ext/pcre/pcrelib/pcreposix.h index 109376d90..4f59d918e 100644 --- a/ext/pcre/pcrelib/pcreposix.h +++ b/ext/pcre/pcrelib/pcreposix.h @@ -9,7 +9,7 @@ Compatible Regular Expression library. It defines the things POSIX says should be there. I hope. - Copyright (c) 1997-2008 University of Cambridge + Copyright (c) 1997-2009 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -59,6 +59,7 @@ extern "C" { #define REG_DOTALL 0x0010 /* NOT defined by POSIX. */ #define REG_NOSUB 0x0020 #define REG_UTF8 0x0040 /* NOT defined by POSIX. */ +#define REG_STARTEND 0x0080 /* BSD feature: pass subject string by so,eo */ /* This is not used by PCRE, but by defining it we make it easier to slot PCRE into existing programs that make POSIX calls. */ diff --git a/ext/pcre/pcrelib/testdata/testinput1 b/ext/pcre/pcrelib/testdata/testinput1 index 91554ffc4..081575bc7 100644 --- a/ext/pcre/pcrelib/testdata/testinput1 +++ b/ext/pcre/pcrelib/testdata/testinput1 @@ -4036,4 +4036,7 @@ ] p +/.*[op][xyz]/ + fooabcfoo + / End of testinput1 / diff --git a/ext/pcre/pcrelib/testdata/testinput2 b/ext/pcre/pcrelib/testdata/testinput2 index 1a13fa8dd..2b64546a8 100644 --- a/ext/pcre/pcrelib/testdata/testinput2 +++ b/ext/pcre/pcrelib/testdata/testinput2 @@ -1988,10 +1988,10 @@ a random value. /Ix a\rb\ /^abc./mgx - abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 \x{2028}abc8 \x{2029}abc9 JUNK + abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 /a/ @@ -2147,7 +2147,7 @@ a random value. /Ix abc\r\n\r\n /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 /^X/m XABC @@ -2589,4 +2589,141 @@ a random value. /Ix /[[:a\dz:]]/ +/^(?a|b\gc)/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/^(?a|b\g'name'c)/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/^(a|b\g<1>c)/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/^(a|b\g'1'c)/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/^(a|b\g'-1'c)/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/(^(a|b\g<-1>c))/ + aaaa + bacxxx + bbaccxxx + bbbacccxx + +/(^(a|b\g<-1'c))/ + +/(^(a|b\g{-1}))/ + bacxxx + +/(?-i:\g)(?i:(?a))/ + XaaX + XAAX + +/(?i:\g)(?-i:(?a))/ + XaaX + ** Failers + XAAX + +/(?-i:\g<+1>)(?i:(a))/ + XaaX + XAAX + +/(?=(?(?#simplesyntax)\$(?[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g)\]|->\g(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g(?\[(?:\g|'(?:\\.|[^'\\])*'|"(?:\g|\\.|[^"\\])*")\])?|\g|\$\{\g\})\}|(?#complexsyntax)\{(?\$(?\g(\g*|\(.*?\))?)(?:->\g)*|\$\g|\$\{\g\})\}))\{/ + +/(?a|b|c)\g*/ + abc + accccbbb + +/^(?+1)(?x|y){0}z/ + xzxx + yzyy + ** Failers + xxz + +/(\3)(\1)(a)/ + cat + +/(\3)(\1)(a)/ + cat + +/TA]/ + The ACTA] comes + +/TA]/ + The ACTA] comes + +/(?2)[]a()b](abc)/ + abcbabc + +/(?2)[^]a()b](abc)/ + abcbabc + +/(?1)[]a()b](abc)/ + abcbabc + ** Failers + abcXabc + +/(?1)[^]a()b](abc)/ + abcXabc + ** Failers + abcbabc + +/(?2)[]a()b](abc)(xyz)/ + xyzbabcxyz + +/(?&N)[]a(?)](?abc)/ + abc)](abc)/ + abc + ** Failers + ab + +/a[]+b/ + ** Failers + ab + +/a[]*+b/ + ** Failers + ab + +/a[^]b/ + aXb + a\nb + ** Failers + ab + +/a[^]+b/ + aXb + a\nX\nXb + ** Failers + ab + +/a(?!)+b/ + +/a(*FAIL)+b/ + +/(abc|pqr|123){0}[xyz]/SI + / End of testinput2 / diff --git a/ext/pcre/pcrelib/testdata/testinput4 b/ext/pcre/pcrelib/testdata/testinput4 index c98c08520..e5f61946e 100644 --- a/ext/pcre/pcrelib/testdata/testinput4 +++ b/ext/pcre/pcrelib/testdata/testinput4 @@ -609,4 +609,18 @@ /[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞĀĂĄĆĈĊČĎÄĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿÅŃŅŇŊŌŎÅŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽÆƂƄƆƇƉƊƋƎÆÆƑƓƔƖƗƘƜÆƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJÇÇǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎÈȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾÉΆΈΉΊΌΎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎÒҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀÓÓƒÓ…Ó‡Ó‰Ó‹ÓÓӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ÕŠÕ‹ÕŒÕÕŽÕÕՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅḀḂḄḆḈḊḌḎá¸á¸’ḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎá¹á¹’ṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎáºáº’ẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎá»á»’ỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌá¼á¼Žá¼á¼˜á¼™á¼šá¼›á¼œá¼á¼¨á¼©á¼ªá¼«á¼¬á¼­á¼®á¼¯á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½ˆá½‰á½Šá½‹á½Œá½á½™á½›á½á½Ÿá½¨á½©á½ªá½«á½¬á½­á½®á½¯á¾¸á¾¹á¾ºá¾»á¿ˆá¿‰á¿Šá¿‹á¿˜á¿™á¿šá¿›á¿¨á¿©á¿ªá¿«á¿¬á¿¸á¿¹á¿ºá¿»abcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÄăąćĉċÄÄđēĕėęěÄğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋÅÅőœŕŗřśÅşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƃƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎÇǒǔǖǘǚǜÇǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿÈȃȅȇȉȋÈÈȑȓȕȗșțÈȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀÉɑɒɓɔɕɖɗɘəɚɛɜÉɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯÎάέήίΰαβγδεζηθικλμνξοπÏςστυφχψωϊϋόÏÏŽÏϑϕϖϗϙϛÏϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓєѕіїјљњћќÑўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿÒÒ‹ÒÒÒ‘Ò“Ò•Ò—Ò™Ò›ÒҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛÓÓŸÓ¡Ó£Ó¥Ó§Ó©Ó«Ó­Ó¯Ó±Ó³ÓµÓ·Ó¹ÔÔƒÔ…Ô‡Ô‰Ô‹ÔÔÕ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€Öւփքօֆևᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ á´¡á´¢á´£á´¤á´¥á´¦á´§á´¨á´©á´ªá´«áµ¢áµ£áµ¤áµ¥áµ¦áµ§áµ¨áµ©áµªáµ«áµ¬áµ­áµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚá¸á¸ƒá¸…ḇḉḋá¸á¸á¸‘ḓḕḗḙḛá¸á¸Ÿá¸¡á¸£á¸¥á¸§á¸©á¸«á¸­á¸¯á¸±á¸³á¸µá¸·á¸¹á¸»á¸½á¸¿á¹á¹ƒá¹…ṇṉṋá¹á¹á¹‘ṓṕṗṙṛá¹á¹Ÿá¹¡á¹£á¹¥á¹§á¹©á¹«á¹­á¹¯á¹±á¹³á¹µá¹·á¹¹á¹»á¹½á¹¿áºáºƒáº…ẇẉẋáºáºáº‘ẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếá»á»ƒá»…ệỉịá»á»á»‘ồổỗộớá»á»Ÿá»¡á»£á»¥á»§á»©á»«á»­á»¯á»±á»³á»µá»·á»¹á¼€á¼á¼‚ἃἄἅἆἇá¼á¼‘ἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀá½á½‚ὃὄὅá½á½‘ὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀá¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷιῂῃῄῆῇá¿á¿‘ῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷâ²â²ƒâ²…ⲇⲉⲋâ²â²â²‘ⲓⲕⲗⲙⲛâ²â²Ÿâ²¡â²£â²¥â²§â²©â²«â²­â²¯â²±â²³â²µâ²·â²¹â²»â²½â²¿â³â³ƒâ³…ⳇⳉⳋâ³â³â³‘ⳓⳕⳗⳙⳛâ³â³Ÿâ³¡â³£â³¤â´€â´â´‚ⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌâ´â´Žâ´â´â´‘ⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜâ´â´žâ´Ÿâ´ â´¡â´¢â´£â´¤â´¥ï¬€ï¬ï¬‚ffifflſtstﬓﬔﬕﬖﬗ\d-_^]/8 +/^[^d]*?$/ + abc + +/^[^d]*?$/8 + abc + +/^[^d]*?$/i + abc + +/^[^d]*?$/8i + abc + +/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/8 + / End of testinput4 / diff --git a/ext/pcre/pcrelib/testdata/testinput5 b/ext/pcre/pcrelib/testdata/testinput5 index 75a4857b4..7d64b436f 100644 --- a/ext/pcre/pcrelib/testdata/testinput5 +++ b/ext/pcre/pcrelib/testdata/testinput5 @@ -461,4 +461,23 @@ can't tell the difference.) --/ /[[:a\x{100}b:]]/8 +/a[^]b/8 + a\x{1234}b + a\nb + ** Failers + ab + +/a[^]+b/8 + aXb + a\nX\nX\x{1234}b + ** Failers + ab + +/(\x{de})\1/ + \x{de}\x{de} + \x{123} + +/X/8f + A\x{1ec5}ABCXYZ + / End of testinput5 / diff --git a/ext/pcre/pcrelib/testdata/testinput6 b/ext/pcre/pcrelib/testdata/testinput6 index 0204a7aca..a8640f992 100644 --- a/ext/pcre/pcrelib/testdata/testinput6 +++ b/ext/pcre/pcrelib/testdata/testinput6 @@ -763,7 +763,7 @@ of case for anything other than the ASCII letters. / \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900} /The next two are special cases where the lengths of the different cases of the -same character differ. The first went wrong with heap fram storage; the 2nd +same character differ. The first went wrong with heap frame storage; the 2nd was broken in all cases./ /^\x{023a}+?(\x{0130}+)/8i @@ -907,4 +907,40 @@ was broken in all cases./ /\p{Cc}{2}+/8BZ +/\x{c0}+\x{116}+/8i + \x{c0}\x{e0}\x{116}\x{117} + +/[\x{c0}\x{116}]+/8i + \x{c0}\x{e0}\x{116}\x{117} + +/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8 + \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}==== + +/\x{a77d}\x{1d79}/8i + \x{a77d}\x{1d79} + \x{1d79}\x{a77d} + +/\x{a77d}\x{1d79}/8 + \x{a77d}\x{1d79} + ** Failers + \x{1d79}\x{a77d} + +/(A)\1/8i + AA + Aa + aa + aA + +/(\x{de})\1/8i + \x{de}\x{de} + \x{de}\x{fe} + \x{fe}\x{fe} + \x{fe}\x{de} + +/(\x{10a})\1/8i + \x{10a}\x{10a} + \x{10a}\x{10b} + \x{10b}\x{10b} + \x{10b}\x{10a} + / End of testinput6 / diff --git a/ext/pcre/pcrelib/testdata/testinput7 b/ext/pcre/pcrelib/testdata/testinput7 index 221bc938b..5ec48270b 100644 --- a/ext/pcre/pcrelib/testdata/testinput7 +++ b/ext/pcre/pcrelib/testdata/testinput7 @@ -4151,10 +4151,10 @@ a\rb\ /^abc./mgx - abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 \x{2028}abc8 \x{2029}abc9 JUNK + abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 /^a\Rb/ a\nb @@ -4364,5 +4364,32 @@ a\r\r\r\r\rb a\x85\85b\ a\x0b\0bb\ + +/a(?!)|\wbc/ + abc + +/a[]b/ + ** Failers + ab + +/a[]+b/ + ** Failers + ab + +/a[]*+b/ + ** Failers + ab + +/a[^]b/ + aXb + a\nb + ** Failers + ab + +/a[^]+b/ + aXb + a\nX\nXb + ** Failers + ab / End of testinput7 / diff --git a/ext/pcre/pcrelib/testdata/testinput8 b/ext/pcre/pcrelib/testdata/testinput8 index 5bcfab5c0..11884adf6 100644 --- a/ext/pcre/pcrelib/testdata/testinput8 +++ b/ext/pcre/pcrelib/testdata/testinput8 @@ -664,4 +664,7 @@ a\x{85}b\ a\x0bb\ +/X/8f + A\x{1ec5}ABCXYZ + / End of testinput 8 / diff --git a/ext/pcre/pcrelib/testdata/testinput9 b/ext/pcre/pcrelib/testdata/testinput9 index 8a606318b..ab044558d 100644 --- a/ext/pcre/pcrelib/testdata/testinput9 +++ b/ext/pcre/pcrelib/testdata/testinput9 @@ -819,10 +819,28 @@ /^\x{023a}+([^X])/8i \x{023a}\x{2c65}X +/\x{c0}+\x{116}+/8i + \x{c0}\x{e0}\x{116}\x{117} + +/[\x{c0}\x{116}]+/8i + \x{c0}\x{e0}\x{116}\x{117} + /Check property support in non-UTF-8 mode/ /\p{L}{4}/ 123abcdefg 123abc\xc4\xc5zz +/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8 + \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}==== + +/\x{a77d}\x{1d79}/8i + \x{a77d}\x{1d79} + \x{1d79}\x{a77d} + +/\x{a77d}\x{1d79}/8 + \x{a77d}\x{1d79} + ** Failers + \x{1d79}\x{a77d} + / End / diff --git a/ext/pcre/pcrelib/testdata/testoutput1 b/ext/pcre/pcrelib/testdata/testoutput1 index 9b8b268ed..208df49bc 100644 --- a/ext/pcre/pcrelib/testdata/testoutput1 +++ b/ext/pcre/pcrelib/testdata/testoutput1 @@ -6605,4 +6605,8 @@ No match p 0: p +/.*[op][xyz]/ + fooabcfoo +No match + / End of testinput1 / diff --git a/ext/pcre/pcrelib/testdata/testoutput10 b/ext/pcre/pcrelib/testdata/testoutput10 index dbd59241a..4eaaa3918 100644 --- a/ext/pcre/pcrelib/testdata/testoutput10 +++ b/ext/pcre/pcrelib/testdata/testoutput10 @@ -21,7 +21,7 @@ Memory allocation (code space): 25 ------------------------------------------------------------------ 0 21 Bra 3 9 CBra 1 - 8 Any* + 8 AllAny* 10 X 12 6 Alt 15 ^ @@ -37,7 +37,7 @@ Memory allocation (code space): 29 0 25 Bra 3 9 Bra 6 04 Opt - 8 Any* + 8 AllAny* 10 X 12 8 Alt 15 04 Opt diff --git a/ext/pcre/pcrelib/testdata/testoutput2 b/ext/pcre/pcrelib/testdata/testoutput2 index dba227f50..2ac018b3b 100644 --- a/ext/pcre/pcrelib/testdata/testoutput2 +++ b/ext/pcre/pcrelib/testdata/testoutput2 @@ -1126,7 +1126,7 @@ Need char = 'X' /.*X/IDZs ------------------------------------------------------------------ Bra - Any* + AllAny* X Ket End @@ -1160,7 +1160,7 @@ No need char ------------------------------------------------------------------ Bra CBra 1 - Any* + AllAny* X Alt ^ @@ -1179,7 +1179,7 @@ No need char ------------------------------------------------------------------ Bra CBra 1 - Any* + AllAny* X Alt ^ @@ -1199,7 +1199,7 @@ No need char Bra Bra 04 Opt - Any* + AllAny* X Alt 04 Opt @@ -1212,8 +1212,8 @@ No need char ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported -No options -First char at start or follows newline +Options: anchored +No first char No need char /\Biss\B/I+ @@ -7851,7 +7851,7 @@ No match No match /^abc./mgx - abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 \x{2028}abc8 \x{2029}abc9 JUNK + abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 0: abc1 0: abc2 0: abc3 @@ -7861,7 +7861,7 @@ No match 0: abc7 /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9 0: abc1 0: abc2 0: abc3 @@ -8074,13 +8074,13 @@ No match Failed: reference to non-existent subpattern at offset 7 /^(a)\g/ -Failed: \g is not followed by a braced name or an optionally braced non-zero number at offset 5 +Failed: a numbered reference must not be zero at offset 5 /^(a)\g{0}/ -Failed: \g is not followed by a braced name or an optionally braced non-zero number at offset 7 +Failed: a numbered reference must not be zero at offset 8 /^(a)\g{3/ -Failed: \g is not followed by a braced name or an optionally braced non-zero number at offset 8 +Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8 /^(a)\g{4a}/ Failed: reference to non-existent subpattern at offset 9 @@ -8163,7 +8163,7 @@ No match 0+ /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 0: abc1 0: abc4 0: abc5 @@ -8217,13 +8217,13 @@ No match No match /x(?-0)y/ -Failed: (?+ or (?- or (?(+ or (?(- must be followed by a non-zero number at offset 5 +Failed: a numbered reference must not be zero at offset 5 /x(?-1)y/ Failed: reference to non-existent subpattern at offset 5 /x(?+0)y/ -Failed: (?+ or (?- or (?(+ or (?(- must be followed by a non-zero number at offset 5 +Failed: a numbered reference must not be zero at offset 5 /x(?+1)y/ Failed: reference to non-existent subpattern at offset 5 @@ -9385,4 +9385,257 @@ Failed: unknown POSIX class name at offset 6 /[[:a\dz:]]/ Failed: unknown POSIX class name at offset 3 +/^(?a|b\gc)/ + aaaa + 0: a + 1: a + bacxxx + 0: bac + 1: bac + bbaccxxx + 0: bbacc + 1: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + +/^(?a|b\g'name'c)/ + aaaa + 0: a + 1: a + bacxxx + 0: bac + 1: bac + bbaccxxx + 0: bbacc + 1: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + +/^(a|b\g<1>c)/ + aaaa + 0: a + 1: a + bacxxx + 0: bac + 1: bac + bbaccxxx + 0: bbacc + 1: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + +/^(a|b\g'1'c)/ + aaaa + 0: a + 1: a + bacxxx + 0: bac + 1: bac + bbaccxxx + 0: bbacc + 1: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + +/^(a|b\g'-1'c)/ + aaaa + 0: a + 1: a + bacxxx + 0: bac + 1: bac + bbaccxxx + 0: bbacc + 1: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + +/(^(a|b\g<-1>c))/ + aaaa + 0: a + 1: a + 2: a + bacxxx + 0: bac + 1: bac + 2: bac + bbaccxxx + 0: bbacc + 1: bbacc + 2: bbacc + bbbacccxx + 0: bbbaccc + 1: bbbaccc + 2: bbbaccc + +/(^(a|b\g<-1'c))/ +Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15 + +/(^(a|b\g{-1}))/ + bacxxx +No match + +/(?-i:\g)(?i:(?a))/ + XaaX + 0: aa + 1: a + XAAX + 0: AA + 1: A + +/(?i:\g)(?-i:(?a))/ + XaaX + 0: aa + 1: a + ** Failers +No match + XAAX +No match + +/(?-i:\g<+1>)(?i:(a))/ + XaaX + 0: aa + 1: a + XAAX + 0: AA + 1: A + +/(?=(?(?#simplesyntax)\$(?[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g)\]|->\g(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g(?\[(?:\g|'(?:\\.|[^'\\])*'|"(?:\g|\\.|[^"\\])*")\])?|\g|\$\{\g\})\}|(?#complexsyntax)\{(?\$(?\g(\g*|\(.*?\))?)(?:->\g)*|\$\g|\$\{\g\})\}))\{/ + +/(?a|b|c)\g*/ + abc + 0: abc + 1: a + accccbbb + 0: accccbbb + 1: a + +/^(?+1)(?x|y){0}z/ + xzxx + 0: xz + 1: + yzyy + 0: yz + 1: + ** Failers +No match + xxz +No match + +/(\3)(\1)(a)/ + cat +No match + +/(\3)(\1)(a)/ + cat + 0: a + 1: + 2: + 3: a + +/TA]/ + The ACTA] comes + 0: TA] + +/TA]/ +Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2 + +/(?2)[]a()b](abc)/ +Failed: reference to non-existent subpattern at offset 3 + +/(?2)[^]a()b](abc)/ +Failed: reference to non-existent subpattern at offset 3 + +/(?1)[]a()b](abc)/ + abcbabc + 0: abcbabc + 1: abc + ** Failers +No match + abcXabc +No match + +/(?1)[^]a()b](abc)/ + abcXabc + 0: abcXabc + 1: abc + ** Failers +No match + abcbabc +No match + +/(?2)[]a()b](abc)(xyz)/ + xyzbabcxyz + 0: xyzbabcxyz + 1: abc + 2: xyz + +/(?&N)[]a(?)](?abc)/ +Failed: reference to non-existent subpattern at offset 4 + +/(?&N)[]a(?)](abc)/ +Failed: reference to non-existent subpattern at offset 4 + +/a[]b/ +Failed: missing terminating ] for character class at offset 4 + +/a[^]b/ +Failed: missing terminating ] for character class at offset 5 + +/a[]b/ + ** Failers +No match + ab +No match + +/a[]+b/ + ** Failers +No match + ab +No match + +/a[]*+b/ + ** Failers +No match + ab +No match + +/a[^]b/ + aXb + 0: aXb + a\nb + 0: a\x0ab + ** Failers +No match + ab +No match + +/a[^]+b/ + aXb + 0: aXb + a\nX\nXb + 0: a\x0aX\x0aXb + ** Failers +No match + ab +No match + +/a(?!)+b/ +Failed: nothing to repeat at offset 5 + +/a(*FAIL)+b/ +Failed: nothing to repeat at offset 8 + +/(abc|pqr|123){0}[xyz]/SI +Capturing subpattern count = 1 +No options +No first char +No need char +Starting byte set: x y z + / End of testinput2 / diff --git a/ext/pcre/pcrelib/testdata/testoutput4 b/ext/pcre/pcrelib/testdata/testoutput4 index d87ea4bcc..e67a95895 100644 --- a/ext/pcre/pcrelib/testdata/testoutput4 +++ b/ext/pcre/pcrelib/testdata/testoutput4 @@ -1071,4 +1071,22 @@ No match /[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞĀĂĄĆĈĊČĎÄĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿÅŃŅŇŊŌŎÅŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽÆƂƄƆƇƉƊƋƎÆÆƑƓƔƖƗƘƜÆƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJÇÇǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎÈȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾÉΆΈΉΊΌΎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎÒҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀÓÓƒÓ…Ó‡Ó‰Ó‹ÓÓӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ÕŠÕ‹ÕŒÕÕŽÕÕՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅḀḂḄḆḈḊḌḎá¸á¸’ḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎá¹á¹’ṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎáºáº’ẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎá»á»’ỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌá¼á¼Žá¼á¼˜á¼™á¼šá¼›á¼œá¼á¼¨á¼©á¼ªá¼«á¼¬á¼­á¼®á¼¯á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½ˆá½‰á½Šá½‹á½Œá½á½™á½›á½á½Ÿá½¨á½©á½ªá½«á½¬á½­á½®á½¯á¾¸á¾¹á¾ºá¾»á¿ˆá¿‰á¿Šá¿‹á¿˜á¿™á¿šá¿›á¿¨á¿©á¿ªá¿«á¿¬á¿¸á¿¹á¿ºá¿»abcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÄăąćĉċÄÄđēĕėęěÄğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋÅÅőœŕŗřśÅşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƃƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎÇǒǔǖǘǚǜÇǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿÈȃȅȇȉȋÈÈȑȓȕȗșțÈȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀÉɑɒɓɔɕɖɗɘəɚɛɜÉɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯÎάέήίΰαβγδεζηθικλμνξοπÏςστυφχψωϊϋόÏÏŽÏϑϕϖϗϙϛÏϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓєѕіїјљњћќÑўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿÒÒ‹ÒÒÒ‘Ò“Ò•Ò—Ò™Ò›ÒҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛÓÓŸÓ¡Ó£Ó¥Ó§Ó©Ó«Ó­Ó¯Ó±Ó³ÓµÓ·Ó¹ÔÔƒÔ…Ô‡Ô‰Ô‹ÔÔÕ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€Öւփքօֆևᴀá´á´‚ᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌá´á´Žá´á´á´‘ᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜá´á´žá´Ÿá´ á´¡á´¢á´£á´¤á´¥á´¦á´§á´¨á´©á´ªá´«áµ¢áµ£áµ¤áµ¥áµ¦áµ§áµ¨áµ©áµªáµ«áµ¬áµ­áµ®áµ¯áµ°áµ±áµ²áµ³áµ´áµµáµ¶áµ·áµ¹áµºáµ»áµ¼áµ½áµ¾áµ¿á¶€á¶á¶‚ᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌá¶á¶Žá¶á¶á¶‘ᶒᶓᶔᶕᶖᶗᶘᶙᶚá¸á¸ƒá¸…ḇḉḋá¸á¸á¸‘ḓḕḗḙḛá¸á¸Ÿá¸¡á¸£á¸¥á¸§á¸©á¸«á¸­á¸¯á¸±á¸³á¸µá¸·á¸¹á¸»á¸½á¸¿á¹á¹ƒá¹…ṇṉṋá¹á¹á¹‘ṓṕṗṙṛá¹á¹Ÿá¹¡á¹£á¹¥á¹§á¹©á¹«á¹­á¹¯á¹±á¹³á¹µá¹·á¹¹á¹»á¹½á¹¿áºáºƒáº…ẇẉẋáºáºáº‘ẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếá»á»ƒá»…ệỉịá»á»á»‘ồổỗộớá»á»Ÿá»¡á»£á»¥á»§á»©á»«á»­á»¯á»±á»³á»µá»·á»¹á¼€á¼á¼‚ἃἄἅἆἇá¼á¼‘ἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀá½á½‚ὃὄὅá½á½‘ὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀá¾á¾‚ᾃᾄᾅᾆᾇá¾á¾‘ᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷιῂῃῄῆῇá¿á¿‘ῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷâ²â²ƒâ²…ⲇⲉⲋâ²â²â²‘ⲓⲕⲗⲙⲛâ²â²Ÿâ²¡â²£â²¥â²§â²©â²«â²­â²¯â²±â²³â²µâ²·â²¹â²»â²½â²¿â³â³ƒâ³…ⳇⳉⳋâ³â³â³‘ⳓⳕⳗⳙⳛâ³â³Ÿâ³¡â³£â³¤â´€â´â´‚ⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌâ´â´Žâ´â´â´‘ⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜâ´â´žâ´Ÿâ´ â´¡â´¢â´£â´¤â´¥ï¬€ï¬ï¬‚ffifflſtstﬓﬔﬕﬖﬗ\d-_^]/8 +/^[^d]*?$/ + abc + 0: abc + +/^[^d]*?$/8 + abc + 0: abc + +/^[^d]*?$/i + abc + 0: abc + +/^[^d]*?$/8i + abc + 0: abc + +/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/8 + / End of testinput4 / diff --git a/ext/pcre/pcrelib/testdata/testoutput5 b/ext/pcre/pcrelib/testdata/testoutput5 index abbe1c87d..956723370 100644 --- a/ext/pcre/pcrelib/testdata/testoutput5 +++ b/ext/pcre/pcrelib/testdata/testoutput5 @@ -1608,4 +1608,37 @@ No match /[[:a\x{100}b:]]/8 Failed: unknown POSIX class name at offset 3 +/a[^]b/8 + a\x{1234}b + 0: a\x{1234}b + a\nb + 0: a\x{0a}b + ** Failers +No match + ab +No match + +/a[^]+b/8 + aXb + 0: aXb + a\nX\nX\x{1234}b + 0: a\x{0a}X\x{0a}X\x{1234}b + ** Failers +No match + ab +No match + +/(\x{de})\1/ + \x{de}\x{de} + 0: \xde\xde + 1: \xde + \x{123} +** Character \x{123} is greater than 255 and UTF-8 mode is not enabled. +** Truncation will probably give the wrong result. +No match + +/X/8f + A\x{1ec5}ABCXYZ + 0: X + / End of testinput5 / diff --git a/ext/pcre/pcrelib/testdata/testoutput6 b/ext/pcre/pcrelib/testdata/testoutput6 index db825b08c..caba466bc 100644 --- a/ext/pcre/pcrelib/testdata/testoutput6 +++ b/ext/pcre/pcrelib/testdata/testoutput6 @@ -1431,7 +1431,7 @@ of case for anything other than the ASCII letters. / 0: \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900} /The next two are special cases where the lengths of the different cases of the -same character differ. The first went wrong with heap fram storage; the 2nd +same character differ. The first went wrong with heap frame storage; the 2nd was broken in all cases./ /^\x{023a}+?(\x{0130}+)/8i @@ -1679,4 +1679,72 @@ No match End ------------------------------------------------------------------ +/\x{c0}+\x{116}+/8i + \x{c0}\x{e0}\x{116}\x{117} + 0: \x{c0}\x{e0}\x{116}\x{117} + +/[\x{c0}\x{116}]+/8i + \x{c0}\x{e0}\x{116}\x{117} + 0: \x{c0}\x{e0}\x{116}\x{117} + +/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8 + \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}==== + 0: \x{102a4}\x{aa52}\x{a91d}\x{1c46}\x{10283}\x{1092e}\x{1c6b}\x{a93b}\x{a8bf}\x{1ba0}\x{a50a} + +/\x{a77d}\x{1d79}/8i + \x{a77d}\x{1d79} + 0: \x{a77d}\x{1d79} + \x{1d79}\x{a77d} + 0: \x{1d79}\x{a77d} + +/\x{a77d}\x{1d79}/8 + \x{a77d}\x{1d79} + 0: \x{a77d}\x{1d79} + ** Failers +No match + \x{1d79}\x{a77d} +No match + +/(A)\1/8i + AA + 0: AA + 1: A + Aa + 0: Aa + 1: A + aa + 0: aa + 1: a + aA + 0: aA + 1: a + +/(\x{de})\1/8i + \x{de}\x{de} + 0: \x{de}\x{de} + 1: \x{de} + \x{de}\x{fe} + 0: \x{de}\x{fe} + 1: \x{de} + \x{fe}\x{fe} + 0: \x{fe}\x{fe} + 1: \x{fe} + \x{fe}\x{de} + 0: \x{fe}\x{de} + 1: \x{fe} + +/(\x{10a})\1/8i + \x{10a}\x{10a} + 0: \x{10a}\x{10a} + 1: \x{10a} + \x{10a}\x{10b} + 0: \x{10a}\x{10b} + 1: \x{10a} + \x{10b}\x{10b} + 0: \x{10b}\x{10b} + 1: \x{10b} + \x{10b}\x{10a} + 0: \x{10b}\x{10a} + 1: \x{10b} + / End of testinput6 / diff --git a/ext/pcre/pcrelib/testdata/testoutput7 b/ext/pcre/pcrelib/testdata/testoutput7 index d8e3833f3..aef4b6ceb 100644 --- a/ext/pcre/pcrelib/testdata/testoutput7 +++ b/ext/pcre/pcrelib/testdata/testoutput7 @@ -6805,7 +6805,7 @@ No match No match /^abc./mgx - abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 \x{2028}abc8 \x{2029}abc9 JUNK + abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK 0: abc1 0: abc2 0: abc3 @@ -6815,7 +6815,7 @@ No match 0: abc7 /abc.$/mgx - abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9 + abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 0: abc1 0: abc2 0: abc3 @@ -7211,5 +7211,47 @@ No match No match a\x0b\0bb\ No match + +/a(?!)|\wbc/ + abc + 0: abc + +/a[]b/ + ** Failers +No match + ab +No match + +/a[]+b/ + ** Failers +No match + ab +No match + +/a[]*+b/ + ** Failers +No match + ab +No match + +/a[^]b/ + aXb + 0: aXb + a\nb + 0: a\x0ab + ** Failers +No match + ab +No match + +/a[^]+b/ + aXb + 0: aXb + a\nX\nXb + 0: a\x0aX\x0aXb + ** Failers +No match + ab +No match / End of testinput7 / diff --git a/ext/pcre/pcrelib/testdata/testoutput8 b/ext/pcre/pcrelib/testdata/testoutput8 index 631e5b82f..af10c4ae7 100644 --- a/ext/pcre/pcrelib/testdata/testoutput8 +++ b/ext/pcre/pcrelib/testdata/testoutput8 @@ -1284,4 +1284,8 @@ No match a\x0bb\ No match +/X/8f + A\x{1ec5}ABCXYZ + 0: X + / End of testinput 8 / diff --git a/ext/pcre/pcrelib/testdata/testoutput9 b/ext/pcre/pcrelib/testdata/testoutput9 index acaeb398d..04e3873bb 100644 --- a/ext/pcre/pcrelib/testdata/testoutput9 +++ b/ext/pcre/pcrelib/testdata/testoutput9 @@ -1632,6 +1632,18 @@ No match \x{023a}\x{2c65}X 0: \x{23a}\x{2c65} +/\x{c0}+\x{116}+/8i + \x{c0}\x{e0}\x{116}\x{117} + 0: \x{c0}\x{e0}\x{116}\x{117} + 1: \x{c0}\x{e0}\x{116} + +/[\x{c0}\x{116}]+/8i + \x{c0}\x{e0}\x{116}\x{117} + 0: \x{c0}\x{e0}\x{116}\x{117} + 1: \x{c0}\x{e0}\x{116} + 2: \x{c0}\x{e0} + 3: \x{c0} + /Check property support in non-UTF-8 mode/ /\p{L}{4}/ @@ -1640,4 +1652,22 @@ No match 123abc\xc4\xc5zz 0: abc\xc4 +/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8 + \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}==== + 0: \x{102a4}\x{aa52}\x{a91d}\x{1c46}\x{10283}\x{1092e}\x{1c6b}\x{a93b}\x{a8bf}\x{1ba0}\x{a50a} + +/\x{a77d}\x{1d79}/8i + \x{a77d}\x{1d79} + 0: \x{a77d}\x{1d79} + \x{1d79}\x{a77d} + 0: \x{1d79}\x{a77d} + +/\x{a77d}\x{1d79}/8 + \x{a77d}\x{1d79} + 0: \x{a77d}\x{1d79} + ** Failers +No match + \x{1d79}\x{a77d} +No match + / End / diff --git a/ext/pcre/pcrelib/ucp.h b/ext/pcre/pcrelib/ucp.h index 3a4179b76..1968e4765 100644 --- a/ext/pcre/pcrelib/ucp.h +++ b/ext/pcre/pcrelib/ucp.h @@ -121,11 +121,24 @@ enum { ucp_Tifinagh, ucp_Ugaritic, ucp_Yi, - ucp_Balinese, /* New for Unicode 5.0.0 */ - ucp_Cuneiform, /* New for Unicode 5.0.0 */ - ucp_Nko, /* New for Unicode 5.0.0 */ - ucp_Phags_Pa, /* New for Unicode 5.0.0 */ - ucp_Phoenician /* New for Unicode 5.0.0 */ + /* New for Unicode 5.0: */ + ucp_Balinese, + ucp_Cuneiform, + ucp_Nko, + ucp_Phags_Pa, + ucp_Phoenician, + /* New for Unicode 5.1: */ + ucp_Carian, + ucp_Cham, + ucp_Kayah_Li, + ucp_Lepcha, + ucp_Lycian, + ucp_Lydian, + ucp_Ol_Chiki, + ucp_Rejang, + ucp_Saurashtra, + ucp_Sundanese, + ucp_Vai }; #endif diff --git a/ext/pcre/pcrelib/ucpinternal.h b/ext/pcre/pcrelib/ucpinternal.h deleted file mode 100644 index 811a373c8..000000000 --- a/ext/pcre/pcrelib/ucpinternal.h +++ /dev/null @@ -1,92 +0,0 @@ -/************************************************* -* Unicode Property Table handler * -*************************************************/ - -#ifndef _UCPINTERNAL_H -#define _UCPINTERNAL_H - -/* Internal header file defining the layout of the bits in each pair of 32-bit -words that form a data item in the table. */ - -typedef struct cnode { - pcre_uint32 f0; - pcre_uint32 f1; -} cnode; - -/* Things for the f0 field */ - -#define f0_scriptmask 0xff000000 /* Mask for script field */ -#define f0_scriptshift 24 /* Shift for script value */ -#define f0_rangeflag 0x00f00000 /* Flag for a range item */ -#define f0_charmask 0x001fffff /* Mask for code point value */ - -/* Things for the f1 field */ - -#define f1_typemask 0xfc000000 /* Mask for char type field */ -#define f1_typeshift 26 /* Shift for the type field */ -#define f1_rangemask 0x0000ffff /* Mask for a range offset */ -#define f1_casemask 0x0000ffff /* Mask for a case offset */ -#define f1_caseneg 0xffff8000 /* Bits for negation */ - -/* The data consists of a vector of structures of type cnode. The two unsigned -32-bit integers are used as follows: - -(f0) (1) The most significant byte holds the script number. The numbers are - defined by the enum in ucp.h. - - (2) The 0x00800000 bit is set if this entry defines a range of characters. - It is not set if this entry defines a single character - - (3) The 0x00600000 bits are spare. - - (4) The 0x001fffff bits contain the code point. No Unicode code point will - ever be greater than 0x0010ffff, so this should be OK for ever. - -(f1) (1) The 0xfc000000 bits contain the character type number. The numbers are - defined by an enum in ucp.h. - - (2) The 0x03ff0000 bits are spare. - - (3) The 0x0000ffff bits contain EITHER the unsigned offset to the top of - range if this entry defines a range, OR the *signed* offset to the - character's "other case" partner if this entry defines a single - character. There is no partner if the value is zero. - -------------------------------------------------------------------------------- -| script (8) |.|.|.| codepoint (21) || type (6) |.|.| spare (8) | offset (16) | -------------------------------------------------------------------------------- - | | | | | - | | |-> spare | |-> spare - | | | - | |-> spare |-> spare - | - |-> range flag - -The upper/lower casing information is set only for characters that come in -pairs. The non-one-to-one mappings in the Unicode data are ignored. - -When searching the data, proceed as follows: - -(1) Set up for a binary chop search. - -(2) If the top is not greater than the bottom, the character is not in the - table. Its type must therefore be "Cn" ("Undefined"). - -(3) Find the middle vector element. - -(4) Extract the code point and compare. If equal, we are done. - -(5) If the test character is smaller, set the top to the current point, and - goto (2). - -(6) If the current entry defines a range, compute the last character by adding - the offset, and see if the test character is within the range. If it is, - we are done. - -(7) Otherwise, set the bottom to one element past the current point and goto - (2). -*/ - -#endif /* _UCPINTERNAL_H */ - -/* End of ucpinternal.h */ diff --git a/ext/pcre/pcrelib/ucptable.h b/ext/pcre/pcrelib/ucptable.h deleted file mode 100644 index a274d443e..000000000 --- a/ext/pcre/pcrelib/ucptable.h +++ /dev/null @@ -1,3088 +0,0 @@ -/* This source module is automatically generated from the Unicode -property table. See ucpinternal.h for a description of the layout. -This version was made from the Unicode 5.0.0 tables. */ - -static const cnode ucp_table[] = { - { 0x09800000, 0x0000001f }, - { 0x09000020, 0x74000000 }, - { 0x09800021, 0x54000002 }, - { 0x09000024, 0x5c000000 }, - { 0x09800025, 0x54000002 }, - { 0x09000028, 0x58000000 }, - { 0x09000029, 0x48000000 }, - { 0x0900002a, 0x54000000 }, - { 0x0900002b, 0x64000000 }, - { 0x0900002c, 0x54000000 }, - { 0x0900002d, 0x44000000 }, - { 0x0980002e, 0x54000001 }, - { 0x09800030, 0x34000009 }, - { 0x0980003a, 0x54000001 }, - { 0x0980003c, 0x64000002 }, - { 0x0980003f, 0x54000001 }, - { 0x21000041, 0x24000020 }, - { 0x21000042, 0x24000020 }, - { 0x21000043, 0x24000020 }, - { 0x21000044, 0x24000020 }, - { 0x21000045, 0x24000020 }, - { 0x21000046, 0x24000020 }, - { 0x21000047, 0x24000020 }, - { 0x21000048, 0x24000020 }, - { 0x21000049, 0x24000020 }, - { 0x2100004a, 0x24000020 }, - { 0x2100004b, 0x24000020 }, - { 0x2100004c, 0x24000020 }, - { 0x2100004d, 0x24000020 }, - { 0x2100004e, 0x24000020 }, - { 0x2100004f, 0x24000020 }, - { 0x21000050, 0x24000020 }, - { 0x21000051, 0x24000020 }, - { 0x21000052, 0x24000020 }, - { 0x21000053, 0x24000020 }, - { 0x21000054, 0x24000020 }, - { 0x21000055, 0x24000020 }, - { 0x21000056, 0x24000020 }, - { 0x21000057, 0x24000020 }, - { 0x21000058, 0x24000020 }, - { 0x21000059, 0x24000020 }, - { 0x2100005a, 0x24000020 }, - { 0x0900005b, 0x58000000 }, - { 0x0900005c, 0x54000000 }, - { 0x0900005d, 0x48000000 }, - { 0x0900005e, 0x60000000 }, - { 0x0900005f, 0x40000000 }, - { 0x09000060, 0x60000000 }, - { 0x21000061, 0x1400ffe0 }, - { 0x21000062, 0x1400ffe0 }, - { 0x21000063, 0x1400ffe0 }, - { 0x21000064, 0x1400ffe0 }, - { 0x21000065, 0x1400ffe0 }, - { 0x21000066, 0x1400ffe0 }, - { 0x21000067, 0x1400ffe0 }, - { 0x21000068, 0x1400ffe0 }, - { 0x21000069, 0x1400ffe0 }, - { 0x2100006a, 0x1400ffe0 }, - { 0x2100006b, 0x1400ffe0 }, - { 0x2100006c, 0x1400ffe0 }, - { 0x2100006d, 0x1400ffe0 }, - { 0x2100006e, 0x1400ffe0 }, - { 0x2100006f, 0x1400ffe0 }, - { 0x21000070, 0x1400ffe0 }, - { 0x21000071, 0x1400ffe0 }, - { 0x21000072, 0x1400ffe0 }, - { 0x21000073, 0x1400ffe0 }, - { 0x21000074, 0x1400ffe0 }, - { 0x21000075, 0x1400ffe0 }, - { 0x21000076, 0x1400ffe0 }, - { 0x21000077, 0x1400ffe0 }, - { 0x21000078, 0x1400ffe0 }, - { 0x21000079, 0x1400ffe0 }, - { 0x2100007a, 0x1400ffe0 }, - { 0x0900007b, 0x58000000 }, - { 0x0900007c, 0x64000000 }, - { 0x0900007d, 0x48000000 }, - { 0x0900007e, 0x64000000 }, - { 0x0980007f, 0x00000020 }, - { 0x090000a0, 0x74000000 }, - { 0x090000a1, 0x54000000 }, - { 0x098000a2, 0x5c000003 }, - { 0x098000a6, 0x68000001 }, - { 0x090000a8, 0x60000000 }, - { 0x090000a9, 0x68000000 }, - { 0x210000aa, 0x14000000 }, - { 0x090000ab, 0x50000000 }, - { 0x090000ac, 0x64000000 }, - { 0x090000ad, 0x04000000 }, - { 0x090000ae, 0x68000000 }, - { 0x090000af, 0x60000000 }, - { 0x090000b0, 0x68000000 }, - { 0x090000b1, 0x64000000 }, - { 0x098000b2, 0x3c000001 }, - { 0x090000b4, 0x60000000 }, - { 0x090000b5, 0x140002e7 }, - { 0x090000b6, 0x68000000 }, - { 0x090000b7, 0x54000000 }, - { 0x090000b8, 0x60000000 }, - { 0x090000b9, 0x3c000000 }, - { 0x210000ba, 0x14000000 }, - { 0x090000bb, 0x4c000000 }, - { 0x098000bc, 0x3c000002 }, - { 0x090000bf, 0x54000000 }, - { 0x210000c0, 0x24000020 }, - { 0x210000c1, 0x24000020 }, - { 0x210000c2, 0x24000020 }, - { 0x210000c3, 0x24000020 }, - { 0x210000c4, 0x24000020 }, - { 0x210000c5, 0x24000020 }, - { 0x210000c6, 0x24000020 }, - { 0x210000c7, 0x24000020 }, - { 0x210000c8, 0x24000020 }, - { 0x210000c9, 0x24000020 }, - { 0x210000ca, 0x24000020 }, - { 0x210000cb, 0x24000020 }, - { 0x210000cc, 0x24000020 }, - { 0x210000cd, 0x24000020 }, - { 0x210000ce, 0x24000020 }, - { 0x210000cf, 0x24000020 }, - { 0x210000d0, 0x24000020 }, - { 0x210000d1, 0x24000020 }, - { 0x210000d2, 0x24000020 }, - { 0x210000d3, 0x24000020 }, - { 0x210000d4, 0x24000020 }, - { 0x210000d5, 0x24000020 }, - { 0x210000d6, 0x24000020 }, - { 0x090000d7, 0x64000000 }, - { 0x210000d8, 0x24000020 }, - { 0x210000d9, 0x24000020 }, - { 0x210000da, 0x24000020 }, - { 0x210000db, 0x24000020 }, - { 0x210000dc, 0x24000020 }, - { 0x210000dd, 0x24000020 }, - { 0x210000de, 0x24000020 }, - { 0x210000df, 0x14000000 }, - { 0x210000e0, 0x1400ffe0 }, - { 0x210000e1, 0x1400ffe0 }, - { 0x210000e2, 0x1400ffe0 }, - { 0x210000e3, 0x1400ffe0 }, - { 0x210000e4, 0x1400ffe0 }, - { 0x210000e5, 0x1400ffe0 }, - { 0x210000e6, 0x1400ffe0 }, - { 0x210000e7, 0x1400ffe0 }, - { 0x210000e8, 0x1400ffe0 }, - { 0x210000e9, 0x1400ffe0 }, - { 0x210000ea, 0x1400ffe0 }, - { 0x210000eb, 0x1400ffe0 }, - { 0x210000ec, 0x1400ffe0 }, - { 0x210000ed, 0x1400ffe0 }, - { 0x210000ee, 0x1400ffe0 }, - { 0x210000ef, 0x1400ffe0 }, - { 0x210000f0, 0x1400ffe0 }, - { 0x210000f1, 0x1400ffe0 }, - { 0x210000f2, 0x1400ffe0 }, - { 0x210000f3, 0x1400ffe0 }, - { 0x210000f4, 0x1400ffe0 }, - { 0x210000f5, 0x1400ffe0 }, - { 0x210000f6, 0x1400ffe0 }, - { 0x090000f7, 0x64000000 }, - { 0x210000f8, 0x1400ffe0 }, - { 0x210000f9, 0x1400ffe0 }, - { 0x210000fa, 0x1400ffe0 }, - { 0x210000fb, 0x1400ffe0 }, - { 0x210000fc, 0x1400ffe0 }, - { 0x210000fd, 0x1400ffe0 }, - { 0x210000fe, 0x1400ffe0 }, - { 0x210000ff, 0x14000079 }, - { 0x21000100, 0x24000001 }, - { 0x21000101, 0x1400ffff }, - { 0x21000102, 0x24000001 }, - { 0x21000103, 0x1400ffff }, - { 0x21000104, 0x24000001 }, - { 0x21000105, 0x1400ffff }, - { 0x21000106, 0x24000001 }, - { 0x21000107, 0x1400ffff }, - { 0x21000108, 0x24000001 }, - { 0x21000109, 0x1400ffff }, - { 0x2100010a, 0x24000001 }, - { 0x2100010b, 0x1400ffff }, - { 0x2100010c, 0x24000001 }, - { 0x2100010d, 0x1400ffff }, - { 0x2100010e, 0x24000001 }, - { 0x2100010f, 0x1400ffff }, - { 0x21000110, 0x24000001 }, - { 0x21000111, 0x1400ffff }, - { 0x21000112, 0x24000001 }, - { 0x21000113, 0x1400ffff }, - { 0x21000114, 0x24000001 }, - { 0x21000115, 0x1400ffff }, - { 0x21000116, 0x24000001 }, - { 0x21000117, 0x1400ffff }, - { 0x21000118, 0x24000001 }, - { 0x21000119, 0x1400ffff }, - { 0x2100011a, 0x24000001 }, - { 0x2100011b, 0x1400ffff }, - { 0x2100011c, 0x24000001 }, - { 0x2100011d, 0x1400ffff }, - { 0x2100011e, 0x24000001 }, - { 0x2100011f, 0x1400ffff }, - { 0x21000120, 0x24000001 }, - { 0x21000121, 0x1400ffff }, - { 0x21000122, 0x24000001 }, - { 0x21000123, 0x1400ffff }, - { 0x21000124, 0x24000001 }, - { 0x21000125, 0x1400ffff }, - { 0x21000126, 0x24000001 }, - { 0x21000127, 0x1400ffff }, - { 0x21000128, 0x24000001 }, - { 0x21000129, 0x1400ffff }, - { 0x2100012a, 0x24000001 }, - { 0x2100012b, 0x1400ffff }, - { 0x2100012c, 0x24000001 }, - { 0x2100012d, 0x1400ffff }, - { 0x2100012e, 0x24000001 }, - { 0x2100012f, 0x1400ffff }, - { 0x21000130, 0x2400ff39 }, - { 0x21000131, 0x1400ff18 }, - { 0x21000132, 0x24000001 }, - { 0x21000133, 0x1400ffff }, - { 0x21000134, 0x24000001 }, - { 0x21000135, 0x1400ffff }, - { 0x21000136, 0x24000001 }, - { 0x21000137, 0x1400ffff }, - { 0x21000138, 0x14000000 }, - { 0x21000139, 0x24000001 }, - { 0x2100013a, 0x1400ffff }, - { 0x2100013b, 0x24000001 }, - { 0x2100013c, 0x1400ffff }, - { 0x2100013d, 0x24000001 }, - { 0x2100013e, 0x1400ffff }, - { 0x2100013f, 0x24000001 }, - { 0x21000140, 0x1400ffff }, - { 0x21000141, 0x24000001 }, - { 0x21000142, 0x1400ffff }, - { 0x21000143, 0x24000001 }, - { 0x21000144, 0x1400ffff }, - { 0x21000145, 0x24000001 }, - { 0x21000146, 0x1400ffff }, - { 0x21000147, 0x24000001 }, - { 0x21000148, 0x1400ffff }, - { 0x21000149, 0x14000000 }, - { 0x2100014a, 0x24000001 }, - { 0x2100014b, 0x1400ffff }, - { 0x2100014c, 0x24000001 }, - { 0x2100014d, 0x1400ffff }, - { 0x2100014e, 0x24000001 }, - { 0x2100014f, 0x1400ffff }, - { 0x21000150, 0x24000001 }, - { 0x21000151, 0x1400ffff }, - { 0x21000152, 0x24000001 }, - { 0x21000153, 0x1400ffff }, - { 0x21000154, 0x24000001 }, - { 0x21000155, 0x1400ffff }, - { 0x21000156, 0x24000001 }, - { 0x21000157, 0x1400ffff }, - { 0x21000158, 0x24000001 }, - { 0x21000159, 0x1400ffff }, - { 0x2100015a, 0x24000001 }, - { 0x2100015b, 0x1400ffff }, - { 0x2100015c, 0x24000001 }, - { 0x2100015d, 0x1400ffff }, - { 0x2100015e, 0x24000001 }, - { 0x2100015f, 0x1400ffff }, - { 0x21000160, 0x24000001 }, - { 0x21000161, 0x1400ffff }, - { 0x21000162, 0x24000001 }, - { 0x21000163, 0x1400ffff }, - { 0x21000164, 0x24000001 }, - { 0x21000165, 0x1400ffff }, - { 0x21000166, 0x24000001 }, - { 0x21000167, 0x1400ffff }, - { 0x21000168, 0x24000001 }, - { 0x21000169, 0x1400ffff }, - { 0x2100016a, 0x24000001 }, - { 0x2100016b, 0x1400ffff }, - { 0x2100016c, 0x24000001 }, - { 0x2100016d, 0x1400ffff }, - { 0x2100016e, 0x24000001 }, - { 0x2100016f, 0x1400ffff }, - { 0x21000170, 0x24000001 }, - { 0x21000171, 0x1400ffff }, - { 0x21000172, 0x24000001 }, - { 0x21000173, 0x1400ffff }, - { 0x21000174, 0x24000001 }, - { 0x21000175, 0x1400ffff }, - { 0x21000176, 0x24000001 }, - { 0x21000177, 0x1400ffff }, - { 0x21000178, 0x2400ff87 }, - { 0x21000179, 0x24000001 }, - { 0x2100017a, 0x1400ffff }, - { 0x2100017b, 0x24000001 }, - { 0x2100017c, 0x1400ffff }, - { 0x2100017d, 0x24000001 }, - { 0x2100017e, 0x1400ffff }, - { 0x2100017f, 0x1400fed4 }, - { 0x21000180, 0x140000c3 }, - { 0x21000181, 0x240000d2 }, - { 0x21000182, 0x24000001 }, - { 0x21000183, 0x1400ffff }, - { 0x21000184, 0x24000001 }, - { 0x21000185, 0x1400ffff }, - { 0x21000186, 0x240000ce }, - { 0x21000187, 0x24000001 }, - { 0x21000188, 0x1400ffff }, - { 0x21000189, 0x240000cd }, - { 0x2100018a, 0x240000cd }, - { 0x2100018b, 0x24000001 }, - { 0x2100018c, 0x1400ffff }, - { 0x2100018d, 0x14000000 }, - { 0x2100018e, 0x2400004f }, - { 0x2100018f, 0x240000ca }, - { 0x21000190, 0x240000cb }, - { 0x21000191, 0x24000001 }, - { 0x21000192, 0x1400ffff }, - { 0x21000193, 0x240000cd }, - { 0x21000194, 0x240000cf }, - { 0x21000195, 0x14000061 }, - { 0x21000196, 0x240000d3 }, - { 0x21000197, 0x240000d1 }, - { 0x21000198, 0x24000001 }, - { 0x21000199, 0x1400ffff }, - { 0x2100019a, 0x140000a3 }, - { 0x2100019b, 0x14000000 }, - { 0x2100019c, 0x240000d3 }, - { 0x2100019d, 0x240000d5 }, - { 0x2100019e, 0x14000082 }, - { 0x2100019f, 0x240000d6 }, - { 0x210001a0, 0x24000001 }, - { 0x210001a1, 0x1400ffff }, - { 0x210001a2, 0x24000001 }, - { 0x210001a3, 0x1400ffff }, - { 0x210001a4, 0x24000001 }, - { 0x210001a5, 0x1400ffff }, - { 0x210001a6, 0x240000da }, - { 0x210001a7, 0x24000001 }, - { 0x210001a8, 0x1400ffff }, - { 0x210001a9, 0x240000da }, - { 0x218001aa, 0x14000001 }, - { 0x210001ac, 0x24000001 }, - { 0x210001ad, 0x1400ffff }, - { 0x210001ae, 0x240000da }, - { 0x210001af, 0x24000001 }, - { 0x210001b0, 0x1400ffff }, - { 0x210001b1, 0x240000d9 }, - { 0x210001b2, 0x240000d9 }, - { 0x210001b3, 0x24000001 }, - { 0x210001b4, 0x1400ffff }, - { 0x210001b5, 0x24000001 }, - { 0x210001b6, 0x1400ffff }, - { 0x210001b7, 0x240000db }, - { 0x210001b8, 0x24000001 }, - { 0x210001b9, 0x1400ffff }, - { 0x210001ba, 0x14000000 }, - { 0x210001bb, 0x1c000000 }, - { 0x210001bc, 0x24000001 }, - { 0x210001bd, 0x1400ffff }, - { 0x210001be, 0x14000000 }, - { 0x210001bf, 0x14000038 }, - { 0x218001c0, 0x1c000003 }, - { 0x210001c4, 0x24000002 }, - { 0x210001c5, 0x2000ffff }, - { 0x210001c6, 0x1400fffe }, - { 0x210001c7, 0x24000002 }, - { 0x210001c8, 0x2000ffff }, - { 0x210001c9, 0x1400fffe }, - { 0x210001ca, 0x24000002 }, - { 0x210001cb, 0x2000ffff }, - { 0x210001cc, 0x1400fffe }, - { 0x210001cd, 0x24000001 }, - { 0x210001ce, 0x1400ffff }, - { 0x210001cf, 0x24000001 }, - { 0x210001d0, 0x1400ffff }, - { 0x210001d1, 0x24000001 }, - { 0x210001d2, 0x1400ffff }, - { 0x210001d3, 0x24000001 }, - { 0x210001d4, 0x1400ffff }, - { 0x210001d5, 0x24000001 }, - { 0x210001d6, 0x1400ffff }, - { 0x210001d7, 0x24000001 }, - { 0x210001d8, 0x1400ffff }, - { 0x210001d9, 0x24000001 }, - { 0x210001da, 0x1400ffff }, - { 0x210001db, 0x24000001 }, - { 0x210001dc, 0x1400ffff }, - { 0x210001dd, 0x1400ffb1 }, - { 0x210001de, 0x24000001 }, - { 0x210001df, 0x1400ffff }, - { 0x210001e0, 0x24000001 }, - { 0x210001e1, 0x1400ffff }, - { 0x210001e2, 0x24000001 }, - { 0x210001e3, 0x1400ffff }, - { 0x210001e4, 0x24000001 }, - { 0x210001e5, 0x1400ffff }, - { 0x210001e6, 0x24000001 }, - { 0x210001e7, 0x1400ffff }, - { 0x210001e8, 0x24000001 }, - { 0x210001e9, 0x1400ffff }, - { 0x210001ea, 0x24000001 }, - { 0x210001eb, 0x1400ffff }, - { 0x210001ec, 0x24000001 }, - { 0x210001ed, 0x1400ffff }, - { 0x210001ee, 0x24000001 }, - { 0x210001ef, 0x1400ffff }, - { 0x210001f0, 0x14000000 }, - { 0x210001f1, 0x24000002 }, - { 0x210001f2, 0x2000ffff }, - { 0x210001f3, 0x1400fffe }, - { 0x210001f4, 0x24000001 }, - { 0x210001f5, 0x1400ffff }, - { 0x210001f6, 0x2400ff9f }, - { 0x210001f7, 0x2400ffc8 }, - { 0x210001f8, 0x24000001 }, - { 0x210001f9, 0x1400ffff }, - { 0x210001fa, 0x24000001 }, - { 0x210001fb, 0x1400ffff }, - { 0x210001fc, 0x24000001 }, - { 0x210001fd, 0x1400ffff }, - { 0x210001fe, 0x24000001 }, - { 0x210001ff, 0x1400ffff }, - { 0x21000200, 0x24000001 }, - { 0x21000201, 0x1400ffff }, - { 0x21000202, 0x24000001 }, - { 0x21000203, 0x1400ffff }, - { 0x21000204, 0x24000001 }, - { 0x21000205, 0x1400ffff }, - { 0x21000206, 0x24000001 }, - { 0x21000207, 0x1400ffff }, - { 0x21000208, 0x24000001 }, - { 0x21000209, 0x1400ffff }, - { 0x2100020a, 0x24000001 }, - { 0x2100020b, 0x1400ffff }, - { 0x2100020c, 0x24000001 }, - { 0x2100020d, 0x1400ffff }, - { 0x2100020e, 0x24000001 }, - { 0x2100020f, 0x1400ffff }, - { 0x21000210, 0x24000001 }, - { 0x21000211, 0x1400ffff }, - { 0x21000212, 0x24000001 }, - { 0x21000213, 0x1400ffff }, - { 0x21000214, 0x24000001 }, - { 0x21000215, 0x1400ffff }, - { 0x21000216, 0x24000001 }, - { 0x21000217, 0x1400ffff }, - { 0x21000218, 0x24000001 }, - { 0x21000219, 0x1400ffff }, - { 0x2100021a, 0x24000001 }, - { 0x2100021b, 0x1400ffff }, - { 0x2100021c, 0x24000001 }, - { 0x2100021d, 0x1400ffff }, - { 0x2100021e, 0x24000001 }, - { 0x2100021f, 0x1400ffff }, - { 0x21000220, 0x2400ff7e }, - { 0x21000221, 0x14000000 }, - { 0x21000222, 0x24000001 }, - { 0x21000223, 0x1400ffff }, - { 0x21000224, 0x24000001 }, - { 0x21000225, 0x1400ffff }, - { 0x21000226, 0x24000001 }, - { 0x21000227, 0x1400ffff }, - { 0x21000228, 0x24000001 }, - { 0x21000229, 0x1400ffff }, - { 0x2100022a, 0x24000001 }, - { 0x2100022b, 0x1400ffff }, - { 0x2100022c, 0x24000001 }, - { 0x2100022d, 0x1400ffff }, - { 0x2100022e, 0x24000001 }, - { 0x2100022f, 0x1400ffff }, - { 0x21000230, 0x24000001 }, - { 0x21000231, 0x1400ffff }, - { 0x21000232, 0x24000001 }, - { 0x21000233, 0x1400ffff }, - { 0x21800234, 0x14000005 }, - { 0x2100023a, 0x24002a2b }, - { 0x2100023b, 0x24000001 }, - { 0x2100023c, 0x1400ffff }, - { 0x2100023d, 0x2400ff5d }, - { 0x2100023e, 0x24002a28 }, - { 0x2180023f, 0x14000001 }, - { 0x21000241, 0x24000001 }, - { 0x21000242, 0x1400ffff }, - { 0x21000243, 0x2400ff3d }, - { 0x21000244, 0x24000045 }, - { 0x21000245, 0x24000047 }, - { 0x21000246, 0x24000001 }, - { 0x21000247, 0x1400ffff }, - { 0x21000248, 0x24000001 }, - { 0x21000249, 0x1400ffff }, - { 0x2100024a, 0x24000001 }, - { 0x2100024b, 0x1400ffff }, - { 0x2100024c, 0x24000001 }, - { 0x2100024d, 0x1400ffff }, - { 0x2100024e, 0x24000001 }, - { 0x2100024f, 0x1400ffff }, - { 0x21800250, 0x14000002 }, - { 0x21000253, 0x1400ff2e }, - { 0x21000254, 0x1400ff32 }, - { 0x21000255, 0x14000000 }, - { 0x21000256, 0x1400ff33 }, - { 0x21000257, 0x1400ff33 }, - { 0x21000258, 0x14000000 }, - { 0x21000259, 0x1400ff36 }, - { 0x2100025a, 0x14000000 }, - { 0x2100025b, 0x1400ff35 }, - { 0x2180025c, 0x14000003 }, - { 0x21000260, 0x1400ff33 }, - { 0x21800261, 0x14000001 }, - { 0x21000263, 0x1400ff31 }, - { 0x21800264, 0x14000003 }, - { 0x21000268, 0x1400ff2f }, - { 0x21000269, 0x1400ff2d }, - { 0x2100026a, 0x14000000 }, - { 0x2100026b, 0x140029f7 }, - { 0x2180026c, 0x14000002 }, - { 0x2100026f, 0x1400ff2d }, - { 0x21800270, 0x14000001 }, - { 0x21000272, 0x1400ff2b }, - { 0x21800273, 0x14000001 }, - { 0x21000275, 0x1400ff2a }, - { 0x21800276, 0x14000006 }, - { 0x2100027d, 0x140029e7 }, - { 0x2180027e, 0x14000001 }, - { 0x21000280, 0x1400ff26 }, - { 0x21800281, 0x14000001 }, - { 0x21000283, 0x1400ff26 }, - { 0x21800284, 0x14000003 }, - { 0x21000288, 0x1400ff26 }, - { 0x21000289, 0x1400ffbb }, - { 0x2100028a, 0x1400ff27 }, - { 0x2100028b, 0x1400ff27 }, - { 0x2100028c, 0x1400ffb9 }, - { 0x2180028d, 0x14000004 }, - { 0x21000292, 0x1400ff25 }, - { 0x21000293, 0x14000000 }, - { 0x21000294, 0x1c000000 }, - { 0x21800295, 0x1400001a }, - { 0x218002b0, 0x18000008 }, - { 0x098002b9, 0x18000008 }, - { 0x098002c2, 0x60000003 }, - { 0x098002c6, 0x1800000b }, - { 0x098002d2, 0x6000000d }, - { 0x218002e0, 0x18000004 }, - { 0x098002e5, 0x60000008 }, - { 0x090002ee, 0x18000000 }, - { 0x098002ef, 0x60000010 }, - { 0x1b800300, 0x30000044 }, - { 0x1b000345, 0x30000054 }, - { 0x1b800346, 0x30000029 }, - { 0x13800374, 0x60000001 }, - { 0x1300037a, 0x18000000 }, - { 0x1300037b, 0x14000082 }, - { 0x1300037c, 0x14000082 }, - { 0x1300037d, 0x14000082 }, - { 0x0900037e, 0x54000000 }, - { 0x13800384, 0x60000001 }, - { 0x13000386, 0x24000026 }, - { 0x09000387, 0x54000000 }, - { 0x13000388, 0x24000025 }, - { 0x13000389, 0x24000025 }, - { 0x1300038a, 0x24000025 }, - { 0x1300038c, 0x24000040 }, - { 0x1300038e, 0x2400003f }, - { 0x1300038f, 0x2400003f }, - { 0x13000390, 0x14000000 }, - { 0x13000391, 0x24000020 }, - { 0x13000392, 0x24000020 }, - { 0x13000393, 0x24000020 }, - { 0x13000394, 0x24000020 }, - { 0x13000395, 0x24000020 }, - { 0x13000396, 0x24000020 }, - { 0x13000397, 0x24000020 }, - { 0x13000398, 0x24000020 }, - { 0x13000399, 0x24000020 }, - { 0x1300039a, 0x24000020 }, - { 0x1300039b, 0x24000020 }, - { 0x1300039c, 0x24000020 }, - { 0x1300039d, 0x24000020 }, - { 0x1300039e, 0x24000020 }, - { 0x1300039f, 0x24000020 }, - { 0x130003a0, 0x24000020 }, - { 0x130003a1, 0x24000020 }, - { 0x130003a3, 0x24000020 }, - { 0x130003a4, 0x24000020 }, - { 0x130003a5, 0x24000020 }, - { 0x130003a6, 0x24000020 }, - { 0x130003a7, 0x24000020 }, - { 0x130003a8, 0x24000020 }, - { 0x130003a9, 0x24000020 }, - { 0x130003aa, 0x24000020 }, - { 0x130003ab, 0x24000020 }, - { 0x130003ac, 0x1400ffda }, - { 0x130003ad, 0x1400ffdb }, - { 0x130003ae, 0x1400ffdb }, - { 0x130003af, 0x1400ffdb }, - { 0x130003b0, 0x14000000 }, - { 0x130003b1, 0x1400ffe0 }, - { 0x130003b2, 0x1400ffe0 }, - { 0x130003b3, 0x1400ffe0 }, - { 0x130003b4, 0x1400ffe0 }, - { 0x130003b5, 0x1400ffe0 }, - { 0x130003b6, 0x1400ffe0 }, - { 0x130003b7, 0x1400ffe0 }, - { 0x130003b8, 0x1400ffe0 }, - { 0x130003b9, 0x1400ffe0 }, - { 0x130003ba, 0x1400ffe0 }, - { 0x130003bb, 0x1400ffe0 }, - { 0x130003bc, 0x1400ffe0 }, - { 0x130003bd, 0x1400ffe0 }, - { 0x130003be, 0x1400ffe0 }, - { 0x130003bf, 0x1400ffe0 }, - { 0x130003c0, 0x1400ffe0 }, - { 0x130003c1, 0x1400ffe0 }, - { 0x130003c2, 0x1400ffe1 }, - { 0x130003c3, 0x1400ffe0 }, - { 0x130003c4, 0x1400ffe0 }, - { 0x130003c5, 0x1400ffe0 }, - { 0x130003c6, 0x1400ffe0 }, - { 0x130003c7, 0x1400ffe0 }, - { 0x130003c8, 0x1400ffe0 }, - { 0x130003c9, 0x1400ffe0 }, - { 0x130003ca, 0x1400ffe0 }, - { 0x130003cb, 0x1400ffe0 }, - { 0x130003cc, 0x1400ffc0 }, - { 0x130003cd, 0x1400ffc1 }, - { 0x130003ce, 0x1400ffc1 }, - { 0x130003d0, 0x1400ffc2 }, - { 0x130003d1, 0x1400ffc7 }, - { 0x138003d2, 0x24000002 }, - { 0x130003d5, 0x1400ffd1 }, - { 0x130003d6, 0x1400ffca }, - { 0x130003d7, 0x14000000 }, - { 0x130003d8, 0x24000001 }, - { 0x130003d9, 0x1400ffff }, - { 0x130003da, 0x24000001 }, - { 0x130003db, 0x1400ffff }, - { 0x130003dc, 0x24000001 }, - { 0x130003dd, 0x1400ffff }, - { 0x130003de, 0x24000001 }, - { 0x130003df, 0x1400ffff }, - { 0x130003e0, 0x24000001 }, - { 0x130003e1, 0x1400ffff }, - { 0x0a0003e2, 0x24000001 }, - { 0x0a0003e3, 0x1400ffff }, - { 0x0a0003e4, 0x24000001 }, - { 0x0a0003e5, 0x1400ffff }, - { 0x0a0003e6, 0x24000001 }, - { 0x0a0003e7, 0x1400ffff }, - { 0x0a0003e8, 0x24000001 }, - { 0x0a0003e9, 0x1400ffff }, - { 0x0a0003ea, 0x24000001 }, - { 0x0a0003eb, 0x1400ffff }, - { 0x0a0003ec, 0x24000001 }, - { 0x0a0003ed, 0x1400ffff }, - { 0x0a0003ee, 0x24000001 }, - { 0x0a0003ef, 0x1400ffff }, - { 0x130003f0, 0x1400ffaa }, - { 0x130003f1, 0x1400ffb0 }, - { 0x130003f2, 0x14000007 }, - { 0x130003f3, 0x14000000 }, - { 0x130003f4, 0x2400ffc4 }, - { 0x130003f5, 0x1400ffa0 }, - { 0x130003f6, 0x64000000 }, - { 0x130003f7, 0x24000001 }, - { 0x130003f8, 0x1400ffff }, - { 0x130003f9, 0x2400fff9 }, - { 0x130003fa, 0x24000001 }, - { 0x130003fb, 0x1400ffff }, - { 0x130003fc, 0x14000000 }, - { 0x130003fd, 0x2400ff7e }, - { 0x130003fe, 0x2400ff7e }, - { 0x130003ff, 0x2400ff7e }, - { 0x0c000400, 0x24000050 }, - { 0x0c000401, 0x24000050 }, - { 0x0c000402, 0x24000050 }, - { 0x0c000403, 0x24000050 }, - { 0x0c000404, 0x24000050 }, - { 0x0c000405, 0x24000050 }, - { 0x0c000406, 0x24000050 }, - { 0x0c000407, 0x24000050 }, - { 0x0c000408, 0x24000050 }, - { 0x0c000409, 0x24000050 }, - { 0x0c00040a, 0x24000050 }, - { 0x0c00040b, 0x24000050 }, - { 0x0c00040c, 0x24000050 }, - { 0x0c00040d, 0x24000050 }, - { 0x0c00040e, 0x24000050 }, - { 0x0c00040f, 0x24000050 }, - { 0x0c000410, 0x24000020 }, - { 0x0c000411, 0x24000020 }, - { 0x0c000412, 0x24000020 }, - { 0x0c000413, 0x24000020 }, - { 0x0c000414, 0x24000020 }, - { 0x0c000415, 0x24000020 }, - { 0x0c000416, 0x24000020 }, - { 0x0c000417, 0x24000020 }, - { 0x0c000418, 0x24000020 }, - { 0x0c000419, 0x24000020 }, - { 0x0c00041a, 0x24000020 }, - { 0x0c00041b, 0x24000020 }, - { 0x0c00041c, 0x24000020 }, - { 0x0c00041d, 0x24000020 }, - { 0x0c00041e, 0x24000020 }, - { 0x0c00041f, 0x24000020 }, - { 0x0c000420, 0x24000020 }, - { 0x0c000421, 0x24000020 }, - { 0x0c000422, 0x24000020 }, - { 0x0c000423, 0x24000020 }, - { 0x0c000424, 0x24000020 }, - { 0x0c000425, 0x24000020 }, - { 0x0c000426, 0x24000020 }, - { 0x0c000427, 0x24000020 }, - { 0x0c000428, 0x24000020 }, - { 0x0c000429, 0x24000020 }, - { 0x0c00042a, 0x24000020 }, - { 0x0c00042b, 0x24000020 }, - { 0x0c00042c, 0x24000020 }, - { 0x0c00042d, 0x24000020 }, - { 0x0c00042e, 0x24000020 }, - { 0x0c00042f, 0x24000020 }, - { 0x0c000430, 0x1400ffe0 }, - { 0x0c000431, 0x1400ffe0 }, - { 0x0c000432, 0x1400ffe0 }, - { 0x0c000433, 0x1400ffe0 }, - { 0x0c000434, 0x1400ffe0 }, - { 0x0c000435, 0x1400ffe0 }, - { 0x0c000436, 0x1400ffe0 }, - { 0x0c000437, 0x1400ffe0 }, - { 0x0c000438, 0x1400ffe0 }, - { 0x0c000439, 0x1400ffe0 }, - { 0x0c00043a, 0x1400ffe0 }, - { 0x0c00043b, 0x1400ffe0 }, - { 0x0c00043c, 0x1400ffe0 }, - { 0x0c00043d, 0x1400ffe0 }, - { 0x0c00043e, 0x1400ffe0 }, - { 0x0c00043f, 0x1400ffe0 }, - { 0x0c000440, 0x1400ffe0 }, - { 0x0c000441, 0x1400ffe0 }, - { 0x0c000442, 0x1400ffe0 }, - { 0x0c000443, 0x1400ffe0 }, - { 0x0c000444, 0x1400ffe0 }, - { 0x0c000445, 0x1400ffe0 }, - { 0x0c000446, 0x1400ffe0 }, - { 0x0c000447, 0x1400ffe0 }, - { 0x0c000448, 0x1400ffe0 }, - { 0x0c000449, 0x1400ffe0 }, - { 0x0c00044a, 0x1400ffe0 }, - { 0x0c00044b, 0x1400ffe0 }, - { 0x0c00044c, 0x1400ffe0 }, - { 0x0c00044d, 0x1400ffe0 }, - { 0x0c00044e, 0x1400ffe0 }, - { 0x0c00044f, 0x1400ffe0 }, - { 0x0c000450, 0x1400ffb0 }, - { 0x0c000451, 0x1400ffb0 }, - { 0x0c000452, 0x1400ffb0 }, - { 0x0c000453, 0x1400ffb0 }, - { 0x0c000454, 0x1400ffb0 }, - { 0x0c000455, 0x1400ffb0 }, - { 0x0c000456, 0x1400ffb0 }, - { 0x0c000457, 0x1400ffb0 }, - { 0x0c000458, 0x1400ffb0 }, - { 0x0c000459, 0x1400ffb0 }, - { 0x0c00045a, 0x1400ffb0 }, - { 0x0c00045b, 0x1400ffb0 }, - { 0x0c00045c, 0x1400ffb0 }, - { 0x0c00045d, 0x1400ffb0 }, - { 0x0c00045e, 0x1400ffb0 }, - { 0x0c00045f, 0x1400ffb0 }, - { 0x0c000460, 0x24000001 }, - { 0x0c000461, 0x1400ffff }, - { 0x0c000462, 0x24000001 }, - { 0x0c000463, 0x1400ffff }, - { 0x0c000464, 0x24000001 }, - { 0x0c000465, 0x1400ffff }, - { 0x0c000466, 0x24000001 }, - { 0x0c000467, 0x1400ffff }, - { 0x0c000468, 0x24000001 }, - { 0x0c000469, 0x1400ffff }, - { 0x0c00046a, 0x24000001 }, - { 0x0c00046b, 0x1400ffff }, - { 0x0c00046c, 0x24000001 }, - { 0x0c00046d, 0x1400ffff }, - { 0x0c00046e, 0x24000001 }, - { 0x0c00046f, 0x1400ffff }, - { 0x0c000470, 0x24000001 }, - { 0x0c000471, 0x1400ffff }, - { 0x0c000472, 0x24000001 }, - { 0x0c000473, 0x1400ffff }, - { 0x0c000474, 0x24000001 }, - { 0x0c000475, 0x1400ffff }, - { 0x0c000476, 0x24000001 }, - { 0x0c000477, 0x1400ffff }, - { 0x0c000478, 0x24000001 }, - { 0x0c000479, 0x1400ffff }, - { 0x0c00047a, 0x24000001 }, - { 0x0c00047b, 0x1400ffff }, - { 0x0c00047c, 0x24000001 }, - { 0x0c00047d, 0x1400ffff }, - { 0x0c00047e, 0x24000001 }, - { 0x0c00047f, 0x1400ffff }, - { 0x0c000480, 0x24000001 }, - { 0x0c000481, 0x1400ffff }, - { 0x0c000482, 0x68000000 }, - { 0x0c800483, 0x30000003 }, - { 0x0c800488, 0x2c000001 }, - { 0x0c00048a, 0x24000001 }, - { 0x0c00048b, 0x1400ffff }, - { 0x0c00048c, 0x24000001 }, - { 0x0c00048d, 0x1400ffff }, - { 0x0c00048e, 0x24000001 }, - { 0x0c00048f, 0x1400ffff }, - { 0x0c000490, 0x24000001 }, - { 0x0c000491, 0x1400ffff }, - { 0x0c000492, 0x24000001 }, - { 0x0c000493, 0x1400ffff }, - { 0x0c000494, 0x24000001 }, - { 0x0c000495, 0x1400ffff }, - { 0x0c000496, 0x24000001 }, - { 0x0c000497, 0x1400ffff }, - { 0x0c000498, 0x24000001 }, - { 0x0c000499, 0x1400ffff }, - { 0x0c00049a, 0x24000001 }, - { 0x0c00049b, 0x1400ffff }, - { 0x0c00049c, 0x24000001 }, - { 0x0c00049d, 0x1400ffff }, - { 0x0c00049e, 0x24000001 }, - { 0x0c00049f, 0x1400ffff }, - { 0x0c0004a0, 0x24000001 }, - { 0x0c0004a1, 0x1400ffff }, - { 0x0c0004a2, 0x24000001 }, - { 0x0c0004a3, 0x1400ffff }, - { 0x0c0004a4, 0x24000001 }, - { 0x0c0004a5, 0x1400ffff }, - { 0x0c0004a6, 0x24000001 }, - { 0x0c0004a7, 0x1400ffff }, - { 0x0c0004a8, 0x24000001 }, - { 0x0c0004a9, 0x1400ffff }, - { 0x0c0004aa, 0x24000001 }, - { 0x0c0004ab, 0x1400ffff }, - { 0x0c0004ac, 0x24000001 }, - { 0x0c0004ad, 0x1400ffff }, - { 0x0c0004ae, 0x24000001 }, - { 0x0c0004af, 0x1400ffff }, - { 0x0c0004b0, 0x24000001 }, - { 0x0c0004b1, 0x1400ffff }, - { 0x0c0004b2, 0x24000001 }, - { 0x0c0004b3, 0x1400ffff }, - { 0x0c0004b4, 0x24000001 }, - { 0x0c0004b5, 0x1400ffff }, - { 0x0c0004b6, 0x24000001 }, - { 0x0c0004b7, 0x1400ffff }, - { 0x0c0004b8, 0x24000001 }, - { 0x0c0004b9, 0x1400ffff }, - { 0x0c0004ba, 0x24000001 }, - { 0x0c0004bb, 0x1400ffff }, - { 0x0c0004bc, 0x24000001 }, - { 0x0c0004bd, 0x1400ffff }, - { 0x0c0004be, 0x24000001 }, - { 0x0c0004bf, 0x1400ffff }, - { 0x0c0004c0, 0x2400000f }, - { 0x0c0004c1, 0x24000001 }, - { 0x0c0004c2, 0x1400ffff }, - { 0x0c0004c3, 0x24000001 }, - { 0x0c0004c4, 0x1400ffff }, - { 0x0c0004c5, 0x24000001 }, - { 0x0c0004c6, 0x1400ffff }, - { 0x0c0004c7, 0x24000001 }, - { 0x0c0004c8, 0x1400ffff }, - { 0x0c0004c9, 0x24000001 }, - { 0x0c0004ca, 0x1400ffff }, - { 0x0c0004cb, 0x24000001 }, - { 0x0c0004cc, 0x1400ffff }, - { 0x0c0004cd, 0x24000001 }, - { 0x0c0004ce, 0x1400ffff }, - { 0x0c0004cf, 0x1400fff1 }, - { 0x0c0004d0, 0x24000001 }, - { 0x0c0004d1, 0x1400ffff }, - { 0x0c0004d2, 0x24000001 }, - { 0x0c0004d3, 0x1400ffff }, - { 0x0c0004d4, 0x24000001 }, - { 0x0c0004d5, 0x1400ffff }, - { 0x0c0004d6, 0x24000001 }, - { 0x0c0004d7, 0x1400ffff }, - { 0x0c0004d8, 0x24000001 }, - { 0x0c0004d9, 0x1400ffff }, - { 0x0c0004da, 0x24000001 }, - { 0x0c0004db, 0x1400ffff }, - { 0x0c0004dc, 0x24000001 }, - { 0x0c0004dd, 0x1400ffff }, - { 0x0c0004de, 0x24000001 }, - { 0x0c0004df, 0x1400ffff }, - { 0x0c0004e0, 0x24000001 }, - { 0x0c0004e1, 0x1400ffff }, - { 0x0c0004e2, 0x24000001 }, - { 0x0c0004e3, 0x1400ffff }, - { 0x0c0004e4, 0x24000001 }, - { 0x0c0004e5, 0x1400ffff }, - { 0x0c0004e6, 0x24000001 }, - { 0x0c0004e7, 0x1400ffff }, - { 0x0c0004e8, 0x24000001 }, - { 0x0c0004e9, 0x1400ffff }, - { 0x0c0004ea, 0x24000001 }, - { 0x0c0004eb, 0x1400ffff }, - { 0x0c0004ec, 0x24000001 }, - { 0x0c0004ed, 0x1400ffff }, - { 0x0c0004ee, 0x24000001 }, - { 0x0c0004ef, 0x1400ffff }, - { 0x0c0004f0, 0x24000001 }, - { 0x0c0004f1, 0x1400ffff }, - { 0x0c0004f2, 0x24000001 }, - { 0x0c0004f3, 0x1400ffff }, - { 0x0c0004f4, 0x24000001 }, - { 0x0c0004f5, 0x1400ffff }, - { 0x0c0004f6, 0x24000001 }, - { 0x0c0004f7, 0x1400ffff }, - { 0x0c0004f8, 0x24000001 }, - { 0x0c0004f9, 0x1400ffff }, - { 0x0c0004fa, 0x24000001 }, - { 0x0c0004fb, 0x1400ffff }, - { 0x0c0004fc, 0x24000001 }, - { 0x0c0004fd, 0x1400ffff }, - { 0x0c0004fe, 0x24000001 }, - { 0x0c0004ff, 0x1400ffff }, - { 0x0c000500, 0x24000001 }, - { 0x0c000501, 0x1400ffff }, - { 0x0c000502, 0x24000001 }, - { 0x0c000503, 0x1400ffff }, - { 0x0c000504, 0x24000001 }, - { 0x0c000505, 0x1400ffff }, - { 0x0c000506, 0x24000001 }, - { 0x0c000507, 0x1400ffff }, - { 0x0c000508, 0x24000001 }, - { 0x0c000509, 0x1400ffff }, - { 0x0c00050a, 0x24000001 }, - { 0x0c00050b, 0x1400ffff }, - { 0x0c00050c, 0x24000001 }, - { 0x0c00050d, 0x1400ffff }, - { 0x0c00050e, 0x24000001 }, - { 0x0c00050f, 0x1400ffff }, - { 0x0c000510, 0x24000001 }, - { 0x0c000511, 0x1400ffff }, - { 0x0c000512, 0x24000001 }, - { 0x0c000513, 0x1400ffff }, - { 0x01000531, 0x24000030 }, - { 0x01000532, 0x24000030 }, - { 0x01000533, 0x24000030 }, - { 0x01000534, 0x24000030 }, - { 0x01000535, 0x24000030 }, - { 0x01000536, 0x24000030 }, - { 0x01000537, 0x24000030 }, - { 0x01000538, 0x24000030 }, - { 0x01000539, 0x24000030 }, - { 0x0100053a, 0x24000030 }, - { 0x0100053b, 0x24000030 }, - { 0x0100053c, 0x24000030 }, - { 0x0100053d, 0x24000030 }, - { 0x0100053e, 0x24000030 }, - { 0x0100053f, 0x24000030 }, - { 0x01000540, 0x24000030 }, - { 0x01000541, 0x24000030 }, - { 0x01000542, 0x24000030 }, - { 0x01000543, 0x24000030 }, - { 0x01000544, 0x24000030 }, - { 0x01000545, 0x24000030 }, - { 0x01000546, 0x24000030 }, - { 0x01000547, 0x24000030 }, - { 0x01000548, 0x24000030 }, - { 0x01000549, 0x24000030 }, - { 0x0100054a, 0x24000030 }, - { 0x0100054b, 0x24000030 }, - { 0x0100054c, 0x24000030 }, - { 0x0100054d, 0x24000030 }, - { 0x0100054e, 0x24000030 }, - { 0x0100054f, 0x24000030 }, - { 0x01000550, 0x24000030 }, - { 0x01000551, 0x24000030 }, - { 0x01000552, 0x24000030 }, - { 0x01000553, 0x24000030 }, - { 0x01000554, 0x24000030 }, - { 0x01000555, 0x24000030 }, - { 0x01000556, 0x24000030 }, - { 0x01000559, 0x18000000 }, - { 0x0180055a, 0x54000005 }, - { 0x01000561, 0x1400ffd0 }, - { 0x01000562, 0x1400ffd0 }, - { 0x01000563, 0x1400ffd0 }, - { 0x01000564, 0x1400ffd0 }, - { 0x01000565, 0x1400ffd0 }, - { 0x01000566, 0x1400ffd0 }, - { 0x01000567, 0x1400ffd0 }, - { 0x01000568, 0x1400ffd0 }, - { 0x01000569, 0x1400ffd0 }, - { 0x0100056a, 0x1400ffd0 }, - { 0x0100056b, 0x1400ffd0 }, - { 0x0100056c, 0x1400ffd0 }, - { 0x0100056d, 0x1400ffd0 }, - { 0x0100056e, 0x1400ffd0 }, - { 0x0100056f, 0x1400ffd0 }, - { 0x01000570, 0x1400ffd0 }, - { 0x01000571, 0x1400ffd0 }, - { 0x01000572, 0x1400ffd0 }, - { 0x01000573, 0x1400ffd0 }, - { 0x01000574, 0x1400ffd0 }, - { 0x01000575, 0x1400ffd0 }, - { 0x01000576, 0x1400ffd0 }, - { 0x01000577, 0x1400ffd0 }, - { 0x01000578, 0x1400ffd0 }, - { 0x01000579, 0x1400ffd0 }, - { 0x0100057a, 0x1400ffd0 }, - { 0x0100057b, 0x1400ffd0 }, - { 0x0100057c, 0x1400ffd0 }, - { 0x0100057d, 0x1400ffd0 }, - { 0x0100057e, 0x1400ffd0 }, - { 0x0100057f, 0x1400ffd0 }, - { 0x01000580, 0x1400ffd0 }, - { 0x01000581, 0x1400ffd0 }, - { 0x01000582, 0x1400ffd0 }, - { 0x01000583, 0x1400ffd0 }, - { 0x01000584, 0x1400ffd0 }, - { 0x01000585, 0x1400ffd0 }, - { 0x01000586, 0x1400ffd0 }, - { 0x01000587, 0x14000000 }, - { 0x09000589, 0x54000000 }, - { 0x0100058a, 0x44000000 }, - { 0x19800591, 0x3000002c }, - { 0x190005be, 0x54000000 }, - { 0x190005bf, 0x30000000 }, - { 0x190005c0, 0x54000000 }, - { 0x198005c1, 0x30000001 }, - { 0x190005c3, 0x54000000 }, - { 0x198005c4, 0x30000001 }, - { 0x190005c6, 0x54000000 }, - { 0x190005c7, 0x30000000 }, - { 0x198005d0, 0x1c00001a }, - { 0x198005f0, 0x1c000002 }, - { 0x198005f3, 0x54000001 }, - { 0x09800600, 0x04000003 }, - { 0x0000060b, 0x5c000000 }, - { 0x0900060c, 0x54000000 }, - { 0x0000060d, 0x54000000 }, - { 0x0080060e, 0x68000001 }, - { 0x00800610, 0x30000005 }, - { 0x0900061b, 0x54000000 }, - { 0x0000061e, 0x54000000 }, - { 0x0900061f, 0x54000000 }, - { 0x00800621, 0x1c000019 }, - { 0x09000640, 0x18000000 }, - { 0x00800641, 0x1c000009 }, - { 0x1b80064b, 0x3000000a }, - { 0x00800656, 0x30000008 }, - { 0x09800660, 0x34000009 }, - { 0x0080066a, 0x54000003 }, - { 0x0080066e, 0x1c000001 }, - { 0x1b000670, 0x30000000 }, - { 0x00800671, 0x1c000062 }, - { 0x000006d4, 0x54000000 }, - { 0x000006d5, 0x1c000000 }, - { 0x008006d6, 0x30000006 }, - { 0x090006dd, 0x04000000 }, - { 0x000006de, 0x2c000000 }, - { 0x008006df, 0x30000005 }, - { 0x008006e5, 0x18000001 }, - { 0x008006e7, 0x30000001 }, - { 0x000006e9, 0x68000000 }, - { 0x008006ea, 0x30000003 }, - { 0x008006ee, 0x1c000001 }, - { 0x008006f0, 0x34000009 }, - { 0x008006fa, 0x1c000002 }, - { 0x008006fd, 0x68000001 }, - { 0x000006ff, 0x1c000000 }, - { 0x31800700, 0x5400000d }, - { 0x3100070f, 0x04000000 }, - { 0x31000710, 0x1c000000 }, - { 0x31000711, 0x30000000 }, - { 0x31800712, 0x1c00001d }, - { 0x31800730, 0x3000001a }, - { 0x3180074d, 0x1c000002 }, - { 0x00800750, 0x1c00001d }, - { 0x37800780, 0x1c000025 }, - { 0x378007a6, 0x3000000a }, - { 0x370007b1, 0x1c000000 }, - { 0x3f8007c0, 0x34000009 }, - { 0x3f8007ca, 0x1c000020 }, - { 0x3f8007eb, 0x30000008 }, - { 0x3f8007f4, 0x18000001 }, - { 0x3f0007f6, 0x68000000 }, - { 0x3f8007f7, 0x54000002 }, - { 0x3f0007fa, 0x18000000 }, - { 0x0e800901, 0x30000001 }, - { 0x0e000903, 0x28000000 }, - { 0x0e800904, 0x1c000035 }, - { 0x0e00093c, 0x30000000 }, - { 0x0e00093d, 0x1c000000 }, - { 0x0e80093e, 0x28000002 }, - { 0x0e800941, 0x30000007 }, - { 0x0e800949, 0x28000003 }, - { 0x0e00094d, 0x30000000 }, - { 0x0e000950, 0x1c000000 }, - { 0x0e800951, 0x30000003 }, - { 0x0e800958, 0x1c000009 }, - { 0x0e800962, 0x30000001 }, - { 0x09800964, 0x54000001 }, - { 0x0e800966, 0x34000009 }, - { 0x09000970, 0x54000000 }, - { 0x0e80097b, 0x1c000004 }, - { 0x02000981, 0x30000000 }, - { 0x02800982, 0x28000001 }, - { 0x02800985, 0x1c000007 }, - { 0x0280098f, 0x1c000001 }, - { 0x02800993, 0x1c000015 }, - { 0x028009aa, 0x1c000006 }, - { 0x020009b2, 0x1c000000 }, - { 0x028009b6, 0x1c000003 }, - { 0x020009bc, 0x30000000 }, - { 0x020009bd, 0x1c000000 }, - { 0x028009be, 0x28000002 }, - { 0x028009c1, 0x30000003 }, - { 0x028009c7, 0x28000001 }, - { 0x028009cb, 0x28000001 }, - { 0x020009cd, 0x30000000 }, - { 0x020009ce, 0x1c000000 }, - { 0x020009d7, 0x28000000 }, - { 0x028009dc, 0x1c000001 }, - { 0x028009df, 0x1c000002 }, - { 0x028009e2, 0x30000001 }, - { 0x028009e6, 0x34000009 }, - { 0x028009f0, 0x1c000001 }, - { 0x028009f2, 0x5c000001 }, - { 0x028009f4, 0x3c000005 }, - { 0x020009fa, 0x68000000 }, - { 0x15800a01, 0x30000001 }, - { 0x15000a03, 0x28000000 }, - { 0x15800a05, 0x1c000005 }, - { 0x15800a0f, 0x1c000001 }, - { 0x15800a13, 0x1c000015 }, - { 0x15800a2a, 0x1c000006 }, - { 0x15800a32, 0x1c000001 }, - { 0x15800a35, 0x1c000001 }, - { 0x15800a38, 0x1c000001 }, - { 0x15000a3c, 0x30000000 }, - { 0x15800a3e, 0x28000002 }, - { 0x15800a41, 0x30000001 }, - { 0x15800a47, 0x30000001 }, - { 0x15800a4b, 0x30000002 }, - { 0x15800a59, 0x1c000003 }, - { 0x15000a5e, 0x1c000000 }, - { 0x15800a66, 0x34000009 }, - { 0x15800a70, 0x30000001 }, - { 0x15800a72, 0x1c000002 }, - { 0x14800a81, 0x30000001 }, - { 0x14000a83, 0x28000000 }, - { 0x14800a85, 0x1c000008 }, - { 0x14800a8f, 0x1c000002 }, - { 0x14800a93, 0x1c000015 }, - { 0x14800aaa, 0x1c000006 }, - { 0x14800ab2, 0x1c000001 }, - { 0x14800ab5, 0x1c000004 }, - { 0x14000abc, 0x30000000 }, - { 0x14000abd, 0x1c000000 }, - { 0x14800abe, 0x28000002 }, - { 0x14800ac1, 0x30000004 }, - { 0x14800ac7, 0x30000001 }, - { 0x14000ac9, 0x28000000 }, - { 0x14800acb, 0x28000001 }, - { 0x14000acd, 0x30000000 }, - { 0x14000ad0, 0x1c000000 }, - { 0x14800ae0, 0x1c000001 }, - { 0x14800ae2, 0x30000001 }, - { 0x14800ae6, 0x34000009 }, - { 0x14000af1, 0x5c000000 }, - { 0x2b000b01, 0x30000000 }, - { 0x2b800b02, 0x28000001 }, - { 0x2b800b05, 0x1c000007 }, - { 0x2b800b0f, 0x1c000001 }, - { 0x2b800b13, 0x1c000015 }, - { 0x2b800b2a, 0x1c000006 }, - { 0x2b800b32, 0x1c000001 }, - { 0x2b800b35, 0x1c000004 }, - { 0x2b000b3c, 0x30000000 }, - { 0x2b000b3d, 0x1c000000 }, - { 0x2b000b3e, 0x28000000 }, - { 0x2b000b3f, 0x30000000 }, - { 0x2b000b40, 0x28000000 }, - { 0x2b800b41, 0x30000002 }, - { 0x2b800b47, 0x28000001 }, - { 0x2b800b4b, 0x28000001 }, - { 0x2b000b4d, 0x30000000 }, - { 0x2b000b56, 0x30000000 }, - { 0x2b000b57, 0x28000000 }, - { 0x2b800b5c, 0x1c000001 }, - { 0x2b800b5f, 0x1c000002 }, - { 0x2b800b66, 0x34000009 }, - { 0x2b000b70, 0x68000000 }, - { 0x2b000b71, 0x1c000000 }, - { 0x35000b82, 0x30000000 }, - { 0x35000b83, 0x1c000000 }, - { 0x35800b85, 0x1c000005 }, - { 0x35800b8e, 0x1c000002 }, - { 0x35800b92, 0x1c000003 }, - { 0x35800b99, 0x1c000001 }, - { 0x35000b9c, 0x1c000000 }, - { 0x35800b9e, 0x1c000001 }, - { 0x35800ba3, 0x1c000001 }, - { 0x35800ba8, 0x1c000002 }, - { 0x35800bae, 0x1c00000b }, - { 0x35800bbe, 0x28000001 }, - { 0x35000bc0, 0x30000000 }, - { 0x35800bc1, 0x28000001 }, - { 0x35800bc6, 0x28000002 }, - { 0x35800bca, 0x28000002 }, - { 0x35000bcd, 0x30000000 }, - { 0x35000bd7, 0x28000000 }, - { 0x35800be6, 0x34000009 }, - { 0x35800bf0, 0x3c000002 }, - { 0x35800bf3, 0x68000005 }, - { 0x35000bf9, 0x5c000000 }, - { 0x35000bfa, 0x68000000 }, - { 0x36800c01, 0x28000002 }, - { 0x36800c05, 0x1c000007 }, - { 0x36800c0e, 0x1c000002 }, - { 0x36800c12, 0x1c000016 }, - { 0x36800c2a, 0x1c000009 }, - { 0x36800c35, 0x1c000004 }, - { 0x36800c3e, 0x30000002 }, - { 0x36800c41, 0x28000003 }, - { 0x36800c46, 0x30000002 }, - { 0x36800c4a, 0x30000003 }, - { 0x36800c55, 0x30000001 }, - { 0x36800c60, 0x1c000001 }, - { 0x36800c66, 0x34000009 }, - { 0x1c800c82, 0x28000001 }, - { 0x1c800c85, 0x1c000007 }, - { 0x1c800c8e, 0x1c000002 }, - { 0x1c800c92, 0x1c000016 }, - { 0x1c800caa, 0x1c000009 }, - { 0x1c800cb5, 0x1c000004 }, - { 0x1c000cbc, 0x30000000 }, - { 0x1c000cbd, 0x1c000000 }, - { 0x1c000cbe, 0x28000000 }, - { 0x1c000cbf, 0x30000000 }, - { 0x1c800cc0, 0x28000004 }, - { 0x1c000cc6, 0x30000000 }, - { 0x1c800cc7, 0x28000001 }, - { 0x1c800cca, 0x28000001 }, - { 0x1c800ccc, 0x30000001 }, - { 0x1c800cd5, 0x28000001 }, - { 0x1c000cde, 0x1c000000 }, - { 0x1c800ce0, 0x1c000001 }, - { 0x1c800ce2, 0x30000001 }, - { 0x1c800ce6, 0x34000009 }, - { 0x1c800cf1, 0x68000001 }, - { 0x24800d02, 0x28000001 }, - { 0x24800d05, 0x1c000007 }, - { 0x24800d0e, 0x1c000002 }, - { 0x24800d12, 0x1c000016 }, - { 0x24800d2a, 0x1c00000f }, - { 0x24800d3e, 0x28000002 }, - { 0x24800d41, 0x30000002 }, - { 0x24800d46, 0x28000002 }, - { 0x24800d4a, 0x28000002 }, - { 0x24000d4d, 0x30000000 }, - { 0x24000d57, 0x28000000 }, - { 0x24800d60, 0x1c000001 }, - { 0x24800d66, 0x34000009 }, - { 0x2f800d82, 0x28000001 }, - { 0x2f800d85, 0x1c000011 }, - { 0x2f800d9a, 0x1c000017 }, - { 0x2f800db3, 0x1c000008 }, - { 0x2f000dbd, 0x1c000000 }, - { 0x2f800dc0, 0x1c000006 }, - { 0x2f000dca, 0x30000000 }, - { 0x2f800dcf, 0x28000002 }, - { 0x2f800dd2, 0x30000002 }, - { 0x2f000dd6, 0x30000000 }, - { 0x2f800dd8, 0x28000007 }, - { 0x2f800df2, 0x28000001 }, - { 0x2f000df4, 0x54000000 }, - { 0x38800e01, 0x1c00002f }, - { 0x38000e31, 0x30000000 }, - { 0x38800e32, 0x1c000001 }, - { 0x38800e34, 0x30000006 }, - { 0x09000e3f, 0x5c000000 }, - { 0x38800e40, 0x1c000005 }, - { 0x38000e46, 0x18000000 }, - { 0x38800e47, 0x30000007 }, - { 0x38000e4f, 0x54000000 }, - { 0x38800e50, 0x34000009 }, - { 0x38800e5a, 0x54000001 }, - { 0x20800e81, 0x1c000001 }, - { 0x20000e84, 0x1c000000 }, - { 0x20800e87, 0x1c000001 }, - { 0x20000e8a, 0x1c000000 }, - { 0x20000e8d, 0x1c000000 }, - { 0x20800e94, 0x1c000003 }, - { 0x20800e99, 0x1c000006 }, - { 0x20800ea1, 0x1c000002 }, - { 0x20000ea5, 0x1c000000 }, - { 0x20000ea7, 0x1c000000 }, - { 0x20800eaa, 0x1c000001 }, - { 0x20800ead, 0x1c000003 }, - { 0x20000eb1, 0x30000000 }, - { 0x20800eb2, 0x1c000001 }, - { 0x20800eb4, 0x30000005 }, - { 0x20800ebb, 0x30000001 }, - { 0x20000ebd, 0x1c000000 }, - { 0x20800ec0, 0x1c000004 }, - { 0x20000ec6, 0x18000000 }, - { 0x20800ec8, 0x30000005 }, - { 0x20800ed0, 0x34000009 }, - { 0x20800edc, 0x1c000001 }, - { 0x39000f00, 0x1c000000 }, - { 0x39800f01, 0x68000002 }, - { 0x39800f04, 0x5400000e }, - { 0x39800f13, 0x68000004 }, - { 0x39800f18, 0x30000001 }, - { 0x39800f1a, 0x68000005 }, - { 0x39800f20, 0x34000009 }, - { 0x39800f2a, 0x3c000009 }, - { 0x39000f34, 0x68000000 }, - { 0x39000f35, 0x30000000 }, - { 0x39000f36, 0x68000000 }, - { 0x39000f37, 0x30000000 }, - { 0x39000f38, 0x68000000 }, - { 0x39000f39, 0x30000000 }, - { 0x39000f3a, 0x58000000 }, - { 0x39000f3b, 0x48000000 }, - { 0x39000f3c, 0x58000000 }, - { 0x39000f3d, 0x48000000 }, - { 0x39800f3e, 0x28000001 }, - { 0x39800f40, 0x1c000007 }, - { 0x39800f49, 0x1c000021 }, - { 0x39800f71, 0x3000000d }, - { 0x39000f7f, 0x28000000 }, - { 0x39800f80, 0x30000004 }, - { 0x39000f85, 0x54000000 }, - { 0x39800f86, 0x30000001 }, - { 0x39800f88, 0x1c000003 }, - { 0x39800f90, 0x30000007 }, - { 0x39800f99, 0x30000023 }, - { 0x39800fbe, 0x68000007 }, - { 0x39000fc6, 0x30000000 }, - { 0x39800fc7, 0x68000005 }, - { 0x39000fcf, 0x68000000 }, - { 0x39800fd0, 0x54000001 }, - { 0x26801000, 0x1c000021 }, - { 0x26801023, 0x1c000004 }, - { 0x26801029, 0x1c000001 }, - { 0x2600102c, 0x28000000 }, - { 0x2680102d, 0x30000003 }, - { 0x26001031, 0x28000000 }, - { 0x26001032, 0x30000000 }, - { 0x26801036, 0x30000001 }, - { 0x26001038, 0x28000000 }, - { 0x26001039, 0x30000000 }, - { 0x26801040, 0x34000009 }, - { 0x2680104a, 0x54000005 }, - { 0x26801050, 0x1c000005 }, - { 0x26801056, 0x28000001 }, - { 0x26801058, 0x30000001 }, - { 0x100010a0, 0x24001c60 }, - { 0x100010a1, 0x24001c60 }, - { 0x100010a2, 0x24001c60 }, - { 0x100010a3, 0x24001c60 }, - { 0x100010a4, 0x24001c60 }, - { 0x100010a5, 0x24001c60 }, - { 0x100010a6, 0x24001c60 }, - { 0x100010a7, 0x24001c60 }, - { 0x100010a8, 0x24001c60 }, - { 0x100010a9, 0x24001c60 }, - { 0x100010aa, 0x24001c60 }, - { 0x100010ab, 0x24001c60 }, - { 0x100010ac, 0x24001c60 }, - { 0x100010ad, 0x24001c60 }, - { 0x100010ae, 0x24001c60 }, - { 0x100010af, 0x24001c60 }, - { 0x100010b0, 0x24001c60 }, - { 0x100010b1, 0x24001c60 }, - { 0x100010b2, 0x24001c60 }, - { 0x100010b3, 0x24001c60 }, - { 0x100010b4, 0x24001c60 }, - { 0x100010b5, 0x24001c60 }, - { 0x100010b6, 0x24001c60 }, - { 0x100010b7, 0x24001c60 }, - { 0x100010b8, 0x24001c60 }, - { 0x100010b9, 0x24001c60 }, - { 0x100010ba, 0x24001c60 }, - { 0x100010bb, 0x24001c60 }, - { 0x100010bc, 0x24001c60 }, - { 0x100010bd, 0x24001c60 }, - { 0x100010be, 0x24001c60 }, - { 0x100010bf, 0x24001c60 }, - { 0x100010c0, 0x24001c60 }, - { 0x100010c1, 0x24001c60 }, - { 0x100010c2, 0x24001c60 }, - { 0x100010c3, 0x24001c60 }, - { 0x100010c4, 0x24001c60 }, - { 0x100010c5, 0x24001c60 }, - { 0x108010d0, 0x1c00002a }, - { 0x090010fb, 0x54000000 }, - { 0x100010fc, 0x18000000 }, - { 0x17801100, 0x1c000059 }, - { 0x1780115f, 0x1c000043 }, - { 0x178011a8, 0x1c000051 }, - { 0x0f801200, 0x1c000048 }, - { 0x0f80124a, 0x1c000003 }, - { 0x0f801250, 0x1c000006 }, - { 0x0f001258, 0x1c000000 }, - { 0x0f80125a, 0x1c000003 }, - { 0x0f801260, 0x1c000028 }, - { 0x0f80128a, 0x1c000003 }, - { 0x0f801290, 0x1c000020 }, - { 0x0f8012b2, 0x1c000003 }, - { 0x0f8012b8, 0x1c000006 }, - { 0x0f0012c0, 0x1c000000 }, - { 0x0f8012c2, 0x1c000003 }, - { 0x0f8012c8, 0x1c00000e }, - { 0x0f8012d8, 0x1c000038 }, - { 0x0f801312, 0x1c000003 }, - { 0x0f801318, 0x1c000042 }, - { 0x0f00135f, 0x30000000 }, - { 0x0f001360, 0x68000000 }, - { 0x0f801361, 0x54000007 }, - { 0x0f801369, 0x3c000013 }, - { 0x0f801380, 0x1c00000f }, - { 0x0f801390, 0x68000009 }, - { 0x088013a0, 0x1c000054 }, - { 0x07801401, 0x1c00026b }, - { 0x0780166d, 0x54000001 }, - { 0x0780166f, 0x1c000007 }, - { 0x28001680, 0x74000000 }, - { 0x28801681, 0x1c000019 }, - { 0x2800169b, 0x58000000 }, - { 0x2800169c, 0x48000000 }, - { 0x2d8016a0, 0x1c00004a }, - { 0x098016eb, 0x54000002 }, - { 0x2d8016ee, 0x38000002 }, - { 0x32801700, 0x1c00000c }, - { 0x3280170e, 0x1c000003 }, - { 0x32801712, 0x30000002 }, - { 0x18801720, 0x1c000011 }, - { 0x18801732, 0x30000002 }, - { 0x09801735, 0x54000001 }, - { 0x06801740, 0x1c000011 }, - { 0x06801752, 0x30000001 }, - { 0x33801760, 0x1c00000c }, - { 0x3380176e, 0x1c000002 }, - { 0x33801772, 0x30000001 }, - { 0x1f801780, 0x1c000033 }, - { 0x1f8017b4, 0x04000001 }, - { 0x1f0017b6, 0x28000000 }, - { 0x1f8017b7, 0x30000006 }, - { 0x1f8017be, 0x28000007 }, - { 0x1f0017c6, 0x30000000 }, - { 0x1f8017c7, 0x28000001 }, - { 0x1f8017c9, 0x3000000a }, - { 0x1f8017d4, 0x54000002 }, - { 0x1f0017d7, 0x18000000 }, - { 0x1f8017d8, 0x54000002 }, - { 0x1f0017db, 0x5c000000 }, - { 0x1f0017dc, 0x1c000000 }, - { 0x1f0017dd, 0x30000000 }, - { 0x1f8017e0, 0x34000009 }, - { 0x1f8017f0, 0x3c000009 }, - { 0x25801800, 0x54000001 }, - { 0x09801802, 0x54000001 }, - { 0x25001804, 0x54000000 }, - { 0x09001805, 0x54000000 }, - { 0x25001806, 0x44000000 }, - { 0x25801807, 0x54000003 }, - { 0x2580180b, 0x30000002 }, - { 0x2500180e, 0x74000000 }, - { 0x25801810, 0x34000009 }, - { 0x25801820, 0x1c000022 }, - { 0x25001843, 0x18000000 }, - { 0x25801844, 0x1c000033 }, - { 0x25801880, 0x1c000028 }, - { 0x250018a9, 0x30000000 }, - { 0x22801900, 0x1c00001c }, - { 0x22801920, 0x30000002 }, - { 0x22801923, 0x28000003 }, - { 0x22801927, 0x30000001 }, - { 0x22801929, 0x28000002 }, - { 0x22801930, 0x28000001 }, - { 0x22001932, 0x30000000 }, - { 0x22801933, 0x28000005 }, - { 0x22801939, 0x30000002 }, - { 0x22001940, 0x68000000 }, - { 0x22801944, 0x54000001 }, - { 0x22801946, 0x34000009 }, - { 0x34801950, 0x1c00001d }, - { 0x34801970, 0x1c000004 }, - { 0x27801980, 0x1c000029 }, - { 0x278019b0, 0x28000010 }, - { 0x278019c1, 0x1c000006 }, - { 0x278019c8, 0x28000001 }, - { 0x278019d0, 0x34000009 }, - { 0x278019de, 0x54000001 }, - { 0x1f8019e0, 0x6800001f }, - { 0x05801a00, 0x1c000016 }, - { 0x05801a17, 0x30000001 }, - { 0x05801a19, 0x28000002 }, - { 0x05801a1e, 0x54000001 }, - { 0x3d801b00, 0x30000003 }, - { 0x3d001b04, 0x28000000 }, - { 0x3d801b05, 0x1c00002e }, - { 0x3d001b34, 0x30000000 }, - { 0x3d001b35, 0x28000000 }, - { 0x3d801b36, 0x30000004 }, - { 0x3d001b3b, 0x28000000 }, - { 0x3d001b3c, 0x30000000 }, - { 0x3d801b3d, 0x28000004 }, - { 0x3d001b42, 0x30000000 }, - { 0x3d801b43, 0x28000001 }, - { 0x3d801b45, 0x1c000006 }, - { 0x3d801b50, 0x34000009 }, - { 0x3d801b5a, 0x54000006 }, - { 0x3d801b61, 0x68000009 }, - { 0x3d801b6b, 0x30000008 }, - { 0x3d801b74, 0x68000008 }, - { 0x21801d00, 0x14000025 }, - { 0x13801d26, 0x14000004 }, - { 0x0c001d2b, 0x14000000 }, - { 0x21801d2c, 0x18000030 }, - { 0x13801d5d, 0x18000004 }, - { 0x21801d62, 0x14000003 }, - { 0x13801d66, 0x14000004 }, - { 0x21801d6b, 0x1400000c }, - { 0x0c001d78, 0x18000000 }, - { 0x21801d79, 0x14000003 }, - { 0x21001d7d, 0x14000ee6 }, - { 0x21801d7e, 0x1400001c }, - { 0x21801d9b, 0x18000023 }, - { 0x13001dbf, 0x18000000 }, - { 0x1b801dc0, 0x3000000a }, - { 0x1b801dfe, 0x30000001 }, - { 0x21001e00, 0x24000001 }, - { 0x21001e01, 0x1400ffff }, - { 0x21001e02, 0x24000001 }, - { 0x21001e03, 0x1400ffff }, - { 0x21001e04, 0x24000001 }, - { 0x21001e05, 0x1400ffff }, - { 0x21001e06, 0x24000001 }, - { 0x21001e07, 0x1400ffff }, - { 0x21001e08, 0x24000001 }, - { 0x21001e09, 0x1400ffff }, - { 0x21001e0a, 0x24000001 }, - { 0x21001e0b, 0x1400ffff }, - { 0x21001e0c, 0x24000001 }, - { 0x21001e0d, 0x1400ffff }, - { 0x21001e0e, 0x24000001 }, - { 0x21001e0f, 0x1400ffff }, - { 0x21001e10, 0x24000001 }, - { 0x21001e11, 0x1400ffff }, - { 0x21001e12, 0x24000001 }, - { 0x21001e13, 0x1400ffff }, - { 0x21001e14, 0x24000001 }, - { 0x21001e15, 0x1400ffff }, - { 0x21001e16, 0x24000001 }, - { 0x21001e17, 0x1400ffff }, - { 0x21001e18, 0x24000001 }, - { 0x21001e19, 0x1400ffff }, - { 0x21001e1a, 0x24000001 }, - { 0x21001e1b, 0x1400ffff }, - { 0x21001e1c, 0x24000001 }, - { 0x21001e1d, 0x1400ffff }, - { 0x21001e1e, 0x24000001 }, - { 0x21001e1f, 0x1400ffff }, - { 0x21001e20, 0x24000001 }, - { 0x21001e21, 0x1400ffff }, - { 0x21001e22, 0x24000001 }, - { 0x21001e23, 0x1400ffff }, - { 0x21001e24, 0x24000001 }, - { 0x21001e25, 0x1400ffff }, - { 0x21001e26, 0x24000001 }, - { 0x21001e27, 0x1400ffff }, - { 0x21001e28, 0x24000001 }, - { 0x21001e29, 0x1400ffff }, - { 0x21001e2a, 0x24000001 }, - { 0x21001e2b, 0x1400ffff }, - { 0x21001e2c, 0x24000001 }, - { 0x21001e2d, 0x1400ffff }, - { 0x21001e2e, 0x24000001 }, - { 0x21001e2f, 0x1400ffff }, - { 0x21001e30, 0x24000001 }, - { 0x21001e31, 0x1400ffff }, - { 0x21001e32, 0x24000001 }, - { 0x21001e33, 0x1400ffff }, - { 0x21001e34, 0x24000001 }, - { 0x21001e35, 0x1400ffff }, - { 0x21001e36, 0x24000001 }, - { 0x21001e37, 0x1400ffff }, - { 0x21001e38, 0x24000001 }, - { 0x21001e39, 0x1400ffff }, - { 0x21001e3a, 0x24000001 }, - { 0x21001e3b, 0x1400ffff }, - { 0x21001e3c, 0x24000001 }, - { 0x21001e3d, 0x1400ffff }, - { 0x21001e3e, 0x24000001 }, - { 0x21001e3f, 0x1400ffff }, - { 0x21001e40, 0x24000001 }, - { 0x21001e41, 0x1400ffff }, - { 0x21001e42, 0x24000001 }, - { 0x21001e43, 0x1400ffff }, - { 0x21001e44, 0x24000001 }, - { 0x21001e45, 0x1400ffff }, - { 0x21001e46, 0x24000001 }, - { 0x21001e47, 0x1400ffff }, - { 0x21001e48, 0x24000001 }, - { 0x21001e49, 0x1400ffff }, - { 0x21001e4a, 0x24000001 }, - { 0x21001e4b, 0x1400ffff }, - { 0x21001e4c, 0x24000001 }, - { 0x21001e4d, 0x1400ffff }, - { 0x21001e4e, 0x24000001 }, - { 0x21001e4f, 0x1400ffff }, - { 0x21001e50, 0x24000001 }, - { 0x21001e51, 0x1400ffff }, - { 0x21001e52, 0x24000001 }, - { 0x21001e53, 0x1400ffff }, - { 0x21001e54, 0x24000001 }, - { 0x21001e55, 0x1400ffff }, - { 0x21001e56, 0x24000001 }, - { 0x21001e57, 0x1400ffff }, - { 0x21001e58, 0x24000001 }, - { 0x21001e59, 0x1400ffff }, - { 0x21001e5a, 0x24000001 }, - { 0x21001e5b, 0x1400ffff }, - { 0x21001e5c, 0x24000001 }, - { 0x21001e5d, 0x1400ffff }, - { 0x21001e5e, 0x24000001 }, - { 0x21001e5f, 0x1400ffff }, - { 0x21001e60, 0x24000001 }, - { 0x21001e61, 0x1400ffff }, - { 0x21001e62, 0x24000001 }, - { 0x21001e63, 0x1400ffff }, - { 0x21001e64, 0x24000001 }, - { 0x21001e65, 0x1400ffff }, - { 0x21001e66, 0x24000001 }, - { 0x21001e67, 0x1400ffff }, - { 0x21001e68, 0x24000001 }, - { 0x21001e69, 0x1400ffff }, - { 0x21001e6a, 0x24000001 }, - { 0x21001e6b, 0x1400ffff }, - { 0x21001e6c, 0x24000001 }, - { 0x21001e6d, 0x1400ffff }, - { 0x21001e6e, 0x24000001 }, - { 0x21001e6f, 0x1400ffff }, - { 0x21001e70, 0x24000001 }, - { 0x21001e71, 0x1400ffff }, - { 0x21001e72, 0x24000001 }, - { 0x21001e73, 0x1400ffff }, - { 0x21001e74, 0x24000001 }, - { 0x21001e75, 0x1400ffff }, - { 0x21001e76, 0x24000001 }, - { 0x21001e77, 0x1400ffff }, - { 0x21001e78, 0x24000001 }, - { 0x21001e79, 0x1400ffff }, - { 0x21001e7a, 0x24000001 }, - { 0x21001e7b, 0x1400ffff }, - { 0x21001e7c, 0x24000001 }, - { 0x21001e7d, 0x1400ffff }, - { 0x21001e7e, 0x24000001 }, - { 0x21001e7f, 0x1400ffff }, - { 0x21001e80, 0x24000001 }, - { 0x21001e81, 0x1400ffff }, - { 0x21001e82, 0x24000001 }, - { 0x21001e83, 0x1400ffff }, - { 0x21001e84, 0x24000001 }, - { 0x21001e85, 0x1400ffff }, - { 0x21001e86, 0x24000001 }, - { 0x21001e87, 0x1400ffff }, - { 0x21001e88, 0x24000001 }, - { 0x21001e89, 0x1400ffff }, - { 0x21001e8a, 0x24000001 }, - { 0x21001e8b, 0x1400ffff }, - { 0x21001e8c, 0x24000001 }, - { 0x21001e8d, 0x1400ffff }, - { 0x21001e8e, 0x24000001 }, - { 0x21001e8f, 0x1400ffff }, - { 0x21001e90, 0x24000001 }, - { 0x21001e91, 0x1400ffff }, - { 0x21001e92, 0x24000001 }, - { 0x21001e93, 0x1400ffff }, - { 0x21001e94, 0x24000001 }, - { 0x21001e95, 0x1400ffff }, - { 0x21801e96, 0x14000004 }, - { 0x21001e9b, 0x1400ffc5 }, - { 0x21001ea0, 0x24000001 }, - { 0x21001ea1, 0x1400ffff }, - { 0x21001ea2, 0x24000001 }, - { 0x21001ea3, 0x1400ffff }, - { 0x21001ea4, 0x24000001 }, - { 0x21001ea5, 0x1400ffff }, - { 0x21001ea6, 0x24000001 }, - { 0x21001ea7, 0x1400ffff }, - { 0x21001ea8, 0x24000001 }, - { 0x21001ea9, 0x1400ffff }, - { 0x21001eaa, 0x24000001 }, - { 0x21001eab, 0x1400ffff }, - { 0x21001eac, 0x24000001 }, - { 0x21001ead, 0x1400ffff }, - { 0x21001eae, 0x24000001 }, - { 0x21001eaf, 0x1400ffff }, - { 0x21001eb0, 0x24000001 }, - { 0x21001eb1, 0x1400ffff }, - { 0x21001eb2, 0x24000001 }, - { 0x21001eb3, 0x1400ffff }, - { 0x21001eb4, 0x24000001 }, - { 0x21001eb5, 0x1400ffff }, - { 0x21001eb6, 0x24000001 }, - { 0x21001eb7, 0x1400ffff }, - { 0x21001eb8, 0x24000001 }, - { 0x21001eb9, 0x1400ffff }, - { 0x21001eba, 0x24000001 }, - { 0x21001ebb, 0x1400ffff }, - { 0x21001ebc, 0x24000001 }, - { 0x21001ebd, 0x1400ffff }, - { 0x21001ebe, 0x24000001 }, - { 0x21001ebf, 0x1400ffff }, - { 0x21001ec0, 0x24000001 }, - { 0x21001ec1, 0x1400ffff }, - { 0x21001ec2, 0x24000001 }, - { 0x21001ec3, 0x1400ffff }, - { 0x21001ec4, 0x24000001 }, - { 0x21001ec5, 0x1400ffff }, - { 0x21001ec6, 0x24000001 }, - { 0x21001ec7, 0x1400ffff }, - { 0x21001ec8, 0x24000001 }, - { 0x21001ec9, 0x1400ffff }, - { 0x21001eca, 0x24000001 }, - { 0x21001ecb, 0x1400ffff }, - { 0x21001ecc, 0x24000001 }, - { 0x21001ecd, 0x1400ffff }, - { 0x21001ece, 0x24000001 }, - { 0x21001ecf, 0x1400ffff }, - { 0x21001ed0, 0x24000001 }, - { 0x21001ed1, 0x1400ffff }, - { 0x21001ed2, 0x24000001 }, - { 0x21001ed3, 0x1400ffff }, - { 0x21001ed4, 0x24000001 }, - { 0x21001ed5, 0x1400ffff }, - { 0x21001ed6, 0x24000001 }, - { 0x21001ed7, 0x1400ffff }, - { 0x21001ed8, 0x24000001 }, - { 0x21001ed9, 0x1400ffff }, - { 0x21001eda, 0x24000001 }, - { 0x21001edb, 0x1400ffff }, - { 0x21001edc, 0x24000001 }, - { 0x21001edd, 0x1400ffff }, - { 0x21001ede, 0x24000001 }, - { 0x21001edf, 0x1400ffff }, - { 0x21001ee0, 0x24000001 }, - { 0x21001ee1, 0x1400ffff }, - { 0x21001ee2, 0x24000001 }, - { 0x21001ee3, 0x1400ffff }, - { 0x21001ee4, 0x24000001 }, - { 0x21001ee5, 0x1400ffff }, - { 0x21001ee6, 0x24000001 }, - { 0x21001ee7, 0x1400ffff }, - { 0x21001ee8, 0x24000001 }, - { 0x21001ee9, 0x1400ffff }, - { 0x21001eea, 0x24000001 }, - { 0x21001eeb, 0x1400ffff }, - { 0x21001eec, 0x24000001 }, - { 0x21001eed, 0x1400ffff }, - { 0x21001eee, 0x24000001 }, - { 0x21001eef, 0x1400ffff }, - { 0x21001ef0, 0x24000001 }, - { 0x21001ef1, 0x1400ffff }, - { 0x21001ef2, 0x24000001 }, - { 0x21001ef3, 0x1400ffff }, - { 0x21001ef4, 0x24000001 }, - { 0x21001ef5, 0x1400ffff }, - { 0x21001ef6, 0x24000001 }, - { 0x21001ef7, 0x1400ffff }, - { 0x21001ef8, 0x24000001 }, - { 0x21001ef9, 0x1400ffff }, - { 0x13001f00, 0x14000008 }, - { 0x13001f01, 0x14000008 }, - { 0x13001f02, 0x14000008 }, - { 0x13001f03, 0x14000008 }, - { 0x13001f04, 0x14000008 }, - { 0x13001f05, 0x14000008 }, - { 0x13001f06, 0x14000008 }, - { 0x13001f07, 0x14000008 }, - { 0x13001f08, 0x2400fff8 }, - { 0x13001f09, 0x2400fff8 }, - { 0x13001f0a, 0x2400fff8 }, - { 0x13001f0b, 0x2400fff8 }, - { 0x13001f0c, 0x2400fff8 }, - { 0x13001f0d, 0x2400fff8 }, - { 0x13001f0e, 0x2400fff8 }, - { 0x13001f0f, 0x2400fff8 }, - { 0x13001f10, 0x14000008 }, - { 0x13001f11, 0x14000008 }, - { 0x13001f12, 0x14000008 }, - { 0x13001f13, 0x14000008 }, - { 0x13001f14, 0x14000008 }, - { 0x13001f15, 0x14000008 }, - { 0x13001f18, 0x2400fff8 }, - { 0x13001f19, 0x2400fff8 }, - { 0x13001f1a, 0x2400fff8 }, - { 0x13001f1b, 0x2400fff8 }, - { 0x13001f1c, 0x2400fff8 }, - { 0x13001f1d, 0x2400fff8 }, - { 0x13001f20, 0x14000008 }, - { 0x13001f21, 0x14000008 }, - { 0x13001f22, 0x14000008 }, - { 0x13001f23, 0x14000008 }, - { 0x13001f24, 0x14000008 }, - { 0x13001f25, 0x14000008 }, - { 0x13001f26, 0x14000008 }, - { 0x13001f27, 0x14000008 }, - { 0x13001f28, 0x2400fff8 }, - { 0x13001f29, 0x2400fff8 }, - { 0x13001f2a, 0x2400fff8 }, - { 0x13001f2b, 0x2400fff8 }, - { 0x13001f2c, 0x2400fff8 }, - { 0x13001f2d, 0x2400fff8 }, - { 0x13001f2e, 0x2400fff8 }, - { 0x13001f2f, 0x2400fff8 }, - { 0x13001f30, 0x14000008 }, - { 0x13001f31, 0x14000008 }, - { 0x13001f32, 0x14000008 }, - { 0x13001f33, 0x14000008 }, - { 0x13001f34, 0x14000008 }, - { 0x13001f35, 0x14000008 }, - { 0x13001f36, 0x14000008 }, - { 0x13001f37, 0x14000008 }, - { 0x13001f38, 0x2400fff8 }, - { 0x13001f39, 0x2400fff8 }, - { 0x13001f3a, 0x2400fff8 }, - { 0x13001f3b, 0x2400fff8 }, - { 0x13001f3c, 0x2400fff8 }, - { 0x13001f3d, 0x2400fff8 }, - { 0x13001f3e, 0x2400fff8 }, - { 0x13001f3f, 0x2400fff8 }, - { 0x13001f40, 0x14000008 }, - { 0x13001f41, 0x14000008 }, - { 0x13001f42, 0x14000008 }, - { 0x13001f43, 0x14000008 }, - { 0x13001f44, 0x14000008 }, - { 0x13001f45, 0x14000008 }, - { 0x13001f48, 0x2400fff8 }, - { 0x13001f49, 0x2400fff8 }, - { 0x13001f4a, 0x2400fff8 }, - { 0x13001f4b, 0x2400fff8 }, - { 0x13001f4c, 0x2400fff8 }, - { 0x13001f4d, 0x2400fff8 }, - { 0x13001f50, 0x14000000 }, - { 0x13001f51, 0x14000008 }, - { 0x13001f52, 0x14000000 }, - { 0x13001f53, 0x14000008 }, - { 0x13001f54, 0x14000000 }, - { 0x13001f55, 0x14000008 }, - { 0x13001f56, 0x14000000 }, - { 0x13001f57, 0x14000008 }, - { 0x13001f59, 0x2400fff8 }, - { 0x13001f5b, 0x2400fff8 }, - { 0x13001f5d, 0x2400fff8 }, - { 0x13001f5f, 0x2400fff8 }, - { 0x13001f60, 0x14000008 }, - { 0x13001f61, 0x14000008 }, - { 0x13001f62, 0x14000008 }, - { 0x13001f63, 0x14000008 }, - { 0x13001f64, 0x14000008 }, - { 0x13001f65, 0x14000008 }, - { 0x13001f66, 0x14000008 }, - { 0x13001f67, 0x14000008 }, - { 0x13001f68, 0x2400fff8 }, - { 0x13001f69, 0x2400fff8 }, - { 0x13001f6a, 0x2400fff8 }, - { 0x13001f6b, 0x2400fff8 }, - { 0x13001f6c, 0x2400fff8 }, - { 0x13001f6d, 0x2400fff8 }, - { 0x13001f6e, 0x2400fff8 }, - { 0x13001f6f, 0x2400fff8 }, - { 0x13001f70, 0x1400004a }, - { 0x13001f71, 0x1400004a }, - { 0x13001f72, 0x14000056 }, - { 0x13001f73, 0x14000056 }, - { 0x13001f74, 0x14000056 }, - { 0x13001f75, 0x14000056 }, - { 0x13001f76, 0x14000064 }, - { 0x13001f77, 0x14000064 }, - { 0x13001f78, 0x14000080 }, - { 0x13001f79, 0x14000080 }, - { 0x13001f7a, 0x14000070 }, - { 0x13001f7b, 0x14000070 }, - { 0x13001f7c, 0x1400007e }, - { 0x13001f7d, 0x1400007e }, - { 0x13001f80, 0x14000008 }, - { 0x13001f81, 0x14000008 }, - { 0x13001f82, 0x14000008 }, - { 0x13001f83, 0x14000008 }, - { 0x13001f84, 0x14000008 }, - { 0x13001f85, 0x14000008 }, - { 0x13001f86, 0x14000008 }, - { 0x13001f87, 0x14000008 }, - { 0x13001f88, 0x2000fff8 }, - { 0x13001f89, 0x2000fff8 }, - { 0x13001f8a, 0x2000fff8 }, - { 0x13001f8b, 0x2000fff8 }, - { 0x13001f8c, 0x2000fff8 }, - { 0x13001f8d, 0x2000fff8 }, - { 0x13001f8e, 0x2000fff8 }, - { 0x13001f8f, 0x2000fff8 }, - { 0x13001f90, 0x14000008 }, - { 0x13001f91, 0x14000008 }, - { 0x13001f92, 0x14000008 }, - { 0x13001f93, 0x14000008 }, - { 0x13001f94, 0x14000008 }, - { 0x13001f95, 0x14000008 }, - { 0x13001f96, 0x14000008 }, - { 0x13001f97, 0x14000008 }, - { 0x13001f98, 0x2000fff8 }, - { 0x13001f99, 0x2000fff8 }, - { 0x13001f9a, 0x2000fff8 }, - { 0x13001f9b, 0x2000fff8 }, - { 0x13001f9c, 0x2000fff8 }, - { 0x13001f9d, 0x2000fff8 }, - { 0x13001f9e, 0x2000fff8 }, - { 0x13001f9f, 0x2000fff8 }, - { 0x13001fa0, 0x14000008 }, - { 0x13001fa1, 0x14000008 }, - { 0x13001fa2, 0x14000008 }, - { 0x13001fa3, 0x14000008 }, - { 0x13001fa4, 0x14000008 }, - { 0x13001fa5, 0x14000008 }, - { 0x13001fa6, 0x14000008 }, - { 0x13001fa7, 0x14000008 }, - { 0x13001fa8, 0x2000fff8 }, - { 0x13001fa9, 0x2000fff8 }, - { 0x13001faa, 0x2000fff8 }, - { 0x13001fab, 0x2000fff8 }, - { 0x13001fac, 0x2000fff8 }, - { 0x13001fad, 0x2000fff8 }, - { 0x13001fae, 0x2000fff8 }, - { 0x13001faf, 0x2000fff8 }, - { 0x13001fb0, 0x14000008 }, - { 0x13001fb1, 0x14000008 }, - { 0x13001fb2, 0x14000000 }, - { 0x13001fb3, 0x14000009 }, - { 0x13001fb4, 0x14000000 }, - { 0x13801fb6, 0x14000001 }, - { 0x13001fb8, 0x2400fff8 }, - { 0x13001fb9, 0x2400fff8 }, - { 0x13001fba, 0x2400ffb6 }, - { 0x13001fbb, 0x2400ffb6 }, - { 0x13001fbc, 0x2000fff7 }, - { 0x13001fbd, 0x60000000 }, - { 0x13001fbe, 0x1400e3db }, - { 0x13801fbf, 0x60000002 }, - { 0x13001fc2, 0x14000000 }, - { 0x13001fc3, 0x14000009 }, - { 0x13001fc4, 0x14000000 }, - { 0x13801fc6, 0x14000001 }, - { 0x13001fc8, 0x2400ffaa }, - { 0x13001fc9, 0x2400ffaa }, - { 0x13001fca, 0x2400ffaa }, - { 0x13001fcb, 0x2400ffaa }, - { 0x13001fcc, 0x2000fff7 }, - { 0x13801fcd, 0x60000002 }, - { 0x13001fd0, 0x14000008 }, - { 0x13001fd1, 0x14000008 }, - { 0x13801fd2, 0x14000001 }, - { 0x13801fd6, 0x14000001 }, - { 0x13001fd8, 0x2400fff8 }, - { 0x13001fd9, 0x2400fff8 }, - { 0x13001fda, 0x2400ff9c }, - { 0x13001fdb, 0x2400ff9c }, - { 0x13801fdd, 0x60000002 }, - { 0x13001fe0, 0x14000008 }, - { 0x13001fe1, 0x14000008 }, - { 0x13801fe2, 0x14000002 }, - { 0x13001fe5, 0x14000007 }, - { 0x13801fe6, 0x14000001 }, - { 0x13001fe8, 0x2400fff8 }, - { 0x13001fe9, 0x2400fff8 }, - { 0x13001fea, 0x2400ff90 }, - { 0x13001feb, 0x2400ff90 }, - { 0x13001fec, 0x2400fff9 }, - { 0x13801fed, 0x60000002 }, - { 0x13001ff2, 0x14000000 }, - { 0x13001ff3, 0x14000009 }, - { 0x13001ff4, 0x14000000 }, - { 0x13801ff6, 0x14000001 }, - { 0x13001ff8, 0x2400ff80 }, - { 0x13001ff9, 0x2400ff80 }, - { 0x13001ffa, 0x2400ff82 }, - { 0x13001ffb, 0x2400ff82 }, - { 0x13001ffc, 0x2000fff7 }, - { 0x13801ffd, 0x60000001 }, - { 0x09802000, 0x7400000a }, - { 0x0900200b, 0x04000000 }, - { 0x1b80200c, 0x04000001 }, - { 0x0980200e, 0x04000001 }, - { 0x09802010, 0x44000005 }, - { 0x09802016, 0x54000001 }, - { 0x09002018, 0x50000000 }, - { 0x09002019, 0x4c000000 }, - { 0x0900201a, 0x58000000 }, - { 0x0980201b, 0x50000001 }, - { 0x0900201d, 0x4c000000 }, - { 0x0900201e, 0x58000000 }, - { 0x0900201f, 0x50000000 }, - { 0x09802020, 0x54000007 }, - { 0x09002028, 0x6c000000 }, - { 0x09002029, 0x70000000 }, - { 0x0980202a, 0x04000004 }, - { 0x0900202f, 0x74000000 }, - { 0x09802030, 0x54000008 }, - { 0x09002039, 0x50000000 }, - { 0x0900203a, 0x4c000000 }, - { 0x0980203b, 0x54000003 }, - { 0x0980203f, 0x40000001 }, - { 0x09802041, 0x54000002 }, - { 0x09002044, 0x64000000 }, - { 0x09002045, 0x58000000 }, - { 0x09002046, 0x48000000 }, - { 0x09802047, 0x5400000a }, - { 0x09002052, 0x64000000 }, - { 0x09002053, 0x54000000 }, - { 0x09002054, 0x40000000 }, - { 0x09802055, 0x54000009 }, - { 0x0900205f, 0x74000000 }, - { 0x09802060, 0x04000003 }, - { 0x0980206a, 0x04000005 }, - { 0x09002070, 0x3c000000 }, - { 0x21002071, 0x14000000 }, - { 0x09802074, 0x3c000005 }, - { 0x0980207a, 0x64000002 }, - { 0x0900207d, 0x58000000 }, - { 0x0900207e, 0x48000000 }, - { 0x2100207f, 0x14000000 }, - { 0x09802080, 0x3c000009 }, - { 0x0980208a, 0x64000002 }, - { 0x0900208d, 0x58000000 }, - { 0x0900208e, 0x48000000 }, - { 0x21802090, 0x18000004 }, - { 0x098020a0, 0x5c000015 }, - { 0x1b8020d0, 0x3000000c }, - { 0x1b8020dd, 0x2c000003 }, - { 0x1b0020e1, 0x30000000 }, - { 0x1b8020e2, 0x2c000002 }, - { 0x1b8020e5, 0x3000000a }, - { 0x09802100, 0x68000001 }, - { 0x09002102, 0x24000000 }, - { 0x09802103, 0x68000003 }, - { 0x09002107, 0x24000000 }, - { 0x09802108, 0x68000001 }, - { 0x0900210a, 0x14000000 }, - { 0x0980210b, 0x24000002 }, - { 0x0980210e, 0x14000001 }, - { 0x09802110, 0x24000002 }, - { 0x09002113, 0x14000000 }, - { 0x09002114, 0x68000000 }, - { 0x09002115, 0x24000000 }, - { 0x09802116, 0x68000002 }, - { 0x09802119, 0x24000004 }, - { 0x0980211e, 0x68000005 }, - { 0x09002124, 0x24000000 }, - { 0x09002125, 0x68000000 }, - { 0x13002126, 0x2400e2a3 }, - { 0x09002127, 0x68000000 }, - { 0x09002128, 0x24000000 }, - { 0x09002129, 0x68000000 }, - { 0x2100212a, 0x2400df41 }, - { 0x2100212b, 0x2400dfba }, - { 0x0980212c, 0x24000001 }, - { 0x0900212e, 0x68000000 }, - { 0x0900212f, 0x14000000 }, - { 0x09802130, 0x24000001 }, - { 0x21002132, 0x2400001c }, - { 0x09002133, 0x24000000 }, - { 0x09002134, 0x14000000 }, - { 0x09802135, 0x1c000003 }, - { 0x09002139, 0x14000000 }, - { 0x0980213a, 0x68000001 }, - { 0x0980213c, 0x14000001 }, - { 0x0980213e, 0x24000001 }, - { 0x09802140, 0x64000004 }, - { 0x09002145, 0x24000000 }, - { 0x09802146, 0x14000003 }, - { 0x0900214a, 0x68000000 }, - { 0x0900214b, 0x64000000 }, - { 0x0980214c, 0x68000001 }, - { 0x2100214e, 0x1400ffe4 }, - { 0x09802153, 0x3c00000c }, - { 0x09002160, 0x38000010 }, - { 0x09002161, 0x38000010 }, - { 0x09002162, 0x38000010 }, - { 0x09002163, 0x38000010 }, - { 0x09002164, 0x38000010 }, - { 0x09002165, 0x38000010 }, - { 0x09002166, 0x38000010 }, - { 0x09002167, 0x38000010 }, - { 0x09002168, 0x38000010 }, - { 0x09002169, 0x38000010 }, - { 0x0900216a, 0x38000010 }, - { 0x0900216b, 0x38000010 }, - { 0x0900216c, 0x38000010 }, - { 0x0900216d, 0x38000010 }, - { 0x0900216e, 0x38000010 }, - { 0x0900216f, 0x38000010 }, - { 0x09002170, 0x3800fff0 }, - { 0x09002171, 0x3800fff0 }, - { 0x09002172, 0x3800fff0 }, - { 0x09002173, 0x3800fff0 }, - { 0x09002174, 0x3800fff0 }, - { 0x09002175, 0x3800fff0 }, - { 0x09002176, 0x3800fff0 }, - { 0x09002177, 0x3800fff0 }, - { 0x09002178, 0x3800fff0 }, - { 0x09002179, 0x3800fff0 }, - { 0x0900217a, 0x3800fff0 }, - { 0x0900217b, 0x3800fff0 }, - { 0x0900217c, 0x3800fff0 }, - { 0x0900217d, 0x3800fff0 }, - { 0x0900217e, 0x3800fff0 }, - { 0x0900217f, 0x3800fff0 }, - { 0x09802180, 0x38000002 }, - { 0x09002183, 0x24000001 }, - { 0x21002184, 0x1400ffff }, - { 0x09802190, 0x64000004 }, - { 0x09802195, 0x68000004 }, - { 0x0980219a, 0x64000001 }, - { 0x0980219c, 0x68000003 }, - { 0x090021a0, 0x64000000 }, - { 0x098021a1, 0x68000001 }, - { 0x090021a3, 0x64000000 }, - { 0x098021a4, 0x68000001 }, - { 0x090021a6, 0x64000000 }, - { 0x098021a7, 0x68000006 }, - { 0x090021ae, 0x64000000 }, - { 0x098021af, 0x6800001e }, - { 0x098021ce, 0x64000001 }, - { 0x098021d0, 0x68000001 }, - { 0x090021d2, 0x64000000 }, - { 0x090021d3, 0x68000000 }, - { 0x090021d4, 0x64000000 }, - { 0x098021d5, 0x6800001e }, - { 0x098021f4, 0x6400010b }, - { 0x09802300, 0x68000007 }, - { 0x09802308, 0x64000003 }, - { 0x0980230c, 0x68000013 }, - { 0x09802320, 0x64000001 }, - { 0x09802322, 0x68000006 }, - { 0x09002329, 0x58000000 }, - { 0x0900232a, 0x48000000 }, - { 0x0980232b, 0x68000050 }, - { 0x0900237c, 0x64000000 }, - { 0x0980237d, 0x6800001d }, - { 0x0980239b, 0x64000018 }, - { 0x098023b4, 0x68000027 }, - { 0x098023dc, 0x64000005 }, - { 0x098023e2, 0x68000005 }, - { 0x09802400, 0x68000026 }, - { 0x09802440, 0x6800000a }, - { 0x09802460, 0x3c00003b }, - { 0x0980249c, 0x68000019 }, - { 0x090024b6, 0x6800001a }, - { 0x090024b7, 0x6800001a }, - { 0x090024b8, 0x6800001a }, - { 0x090024b9, 0x6800001a }, - { 0x090024ba, 0x6800001a }, - { 0x090024bb, 0x6800001a }, - { 0x090024bc, 0x6800001a }, - { 0x090024bd, 0x6800001a }, - { 0x090024be, 0x6800001a }, - { 0x090024bf, 0x6800001a }, - { 0x090024c0, 0x6800001a }, - { 0x090024c1, 0x6800001a }, - { 0x090024c2, 0x6800001a }, - { 0x090024c3, 0x6800001a }, - { 0x090024c4, 0x6800001a }, - { 0x090024c5, 0x6800001a }, - { 0x090024c6, 0x6800001a }, - { 0x090024c7, 0x6800001a }, - { 0x090024c8, 0x6800001a }, - { 0x090024c9, 0x6800001a }, - { 0x090024ca, 0x6800001a }, - { 0x090024cb, 0x6800001a }, - { 0x090024cc, 0x6800001a }, - { 0x090024cd, 0x6800001a }, - { 0x090024ce, 0x6800001a }, - { 0x090024cf, 0x6800001a }, - { 0x090024d0, 0x6800ffe6 }, - { 0x090024d1, 0x6800ffe6 }, - { 0x090024d2, 0x6800ffe6 }, - { 0x090024d3, 0x6800ffe6 }, - { 0x090024d4, 0x6800ffe6 }, - { 0x090024d5, 0x6800ffe6 }, - { 0x090024d6, 0x6800ffe6 }, - { 0x090024d7, 0x6800ffe6 }, - { 0x090024d8, 0x6800ffe6 }, - { 0x090024d9, 0x6800ffe6 }, - { 0x090024da, 0x6800ffe6 }, - { 0x090024db, 0x6800ffe6 }, - { 0x090024dc, 0x6800ffe6 }, - { 0x090024dd, 0x6800ffe6 }, - { 0x090024de, 0x6800ffe6 }, - { 0x090024df, 0x6800ffe6 }, - { 0x090024e0, 0x6800ffe6 }, - { 0x090024e1, 0x6800ffe6 }, - { 0x090024e2, 0x6800ffe6 }, - { 0x090024e3, 0x6800ffe6 }, - { 0x090024e4, 0x6800ffe6 }, - { 0x090024e5, 0x6800ffe6 }, - { 0x090024e6, 0x6800ffe6 }, - { 0x090024e7, 0x6800ffe6 }, - { 0x090024e8, 0x6800ffe6 }, - { 0x090024e9, 0x6800ffe6 }, - { 0x098024ea, 0x3c000015 }, - { 0x09802500, 0x680000b6 }, - { 0x090025b7, 0x64000000 }, - { 0x098025b8, 0x68000008 }, - { 0x090025c1, 0x64000000 }, - { 0x098025c2, 0x68000035 }, - { 0x098025f8, 0x64000007 }, - { 0x09802600, 0x6800006e }, - { 0x0900266f, 0x64000000 }, - { 0x09802670, 0x6800002c }, - { 0x098026a0, 0x68000012 }, - { 0x09802701, 0x68000003 }, - { 0x09802706, 0x68000003 }, - { 0x0980270c, 0x6800001b }, - { 0x09802729, 0x68000022 }, - { 0x0900274d, 0x68000000 }, - { 0x0980274f, 0x68000003 }, - { 0x09002756, 0x68000000 }, - { 0x09802758, 0x68000006 }, - { 0x09802761, 0x68000006 }, - { 0x09002768, 0x58000000 }, - { 0x09002769, 0x48000000 }, - { 0x0900276a, 0x58000000 }, - { 0x0900276b, 0x48000000 }, - { 0x0900276c, 0x58000000 }, - { 0x0900276d, 0x48000000 }, - { 0x0900276e, 0x58000000 }, - { 0x0900276f, 0x48000000 }, - { 0x09002770, 0x58000000 }, - { 0x09002771, 0x48000000 }, - { 0x09002772, 0x58000000 }, - { 0x09002773, 0x48000000 }, - { 0x09002774, 0x58000000 }, - { 0x09002775, 0x48000000 }, - { 0x09802776, 0x3c00001d }, - { 0x09002794, 0x68000000 }, - { 0x09802798, 0x68000017 }, - { 0x098027b1, 0x6800000d }, - { 0x098027c0, 0x64000004 }, - { 0x090027c5, 0x58000000 }, - { 0x090027c6, 0x48000000 }, - { 0x098027c7, 0x64000003 }, - { 0x098027d0, 0x64000015 }, - { 0x090027e6, 0x58000000 }, - { 0x090027e7, 0x48000000 }, - { 0x090027e8, 0x58000000 }, - { 0x090027e9, 0x48000000 }, - { 0x090027ea, 0x58000000 }, - { 0x090027eb, 0x48000000 }, - { 0x098027f0, 0x6400000f }, - { 0x04802800, 0x680000ff }, - { 0x09802900, 0x64000082 }, - { 0x09002983, 0x58000000 }, - { 0x09002984, 0x48000000 }, - { 0x09002985, 0x58000000 }, - { 0x09002986, 0x48000000 }, - { 0x09002987, 0x58000000 }, - { 0x09002988, 0x48000000 }, - { 0x09002989, 0x58000000 }, - { 0x0900298a, 0x48000000 }, - { 0x0900298b, 0x58000000 }, - { 0x0900298c, 0x48000000 }, - { 0x0900298d, 0x58000000 }, - { 0x0900298e, 0x48000000 }, - { 0x0900298f, 0x58000000 }, - { 0x09002990, 0x48000000 }, - { 0x09002991, 0x58000000 }, - { 0x09002992, 0x48000000 }, - { 0x09002993, 0x58000000 }, - { 0x09002994, 0x48000000 }, - { 0x09002995, 0x58000000 }, - { 0x09002996, 0x48000000 }, - { 0x09002997, 0x58000000 }, - { 0x09002998, 0x48000000 }, - { 0x09802999, 0x6400003e }, - { 0x090029d8, 0x58000000 }, - { 0x090029d9, 0x48000000 }, - { 0x090029da, 0x58000000 }, - { 0x090029db, 0x48000000 }, - { 0x098029dc, 0x6400001f }, - { 0x090029fc, 0x58000000 }, - { 0x090029fd, 0x48000000 }, - { 0x098029fe, 0x64000101 }, - { 0x09802b00, 0x6800001a }, - { 0x09802b20, 0x68000003 }, - { 0x11002c00, 0x24000030 }, - { 0x11002c01, 0x24000030 }, - { 0x11002c02, 0x24000030 }, - { 0x11002c03, 0x24000030 }, - { 0x11002c04, 0x24000030 }, - { 0x11002c05, 0x24000030 }, - { 0x11002c06, 0x24000030 }, - { 0x11002c07, 0x24000030 }, - { 0x11002c08, 0x24000030 }, - { 0x11002c09, 0x24000030 }, - { 0x11002c0a, 0x24000030 }, - { 0x11002c0b, 0x24000030 }, - { 0x11002c0c, 0x24000030 }, - { 0x11002c0d, 0x24000030 }, - { 0x11002c0e, 0x24000030 }, - { 0x11002c0f, 0x24000030 }, - { 0x11002c10, 0x24000030 }, - { 0x11002c11, 0x24000030 }, - { 0x11002c12, 0x24000030 }, - { 0x11002c13, 0x24000030 }, - { 0x11002c14, 0x24000030 }, - { 0x11002c15, 0x24000030 }, - { 0x11002c16, 0x24000030 }, - { 0x11002c17, 0x24000030 }, - { 0x11002c18, 0x24000030 }, - { 0x11002c19, 0x24000030 }, - { 0x11002c1a, 0x24000030 }, - { 0x11002c1b, 0x24000030 }, - { 0x11002c1c, 0x24000030 }, - { 0x11002c1d, 0x24000030 }, - { 0x11002c1e, 0x24000030 }, - { 0x11002c1f, 0x24000030 }, - { 0x11002c20, 0x24000030 }, - { 0x11002c21, 0x24000030 }, - { 0x11002c22, 0x24000030 }, - { 0x11002c23, 0x24000030 }, - { 0x11002c24, 0x24000030 }, - { 0x11002c25, 0x24000030 }, - { 0x11002c26, 0x24000030 }, - { 0x11002c27, 0x24000030 }, - { 0x11002c28, 0x24000030 }, - { 0x11002c29, 0x24000030 }, - { 0x11002c2a, 0x24000030 }, - { 0x11002c2b, 0x24000030 }, - { 0x11002c2c, 0x24000030 }, - { 0x11002c2d, 0x24000030 }, - { 0x11002c2e, 0x24000030 }, - { 0x11002c30, 0x1400ffd0 }, - { 0x11002c31, 0x1400ffd0 }, - { 0x11002c32, 0x1400ffd0 }, - { 0x11002c33, 0x1400ffd0 }, - { 0x11002c34, 0x1400ffd0 }, - { 0x11002c35, 0x1400ffd0 }, - { 0x11002c36, 0x1400ffd0 }, - { 0x11002c37, 0x1400ffd0 }, - { 0x11002c38, 0x1400ffd0 }, - { 0x11002c39, 0x1400ffd0 }, - { 0x11002c3a, 0x1400ffd0 }, - { 0x11002c3b, 0x1400ffd0 }, - { 0x11002c3c, 0x1400ffd0 }, - { 0x11002c3d, 0x1400ffd0 }, - { 0x11002c3e, 0x1400ffd0 }, - { 0x11002c3f, 0x1400ffd0 }, - { 0x11002c40, 0x1400ffd0 }, - { 0x11002c41, 0x1400ffd0 }, - { 0x11002c42, 0x1400ffd0 }, - { 0x11002c43, 0x1400ffd0 }, - { 0x11002c44, 0x1400ffd0 }, - { 0x11002c45, 0x1400ffd0 }, - { 0x11002c46, 0x1400ffd0 }, - { 0x11002c47, 0x1400ffd0 }, - { 0x11002c48, 0x1400ffd0 }, - { 0x11002c49, 0x1400ffd0 }, - { 0x11002c4a, 0x1400ffd0 }, - { 0x11002c4b, 0x1400ffd0 }, - { 0x11002c4c, 0x1400ffd0 }, - { 0x11002c4d, 0x1400ffd0 }, - { 0x11002c4e, 0x1400ffd0 }, - { 0x11002c4f, 0x1400ffd0 }, - { 0x11002c50, 0x1400ffd0 }, - { 0x11002c51, 0x1400ffd0 }, - { 0x11002c52, 0x1400ffd0 }, - { 0x11002c53, 0x1400ffd0 }, - { 0x11002c54, 0x1400ffd0 }, - { 0x11002c55, 0x1400ffd0 }, - { 0x11002c56, 0x1400ffd0 }, - { 0x11002c57, 0x1400ffd0 }, - { 0x11002c58, 0x1400ffd0 }, - { 0x11002c59, 0x1400ffd0 }, - { 0x11002c5a, 0x1400ffd0 }, - { 0x11002c5b, 0x1400ffd0 }, - { 0x11002c5c, 0x1400ffd0 }, - { 0x11002c5d, 0x1400ffd0 }, - { 0x11002c5e, 0x1400ffd0 }, - { 0x21002c60, 0x24000001 }, - { 0x21002c61, 0x1400ffff }, - { 0x21002c62, 0x2400d609 }, - { 0x21002c63, 0x2400f11a }, - { 0x21002c64, 0x2400d619 }, - { 0x21002c65, 0x1400d5d5 }, - { 0x21002c66, 0x1400d5d8 }, - { 0x21002c67, 0x24000001 }, - { 0x21002c68, 0x1400ffff }, - { 0x21002c69, 0x24000001 }, - { 0x21002c6a, 0x1400ffff }, - { 0x21002c6b, 0x24000001 }, - { 0x21002c6c, 0x1400ffff }, - { 0x21002c74, 0x14000000 }, - { 0x21002c75, 0x24000001 }, - { 0x21002c76, 0x1400ffff }, - { 0x21002c77, 0x14000000 }, - { 0x0a002c80, 0x24000001 }, - { 0x0a002c81, 0x1400ffff }, - { 0x0a002c82, 0x24000001 }, - { 0x0a002c83, 0x1400ffff }, - { 0x0a002c84, 0x24000001 }, - { 0x0a002c85, 0x1400ffff }, - { 0x0a002c86, 0x24000001 }, - { 0x0a002c87, 0x1400ffff }, - { 0x0a002c88, 0x24000001 }, - { 0x0a002c89, 0x1400ffff }, - { 0x0a002c8a, 0x24000001 }, - { 0x0a002c8b, 0x1400ffff }, - { 0x0a002c8c, 0x24000001 }, - { 0x0a002c8d, 0x1400ffff }, - { 0x0a002c8e, 0x24000001 }, - { 0x0a002c8f, 0x1400ffff }, - { 0x0a002c90, 0x24000001 }, - { 0x0a002c91, 0x1400ffff }, - { 0x0a002c92, 0x24000001 }, - { 0x0a002c93, 0x1400ffff }, - { 0x0a002c94, 0x24000001 }, - { 0x0a002c95, 0x1400ffff }, - { 0x0a002c96, 0x24000001 }, - { 0x0a002c97, 0x1400ffff }, - { 0x0a002c98, 0x24000001 }, - { 0x0a002c99, 0x1400ffff }, - { 0x0a002c9a, 0x24000001 }, - { 0x0a002c9b, 0x1400ffff }, - { 0x0a002c9c, 0x24000001 }, - { 0x0a002c9d, 0x1400ffff }, - { 0x0a002c9e, 0x24000001 }, - { 0x0a002c9f, 0x1400ffff }, - { 0x0a002ca0, 0x24000001 }, - { 0x0a002ca1, 0x1400ffff }, - { 0x0a002ca2, 0x24000001 }, - { 0x0a002ca3, 0x1400ffff }, - { 0x0a002ca4, 0x24000001 }, - { 0x0a002ca5, 0x1400ffff }, - { 0x0a002ca6, 0x24000001 }, - { 0x0a002ca7, 0x1400ffff }, - { 0x0a002ca8, 0x24000001 }, - { 0x0a002ca9, 0x1400ffff }, - { 0x0a002caa, 0x24000001 }, - { 0x0a002cab, 0x1400ffff }, - { 0x0a002cac, 0x24000001 }, - { 0x0a002cad, 0x1400ffff }, - { 0x0a002cae, 0x24000001 }, - { 0x0a002caf, 0x1400ffff }, - { 0x0a002cb0, 0x24000001 }, - { 0x0a002cb1, 0x1400ffff }, - { 0x0a002cb2, 0x24000001 }, - { 0x0a002cb3, 0x1400ffff }, - { 0x0a002cb4, 0x24000001 }, - { 0x0a002cb5, 0x1400ffff }, - { 0x0a002cb6, 0x24000001 }, - { 0x0a002cb7, 0x1400ffff }, - { 0x0a002cb8, 0x24000001 }, - { 0x0a002cb9, 0x1400ffff }, - { 0x0a002cba, 0x24000001 }, - { 0x0a002cbb, 0x1400ffff }, - { 0x0a002cbc, 0x24000001 }, - { 0x0a002cbd, 0x1400ffff }, - { 0x0a002cbe, 0x24000001 }, - { 0x0a002cbf, 0x1400ffff }, - { 0x0a002cc0, 0x24000001 }, - { 0x0a002cc1, 0x1400ffff }, - { 0x0a002cc2, 0x24000001 }, - { 0x0a002cc3, 0x1400ffff }, - { 0x0a002cc4, 0x24000001 }, - { 0x0a002cc5, 0x1400ffff }, - { 0x0a002cc6, 0x24000001 }, - { 0x0a002cc7, 0x1400ffff }, - { 0x0a002cc8, 0x24000001 }, - { 0x0a002cc9, 0x1400ffff }, - { 0x0a002cca, 0x24000001 }, - { 0x0a002ccb, 0x1400ffff }, - { 0x0a002ccc, 0x24000001 }, - { 0x0a002ccd, 0x1400ffff }, - { 0x0a002cce, 0x24000001 }, - { 0x0a002ccf, 0x1400ffff }, - { 0x0a002cd0, 0x24000001 }, - { 0x0a002cd1, 0x1400ffff }, - { 0x0a002cd2, 0x24000001 }, - { 0x0a002cd3, 0x1400ffff }, - { 0x0a002cd4, 0x24000001 }, - { 0x0a002cd5, 0x1400ffff }, - { 0x0a002cd6, 0x24000001 }, - { 0x0a002cd7, 0x1400ffff }, - { 0x0a002cd8, 0x24000001 }, - { 0x0a002cd9, 0x1400ffff }, - { 0x0a002cda, 0x24000001 }, - { 0x0a002cdb, 0x1400ffff }, - { 0x0a002cdc, 0x24000001 }, - { 0x0a002cdd, 0x1400ffff }, - { 0x0a002cde, 0x24000001 }, - { 0x0a002cdf, 0x1400ffff }, - { 0x0a002ce0, 0x24000001 }, - { 0x0a002ce1, 0x1400ffff }, - { 0x0a002ce2, 0x24000001 }, - { 0x0a002ce3, 0x1400ffff }, - { 0x0a002ce4, 0x14000000 }, - { 0x0a802ce5, 0x68000005 }, - { 0x0a802cf9, 0x54000003 }, - { 0x0a002cfd, 0x3c000000 }, - { 0x0a802cfe, 0x54000001 }, - { 0x10002d00, 0x1400e3a0 }, - { 0x10002d01, 0x1400e3a0 }, - { 0x10002d02, 0x1400e3a0 }, - { 0x10002d03, 0x1400e3a0 }, - { 0x10002d04, 0x1400e3a0 }, - { 0x10002d05, 0x1400e3a0 }, - { 0x10002d06, 0x1400e3a0 }, - { 0x10002d07, 0x1400e3a0 }, - { 0x10002d08, 0x1400e3a0 }, - { 0x10002d09, 0x1400e3a0 }, - { 0x10002d0a, 0x1400e3a0 }, - { 0x10002d0b, 0x1400e3a0 }, - { 0x10002d0c, 0x1400e3a0 }, - { 0x10002d0d, 0x1400e3a0 }, - { 0x10002d0e, 0x1400e3a0 }, - { 0x10002d0f, 0x1400e3a0 }, - { 0x10002d10, 0x1400e3a0 }, - { 0x10002d11, 0x1400e3a0 }, - { 0x10002d12, 0x1400e3a0 }, - { 0x10002d13, 0x1400e3a0 }, - { 0x10002d14, 0x1400e3a0 }, - { 0x10002d15, 0x1400e3a0 }, - { 0x10002d16, 0x1400e3a0 }, - { 0x10002d17, 0x1400e3a0 }, - { 0x10002d18, 0x1400e3a0 }, - { 0x10002d19, 0x1400e3a0 }, - { 0x10002d1a, 0x1400e3a0 }, - { 0x10002d1b, 0x1400e3a0 }, - { 0x10002d1c, 0x1400e3a0 }, - { 0x10002d1d, 0x1400e3a0 }, - { 0x10002d1e, 0x1400e3a0 }, - { 0x10002d1f, 0x1400e3a0 }, - { 0x10002d20, 0x1400e3a0 }, - { 0x10002d21, 0x1400e3a0 }, - { 0x10002d22, 0x1400e3a0 }, - { 0x10002d23, 0x1400e3a0 }, - { 0x10002d24, 0x1400e3a0 }, - { 0x10002d25, 0x1400e3a0 }, - { 0x3a802d30, 0x1c000035 }, - { 0x3a002d6f, 0x18000000 }, - { 0x0f802d80, 0x1c000016 }, - { 0x0f802da0, 0x1c000006 }, - { 0x0f802da8, 0x1c000006 }, - { 0x0f802db0, 0x1c000006 }, - { 0x0f802db8, 0x1c000006 }, - { 0x0f802dc0, 0x1c000006 }, - { 0x0f802dc8, 0x1c000006 }, - { 0x0f802dd0, 0x1c000006 }, - { 0x0f802dd8, 0x1c000006 }, - { 0x09802e00, 0x54000001 }, - { 0x09002e02, 0x50000000 }, - { 0x09002e03, 0x4c000000 }, - { 0x09002e04, 0x50000000 }, - { 0x09002e05, 0x4c000000 }, - { 0x09802e06, 0x54000002 }, - { 0x09002e09, 0x50000000 }, - { 0x09002e0a, 0x4c000000 }, - { 0x09002e0b, 0x54000000 }, - { 0x09002e0c, 0x50000000 }, - { 0x09002e0d, 0x4c000000 }, - { 0x09802e0e, 0x54000008 }, - { 0x09002e17, 0x44000000 }, - { 0x09002e1c, 0x50000000 }, - { 0x09002e1d, 0x4c000000 }, - { 0x16802e80, 0x68000019 }, - { 0x16802e9b, 0x68000058 }, - { 0x16802f00, 0x680000d5 }, - { 0x09802ff0, 0x6800000b }, - { 0x09003000, 0x74000000 }, - { 0x09803001, 0x54000002 }, - { 0x09003004, 0x68000000 }, - { 0x16003005, 0x18000000 }, - { 0x09003006, 0x1c000000 }, - { 0x16003007, 0x38000000 }, - { 0x09003008, 0x58000000 }, - { 0x09003009, 0x48000000 }, - { 0x0900300a, 0x58000000 }, - { 0x0900300b, 0x48000000 }, - { 0x0900300c, 0x58000000 }, - { 0x0900300d, 0x48000000 }, - { 0x0900300e, 0x58000000 }, - { 0x0900300f, 0x48000000 }, - { 0x09003010, 0x58000000 }, - { 0x09003011, 0x48000000 }, - { 0x09803012, 0x68000001 }, - { 0x09003014, 0x58000000 }, - { 0x09003015, 0x48000000 }, - { 0x09003016, 0x58000000 }, - { 0x09003017, 0x48000000 }, - { 0x09003018, 0x58000000 }, - { 0x09003019, 0x48000000 }, - { 0x0900301a, 0x58000000 }, - { 0x0900301b, 0x48000000 }, - { 0x0900301c, 0x44000000 }, - { 0x0900301d, 0x58000000 }, - { 0x0980301e, 0x48000001 }, - { 0x09003020, 0x68000000 }, - { 0x16803021, 0x38000008 }, - { 0x1b80302a, 0x30000005 }, - { 0x09003030, 0x44000000 }, - { 0x09803031, 0x18000004 }, - { 0x09803036, 0x68000001 }, - { 0x16803038, 0x38000002 }, - { 0x1600303b, 0x18000000 }, - { 0x0900303c, 0x1c000000 }, - { 0x0900303d, 0x54000000 }, - { 0x0980303e, 0x68000001 }, - { 0x1a803041, 0x1c000055 }, - { 0x1b803099, 0x30000001 }, - { 0x0980309b, 0x60000001 }, - { 0x1a80309d, 0x18000001 }, - { 0x1a00309f, 0x1c000000 }, - { 0x090030a0, 0x44000000 }, - { 0x1d8030a1, 0x1c000059 }, - { 0x090030fb, 0x54000000 }, - { 0x090030fc, 0x18000000 }, - { 0x1d8030fd, 0x18000001 }, - { 0x1d0030ff, 0x1c000000 }, - { 0x03803105, 0x1c000027 }, - { 0x17803131, 0x1c00005d }, - { 0x09803190, 0x68000001 }, - { 0x09803192, 0x3c000003 }, - { 0x09803196, 0x68000009 }, - { 0x038031a0, 0x1c000017 }, - { 0x098031c0, 0x6800000f }, - { 0x1d8031f0, 0x1c00000f }, - { 0x17803200, 0x6800001e }, - { 0x09803220, 0x3c000009 }, - { 0x0980322a, 0x68000019 }, - { 0x09003250, 0x68000000 }, - { 0x09803251, 0x3c00000e }, - { 0x17803260, 0x6800001d }, - { 0x0980327e, 0x68000001 }, - { 0x09803280, 0x3c000009 }, - { 0x0980328a, 0x68000026 }, - { 0x098032b1, 0x3c00000e }, - { 0x098032c0, 0x6800003e }, - { 0x09803300, 0x680000ff }, - { 0x16803400, 0x1c0019b5 }, - { 0x09804dc0, 0x6800003f }, - { 0x16804e00, 0x1c0051bb }, - { 0x3c80a000, 0x1c000014 }, - { 0x3c00a015, 0x18000000 }, - { 0x3c80a016, 0x1c000476 }, - { 0x3c80a490, 0x68000036 }, - { 0x0980a700, 0x60000016 }, - { 0x0980a717, 0x18000003 }, - { 0x0980a720, 0x60000001 }, - { 0x3080a800, 0x1c000001 }, - { 0x3000a802, 0x28000000 }, - { 0x3080a803, 0x1c000002 }, - { 0x3000a806, 0x30000000 }, - { 0x3080a807, 0x1c000003 }, - { 0x3000a80b, 0x30000000 }, - { 0x3080a80c, 0x1c000016 }, - { 0x3080a823, 0x28000001 }, - { 0x3080a825, 0x30000001 }, - { 0x3000a827, 0x28000000 }, - { 0x3080a828, 0x68000003 }, - { 0x4080a840, 0x1c000033 }, - { 0x4080a874, 0x54000003 }, - { 0x1780ac00, 0x1c002ba3 }, - { 0x0980d800, 0x1000037f }, - { 0x0980db80, 0x1000007f }, - { 0x0980dc00, 0x100003ff }, - { 0x0980e000, 0x0c0018ff }, - { 0x1680f900, 0x1c00012d }, - { 0x1680fa30, 0x1c00003a }, - { 0x1680fa70, 0x1c000069 }, - { 0x2180fb00, 0x14000006 }, - { 0x0180fb13, 0x14000004 }, - { 0x1900fb1d, 0x1c000000 }, - { 0x1900fb1e, 0x30000000 }, - { 0x1980fb1f, 0x1c000009 }, - { 0x1900fb29, 0x64000000 }, - { 0x1980fb2a, 0x1c00000c }, - { 0x1980fb38, 0x1c000004 }, - { 0x1900fb3e, 0x1c000000 }, - { 0x1980fb40, 0x1c000001 }, - { 0x1980fb43, 0x1c000001 }, - { 0x1980fb46, 0x1c000009 }, - { 0x0080fb50, 0x1c000061 }, - { 0x0080fbd3, 0x1c00016a }, - { 0x0900fd3e, 0x58000000 }, - { 0x0900fd3f, 0x48000000 }, - { 0x0080fd50, 0x1c00003f }, - { 0x0080fd92, 0x1c000035 }, - { 0x0080fdf0, 0x1c00000b }, - { 0x0000fdfc, 0x5c000000 }, - { 0x0900fdfd, 0x68000000 }, - { 0x1b80fe00, 0x3000000f }, - { 0x0980fe10, 0x54000006 }, - { 0x0900fe17, 0x58000000 }, - { 0x0900fe18, 0x48000000 }, - { 0x0900fe19, 0x54000000 }, - { 0x1b80fe20, 0x30000003 }, - { 0x0900fe30, 0x54000000 }, - { 0x0980fe31, 0x44000001 }, - { 0x0980fe33, 0x40000001 }, - { 0x0900fe35, 0x58000000 }, - { 0x0900fe36, 0x48000000 }, - { 0x0900fe37, 0x58000000 }, - { 0x0900fe38, 0x48000000 }, - { 0x0900fe39, 0x58000000 }, - { 0x0900fe3a, 0x48000000 }, - { 0x0900fe3b, 0x58000000 }, - { 0x0900fe3c, 0x48000000 }, - { 0x0900fe3d, 0x58000000 }, - { 0x0900fe3e, 0x48000000 }, - { 0x0900fe3f, 0x58000000 }, - { 0x0900fe40, 0x48000000 }, - { 0x0900fe41, 0x58000000 }, - { 0x0900fe42, 0x48000000 }, - { 0x0900fe43, 0x58000000 }, - { 0x0900fe44, 0x48000000 }, - { 0x0980fe45, 0x54000001 }, - { 0x0900fe47, 0x58000000 }, - { 0x0900fe48, 0x48000000 }, - { 0x0980fe49, 0x54000003 }, - { 0x0980fe4d, 0x40000002 }, - { 0x0980fe50, 0x54000002 }, - { 0x0980fe54, 0x54000003 }, - { 0x0900fe58, 0x44000000 }, - { 0x0900fe59, 0x58000000 }, - { 0x0900fe5a, 0x48000000 }, - { 0x0900fe5b, 0x58000000 }, - { 0x0900fe5c, 0x48000000 }, - { 0x0900fe5d, 0x58000000 }, - { 0x0900fe5e, 0x48000000 }, - { 0x0980fe5f, 0x54000002 }, - { 0x0900fe62, 0x64000000 }, - { 0x0900fe63, 0x44000000 }, - { 0x0980fe64, 0x64000002 }, - { 0x0900fe68, 0x54000000 }, - { 0x0900fe69, 0x5c000000 }, - { 0x0980fe6a, 0x54000001 }, - { 0x0080fe70, 0x1c000004 }, - { 0x0080fe76, 0x1c000086 }, - { 0x0900feff, 0x04000000 }, - { 0x0980ff01, 0x54000002 }, - { 0x0900ff04, 0x5c000000 }, - { 0x0980ff05, 0x54000002 }, - { 0x0900ff08, 0x58000000 }, - { 0x0900ff09, 0x48000000 }, - { 0x0900ff0a, 0x54000000 }, - { 0x0900ff0b, 0x64000000 }, - { 0x0900ff0c, 0x54000000 }, - { 0x0900ff0d, 0x44000000 }, - { 0x0980ff0e, 0x54000001 }, - { 0x0980ff10, 0x34000009 }, - { 0x0980ff1a, 0x54000001 }, - { 0x0980ff1c, 0x64000002 }, - { 0x0980ff1f, 0x54000001 }, - { 0x2100ff21, 0x24000020 }, - { 0x2100ff22, 0x24000020 }, - { 0x2100ff23, 0x24000020 }, - { 0x2100ff24, 0x24000020 }, - { 0x2100ff25, 0x24000020 }, - { 0x2100ff26, 0x24000020 }, - { 0x2100ff27, 0x24000020 }, - { 0x2100ff28, 0x24000020 }, - { 0x2100ff29, 0x24000020 }, - { 0x2100ff2a, 0x24000020 }, - { 0x2100ff2b, 0x24000020 }, - { 0x2100ff2c, 0x24000020 }, - { 0x2100ff2d, 0x24000020 }, - { 0x2100ff2e, 0x24000020 }, - { 0x2100ff2f, 0x24000020 }, - { 0x2100ff30, 0x24000020 }, - { 0x2100ff31, 0x24000020 }, - { 0x2100ff32, 0x24000020 }, - { 0x2100ff33, 0x24000020 }, - { 0x2100ff34, 0x24000020 }, - { 0x2100ff35, 0x24000020 }, - { 0x2100ff36, 0x24000020 }, - { 0x2100ff37, 0x24000020 }, - { 0x2100ff38, 0x24000020 }, - { 0x2100ff39, 0x24000020 }, - { 0x2100ff3a, 0x24000020 }, - { 0x0900ff3b, 0x58000000 }, - { 0x0900ff3c, 0x54000000 }, - { 0x0900ff3d, 0x48000000 }, - { 0x0900ff3e, 0x60000000 }, - { 0x0900ff3f, 0x40000000 }, - { 0x0900ff40, 0x60000000 }, - { 0x2100ff41, 0x1400ffe0 }, - { 0x2100ff42, 0x1400ffe0 }, - { 0x2100ff43, 0x1400ffe0 }, - { 0x2100ff44, 0x1400ffe0 }, - { 0x2100ff45, 0x1400ffe0 }, - { 0x2100ff46, 0x1400ffe0 }, - { 0x2100ff47, 0x1400ffe0 }, - { 0x2100ff48, 0x1400ffe0 }, - { 0x2100ff49, 0x1400ffe0 }, - { 0x2100ff4a, 0x1400ffe0 }, - { 0x2100ff4b, 0x1400ffe0 }, - { 0x2100ff4c, 0x1400ffe0 }, - { 0x2100ff4d, 0x1400ffe0 }, - { 0x2100ff4e, 0x1400ffe0 }, - { 0x2100ff4f, 0x1400ffe0 }, - { 0x2100ff50, 0x1400ffe0 }, - { 0x2100ff51, 0x1400ffe0 }, - { 0x2100ff52, 0x1400ffe0 }, - { 0x2100ff53, 0x1400ffe0 }, - { 0x2100ff54, 0x1400ffe0 }, - { 0x2100ff55, 0x1400ffe0 }, - { 0x2100ff56, 0x1400ffe0 }, - { 0x2100ff57, 0x1400ffe0 }, - { 0x2100ff58, 0x1400ffe0 }, - { 0x2100ff59, 0x1400ffe0 }, - { 0x2100ff5a, 0x1400ffe0 }, - { 0x0900ff5b, 0x58000000 }, - { 0x0900ff5c, 0x64000000 }, - { 0x0900ff5d, 0x48000000 }, - { 0x0900ff5e, 0x64000000 }, - { 0x0900ff5f, 0x58000000 }, - { 0x0900ff60, 0x48000000 }, - { 0x0900ff61, 0x54000000 }, - { 0x0900ff62, 0x58000000 }, - { 0x0900ff63, 0x48000000 }, - { 0x0980ff64, 0x54000001 }, - { 0x1d80ff66, 0x1c000009 }, - { 0x0900ff70, 0x18000000 }, - { 0x1d80ff71, 0x1c00002c }, - { 0x0980ff9e, 0x18000001 }, - { 0x1780ffa0, 0x1c00001e }, - { 0x1780ffc2, 0x1c000005 }, - { 0x1780ffca, 0x1c000005 }, - { 0x1780ffd2, 0x1c000005 }, - { 0x1780ffda, 0x1c000002 }, - { 0x0980ffe0, 0x5c000001 }, - { 0x0900ffe2, 0x64000000 }, - { 0x0900ffe3, 0x60000000 }, - { 0x0900ffe4, 0x68000000 }, - { 0x0980ffe5, 0x5c000001 }, - { 0x0900ffe8, 0x68000000 }, - { 0x0980ffe9, 0x64000003 }, - { 0x0980ffed, 0x68000001 }, - { 0x0980fff9, 0x04000002 }, - { 0x0980fffc, 0x68000001 }, - { 0x23810000, 0x1c00000b }, - { 0x2381000d, 0x1c000019 }, - { 0x23810028, 0x1c000012 }, - { 0x2381003c, 0x1c000001 }, - { 0x2381003f, 0x1c00000e }, - { 0x23810050, 0x1c00000d }, - { 0x23810080, 0x1c00007a }, - { 0x09810100, 0x54000001 }, - { 0x09010102, 0x68000000 }, - { 0x09810107, 0x3c00002c }, - { 0x09810137, 0x68000008 }, - { 0x13810140, 0x38000034 }, - { 0x13810175, 0x3c000003 }, - { 0x13810179, 0x68000010 }, - { 0x1301018a, 0x3c000000 }, - { 0x29810300, 0x1c00001e }, - { 0x29810320, 0x3c000003 }, - { 0x12810330, 0x1c000010 }, - { 0x12010341, 0x38000000 }, - { 0x12810342, 0x1c000007 }, - { 0x1201034a, 0x38000000 }, - { 0x3b810380, 0x1c00001d }, - { 0x3b01039f, 0x54000000 }, - { 0x2a8103a0, 0x1c000023 }, - { 0x2a8103c8, 0x1c000007 }, - { 0x2a0103d0, 0x54000000 }, - { 0x2a8103d1, 0x38000004 }, - { 0x0d010400, 0x24000028 }, - { 0x0d010401, 0x24000028 }, - { 0x0d010402, 0x24000028 }, - { 0x0d010403, 0x24000028 }, - { 0x0d010404, 0x24000028 }, - { 0x0d010405, 0x24000028 }, - { 0x0d010406, 0x24000028 }, - { 0x0d010407, 0x24000028 }, - { 0x0d010408, 0x24000028 }, - { 0x0d010409, 0x24000028 }, - { 0x0d01040a, 0x24000028 }, - { 0x0d01040b, 0x24000028 }, - { 0x0d01040c, 0x24000028 }, - { 0x0d01040d, 0x24000028 }, - { 0x0d01040e, 0x24000028 }, - { 0x0d01040f, 0x24000028 }, - { 0x0d010410, 0x24000028 }, - { 0x0d010411, 0x24000028 }, - { 0x0d010412, 0x24000028 }, - { 0x0d010413, 0x24000028 }, - { 0x0d010414, 0x24000028 }, - { 0x0d010415, 0x24000028 }, - { 0x0d010416, 0x24000028 }, - { 0x0d010417, 0x24000028 }, - { 0x0d010418, 0x24000028 }, - { 0x0d010419, 0x24000028 }, - { 0x0d01041a, 0x24000028 }, - { 0x0d01041b, 0x24000028 }, - { 0x0d01041c, 0x24000028 }, - { 0x0d01041d, 0x24000028 }, - { 0x0d01041e, 0x24000028 }, - { 0x0d01041f, 0x24000028 }, - { 0x0d010420, 0x24000028 }, - { 0x0d010421, 0x24000028 }, - { 0x0d010422, 0x24000028 }, - { 0x0d010423, 0x24000028 }, - { 0x0d010424, 0x24000028 }, - { 0x0d010425, 0x24000028 }, - { 0x0d010426, 0x24000028 }, - { 0x0d010427, 0x24000028 }, - { 0x0d010428, 0x1400ffd8 }, - { 0x0d010429, 0x1400ffd8 }, - { 0x0d01042a, 0x1400ffd8 }, - { 0x0d01042b, 0x1400ffd8 }, - { 0x0d01042c, 0x1400ffd8 }, - { 0x0d01042d, 0x1400ffd8 }, - { 0x0d01042e, 0x1400ffd8 }, - { 0x0d01042f, 0x1400ffd8 }, - { 0x0d010430, 0x1400ffd8 }, - { 0x0d010431, 0x1400ffd8 }, - { 0x0d010432, 0x1400ffd8 }, - { 0x0d010433, 0x1400ffd8 }, - { 0x0d010434, 0x1400ffd8 }, - { 0x0d010435, 0x1400ffd8 }, - { 0x0d010436, 0x1400ffd8 }, - { 0x0d010437, 0x1400ffd8 }, - { 0x0d010438, 0x1400ffd8 }, - { 0x0d010439, 0x1400ffd8 }, - { 0x0d01043a, 0x1400ffd8 }, - { 0x0d01043b, 0x1400ffd8 }, - { 0x0d01043c, 0x1400ffd8 }, - { 0x0d01043d, 0x1400ffd8 }, - { 0x0d01043e, 0x1400ffd8 }, - { 0x0d01043f, 0x1400ffd8 }, - { 0x0d010440, 0x1400ffd8 }, - { 0x0d010441, 0x1400ffd8 }, - { 0x0d010442, 0x1400ffd8 }, - { 0x0d010443, 0x1400ffd8 }, - { 0x0d010444, 0x1400ffd8 }, - { 0x0d010445, 0x1400ffd8 }, - { 0x0d010446, 0x1400ffd8 }, - { 0x0d010447, 0x1400ffd8 }, - { 0x0d010448, 0x1400ffd8 }, - { 0x0d010449, 0x1400ffd8 }, - { 0x0d01044a, 0x1400ffd8 }, - { 0x0d01044b, 0x1400ffd8 }, - { 0x0d01044c, 0x1400ffd8 }, - { 0x0d01044d, 0x1400ffd8 }, - { 0x0d01044e, 0x1400ffd8 }, - { 0x0d01044f, 0x1400ffd8 }, - { 0x2e810450, 0x1c00002f }, - { 0x2c810480, 0x1c00001d }, - { 0x2c8104a0, 0x34000009 }, - { 0x0b810800, 0x1c000005 }, - { 0x0b010808, 0x1c000000 }, - { 0x0b81080a, 0x1c00002b }, - { 0x0b810837, 0x1c000001 }, - { 0x0b01083c, 0x1c000000 }, - { 0x0b01083f, 0x1c000000 }, - { 0x41810900, 0x1c000015 }, - { 0x41810916, 0x3c000003 }, - { 0x4101091f, 0x54000000 }, - { 0x1e010a00, 0x1c000000 }, - { 0x1e810a01, 0x30000002 }, - { 0x1e810a05, 0x30000001 }, - { 0x1e810a0c, 0x30000003 }, - { 0x1e810a10, 0x1c000003 }, - { 0x1e810a15, 0x1c000002 }, - { 0x1e810a19, 0x1c00001a }, - { 0x1e810a38, 0x30000002 }, - { 0x1e010a3f, 0x30000000 }, - { 0x1e810a40, 0x3c000007 }, - { 0x1e810a50, 0x54000008 }, - { 0x3e812000, 0x1c00036e }, - { 0x3e812400, 0x38000062 }, - { 0x3e812470, 0x54000003 }, - { 0x0981d000, 0x680000f5 }, - { 0x0981d100, 0x68000026 }, - { 0x0981d12a, 0x6800003a }, - { 0x0981d165, 0x28000001 }, - { 0x1b81d167, 0x30000002 }, - { 0x0981d16a, 0x68000002 }, - { 0x0981d16d, 0x28000005 }, - { 0x0981d173, 0x04000007 }, - { 0x1b81d17b, 0x30000007 }, - { 0x0981d183, 0x68000001 }, - { 0x1b81d185, 0x30000006 }, - { 0x0981d18c, 0x6800001d }, - { 0x1b81d1aa, 0x30000003 }, - { 0x0981d1ae, 0x6800002f }, - { 0x1381d200, 0x68000041 }, - { 0x1381d242, 0x30000002 }, - { 0x1301d245, 0x68000000 }, - { 0x0981d300, 0x68000056 }, - { 0x0981d360, 0x3c000011 }, - { 0x0981d400, 0x24000019 }, - { 0x0981d41a, 0x14000019 }, - { 0x0981d434, 0x24000019 }, - { 0x0981d44e, 0x14000006 }, - { 0x0981d456, 0x14000011 }, - { 0x0981d468, 0x24000019 }, - { 0x0981d482, 0x14000019 }, - { 0x0901d49c, 0x24000000 }, - { 0x0981d49e, 0x24000001 }, - { 0x0901d4a2, 0x24000000 }, - { 0x0981d4a5, 0x24000001 }, - { 0x0981d4a9, 0x24000003 }, - { 0x0981d4ae, 0x24000007 }, - { 0x0981d4b6, 0x14000003 }, - { 0x0901d4bb, 0x14000000 }, - { 0x0981d4bd, 0x14000006 }, - { 0x0981d4c5, 0x1400000a }, - { 0x0981d4d0, 0x24000019 }, - { 0x0981d4ea, 0x14000019 }, - { 0x0981d504, 0x24000001 }, - { 0x0981d507, 0x24000003 }, - { 0x0981d50d, 0x24000007 }, - { 0x0981d516, 0x24000006 }, - { 0x0981d51e, 0x14000019 }, - { 0x0981d538, 0x24000001 }, - { 0x0981d53b, 0x24000003 }, - { 0x0981d540, 0x24000004 }, - { 0x0901d546, 0x24000000 }, - { 0x0981d54a, 0x24000006 }, - { 0x0981d552, 0x14000019 }, - { 0x0981d56c, 0x24000019 }, - { 0x0981d586, 0x14000019 }, - { 0x0981d5a0, 0x24000019 }, - { 0x0981d5ba, 0x14000019 }, - { 0x0981d5d4, 0x24000019 }, - { 0x0981d5ee, 0x14000019 }, - { 0x0981d608, 0x24000019 }, - { 0x0981d622, 0x14000019 }, - { 0x0981d63c, 0x24000019 }, - { 0x0981d656, 0x14000019 }, - { 0x0981d670, 0x24000019 }, - { 0x0981d68a, 0x1400001b }, - { 0x0981d6a8, 0x24000018 }, - { 0x0901d6c1, 0x64000000 }, - { 0x0981d6c2, 0x14000018 }, - { 0x0901d6db, 0x64000000 }, - { 0x0981d6dc, 0x14000005 }, - { 0x0981d6e2, 0x24000018 }, - { 0x0901d6fb, 0x64000000 }, - { 0x0981d6fc, 0x14000018 }, - { 0x0901d715, 0x64000000 }, - { 0x0981d716, 0x14000005 }, - { 0x0981d71c, 0x24000018 }, - { 0x0901d735, 0x64000000 }, - { 0x0981d736, 0x14000018 }, - { 0x0901d74f, 0x64000000 }, - { 0x0981d750, 0x14000005 }, - { 0x0981d756, 0x24000018 }, - { 0x0901d76f, 0x64000000 }, - { 0x0981d770, 0x14000018 }, - { 0x0901d789, 0x64000000 }, - { 0x0981d78a, 0x14000005 }, - { 0x0981d790, 0x24000018 }, - { 0x0901d7a9, 0x64000000 }, - { 0x0981d7aa, 0x14000018 }, - { 0x0901d7c3, 0x64000000 }, - { 0x0981d7c4, 0x14000005 }, - { 0x0901d7ca, 0x24000000 }, - { 0x0901d7cb, 0x14000000 }, - { 0x0981d7ce, 0x34000031 }, - { 0x16820000, 0x1c00a6d6 }, - { 0x1682f800, 0x1c00021d }, - { 0x090e0001, 0x04000000 }, - { 0x098e0020, 0x0400005f }, - { 0x1b8e0100, 0x300000ef }, - { 0x098f0000, 0x0c00fffd }, - { 0x09900000, 0x0c00fffd }, -}; diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index e728c7354..19bd50bbc 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pcre.c,v 1.168.2.9.2.25 2008/02/20 22:08:18 felipe Exp $ */ +/* $Id: php_pcre.c,v 1.168.2.9.2.30 2009/01/13 19:23:31 andrei Exp $ */ #include "php.h" #include "php_ini.h" @@ -48,7 +48,8 @@ enum { PHP_PCRE_INTERNAL_ERROR, PHP_PCRE_BACKTRACK_LIMIT_ERROR, PHP_PCRE_RECURSION_LIMIT_ERROR, - PHP_PCRE_BAD_UTF8_ERROR + PHP_PCRE_BAD_UTF8_ERROR, + PHP_PCRE_BAD_UTF8_OFFSET_ERROR }; @@ -72,6 +73,10 @@ static void pcre_handle_exec_error(int pcre_code TSRMLS_DC) /* {{{ */ preg_code = PHP_PCRE_BAD_UTF8_ERROR; break; + case PCRE_ERROR_BADUTF8_OFFSET: + preg_code = PHP_PCRE_BAD_UTF8_OFFSET_ERROR; + break; + default: preg_code = PHP_PCRE_INTERNAL_ERROR; break; @@ -145,6 +150,7 @@ static PHP_MINIT_FUNCTION(pcre) REGISTER_LONG_CONSTANT("PREG_BACKTRACK_LIMIT_ERROR", PHP_PCRE_BACKTRACK_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR", PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("PCRE_VERSION", (char *)pcre_version(), CONST_CS | CONST_PERSISTENT); return SUCCESS; @@ -174,6 +180,50 @@ static int pcre_clean_cache(void *data, void *arg TSRMLS_DC) } /* }}} */ +/* {{{ static make_subpats_table */ +static char **make_subpats_table(int num_subpats, pcre_cache_entry *pce TSRMLS_DC) +{ + pcre_extra *extra = pce->extra; + int name_cnt = 0, name_size, ni = 0; + int rc; + char *name_table; + unsigned short name_idx; + char **subpat_names = (char **)ecalloc(num_subpats, sizeof(char *)); + + rc = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMECOUNT, &name_cnt); + if (rc < 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal pcre_fullinfo() error %d", rc); + efree(subpat_names); + return NULL; + } + if (name_cnt > 0) { + int rc1, rc2; + + rc1 = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMETABLE, &name_table); + rc2 = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMEENTRYSIZE, &name_size); + rc = rc2 ? rc2 : rc1; + if (rc < 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal pcre_fullinfo() error %d", rc); + efree(subpat_names); + return NULL; + } + + while (ni++ < name_cnt) { + name_idx = 0xff * name_table[0] + name_table[1]; + subpat_names[name_idx] = name_table + 2; + if (is_numeric_string(subpat_names[name_idx], strlen(subpat_names[name_idx]), NULL, NULL, 0) > 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Numeric named subpatterns are not allowed"); + efree(subpat_names); + return NULL; + } + name_table += name_size; + } + } + + return subpat_names; +} +/* }}} */ + /* {{{ pcre_get_compiled_regex_cache */ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(char *regex, int regex_len TSRMLS_DC) @@ -484,7 +534,7 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char *subject, int subjec int g_notempty = 0; /* If the match should not be empty */ const char **stringlist; /* Holds list of subpatterns */ char *match; /* The current match */ - char **subpat_names = NULL;/* Array for named subpatterns */ + char **subpat_names; /* Array for named subpatterns */ int i, rc; int subpats_order; /* Order of subpattern matches */ int offset_capture; /* Capture match offsets: yes/no */ @@ -539,54 +589,19 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char *subject, int subjec } num_subpats++; size_offsets = num_subpats * 3; - offsets = (int *)safe_emalloc(size_offsets, sizeof(int), 0); /* * Build a mapping from subpattern numbers to their names. We will always * allocate the table, even though there may be no named subpatterns. This * avoids somewhat more complicated logic in the inner loops. */ - subpat_names = (char **)safe_emalloc(num_subpats, sizeof(char *), 0); - memset(subpat_names, 0, sizeof(char *) * num_subpats); - { - int name_cnt = 0, name_size, ni = 0; - char *name_table; - unsigned short name_idx; - - rc = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMECOUNT, &name_cnt); - if (rc < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal pcre_fullinfo() error %d", rc); - efree(offsets); - efree(subpat_names); - RETURN_FALSE; - } - if (name_cnt > 0) { - int rc1, rc2; - - rc1 = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMETABLE, &name_table); - rc2 = pcre_fullinfo(pce->re, extra, PCRE_INFO_NAMEENTRYSIZE, &name_size); - rc = rc2 ? rc2 : rc1; - if (rc < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal pcre_fullinfo() error %d", rc); - efree(offsets); - efree(subpat_names); - RETURN_FALSE; - } - - while (ni++ < name_cnt) { - name_idx = 0xff * name_table[0] + name_table[1]; - subpat_names[name_idx] = name_table + 2; - if (is_numeric_string(subpat_names[name_idx], strlen(subpat_names[name_idx]), NULL, NULL, 0) > 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Numeric named subpatterns are not allowed"); - efree(offsets); - efree(subpat_names); - RETURN_FALSE; - } - name_table += name_size; - } - } + subpat_names = make_subpats_table(num_subpats, pce TSRMLS_CC); + if (!subpat_names) { + RETURN_FALSE; } + offsets = (int *)safe_emalloc(size_offsets, sizeof(int), 0); + /* Allocate match sets array and initialize the values. */ if (global && subpats_order == PREG_PATTERN_ORDER) { match_sets = (zval **)safe_emalloc(num_subpats, sizeof(zval *), 0); @@ -606,6 +621,9 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char *subject, int subjec count = pcre_exec(pce->re, extra, subject, subject_len, start_offset, exoptions|g_notempty, offsets, size_offsets); + /* the string was already proved to be valid UTF-8 */ + exoptions |= PCRE_NO_UTF8_CHECK; + /* Check for too many substrings condition. */ if (count == 0) { php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Matched, but too many substrings"); @@ -794,7 +812,7 @@ static int preg_get_backref(char **str, int *backref) /* {{{ preg_do_repl_func */ -static int preg_do_repl_func(zval *function, char *subject, int *offsets, int count, char **result TSRMLS_DC) +static int preg_do_repl_func(zval *function, char *subject, int *offsets, char **subpat_names, int count, char **result TSRMLS_DC) { zval *retval_ptr; /* Function return value */ zval **args[1]; /* Argument to pass to function */ @@ -804,8 +822,12 @@ static int preg_do_repl_func(zval *function, char *subject, int *offsets, int co MAKE_STD_ZVAL(subpats); array_init(subpats); - for (i = 0; i < count; i++) + for (i = 0; i < count; i++) { + if (subpat_names[i]) { + add_assoc_stringl(subpats, subpat_names[i], &subject[offsets[i<<1]] , offsets[(i<<1)+1] - offsets[i<<1], 1); + } add_next_index_stringl(subpats, &subject[offsets[i<<1]], offsets[(i<<1)+1] - offsets[i<<1], 1); + } args[0] = &subpats; if (call_user_function_ex(EG(function_table), NULL, function, &retval_ptr, 1, args, 0, NULL TSRMLS_CC) == SUCCESS && retval_ptr) { @@ -944,6 +966,8 @@ PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int sub int exoptions = 0; /* Execution options */ int count = 0; /* Count of matched subpatterns */ int *offsets; /* Array of subpattern offsets */ + char **subpat_names; /* Array for named subpatterns */ + int num_subpats; /* Number of captured subpatterns */ int size_offsets; /* Size of the offsets array */ int new_len; /* Length of needed storage */ int alloc_len; /* Actual allocated length */ @@ -987,12 +1011,24 @@ PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int sub } /* Calculate the size of the offsets array, and allocate memory for it. */ - rc = pcre_fullinfo(pce->re, extra, PCRE_INFO_CAPTURECOUNT, &size_offsets); + rc = pcre_fullinfo(pce->re, extra, PCRE_INFO_CAPTURECOUNT, &num_subpats); if (rc < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal pcre_fullinfo() error %d", rc); return NULL; } - size_offsets = (size_offsets + 1) * 3; + num_subpats++; + size_offsets = num_subpats * 3; + + /* + * Build a mapping from subpattern numbers to their names. We will always + * allocate the table, even though there may be no named subpatterns. This + * avoids somewhat more complicated logic in the inner loops. + */ + subpat_names = make_subpats_table(num_subpats, pce TSRMLS_CC); + if (!subpat_names) { + return NULL; + } + offsets = (int *)safe_emalloc(size_offsets, sizeof(int), 0); alloc_len = 2 * subject_len + 1; @@ -1009,6 +1045,9 @@ PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int sub count = pcre_exec(pce->re, extra, subject, subject_len, start_offset, exoptions|g_notempty, offsets, size_offsets); + /* the string was already proved to be valid UTF-8 */ + exoptions |= PCRE_NO_UTF8_CHECK; + /* Check for too many substrings condition. */ if (count == 0) { php_error_docref(NULL TSRMLS_CC,E_NOTICE, "Matched, but too many substrings"); @@ -1033,8 +1072,7 @@ PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int sub new_len += eval_result_len; } else if (is_callable_replace) { /* Use custom function to get replacement string and its length. */ - eval_result_len = preg_do_repl_func(replace_val, subject, offsets, - count, &eval_result TSRMLS_CC); + eval_result_len = preg_do_repl_func(replace_val, subject, offsets, subpat_names, count, &eval_result TSRMLS_CC); new_len += eval_result_len; } else { /* do regular substitution */ walk = replace; @@ -1149,8 +1187,9 @@ PHPAPI char *php_pcre_replace_impl(pcre_cache_entry *pce, char *subject, int sub /* Advance to the next piece. */ start_offset = offsets[1]; } - + efree(offsets); + efree(subpat_names); return result; } @@ -1446,6 +1485,9 @@ PHPAPI void php_pcre_split_impl(pcre_cache_entry *pce, char *subject, int subjec subject_len, start_offset, exoptions|g_notempty, offsets, size_offsets); + /* the string was already proved to be valid UTF-8 */ + exoptions |= PCRE_NO_UTF8_CHECK; + /* Check for too many substrings condition. */ if (count == 0) { php_error_docref(NULL TSRMLS_CC,E_NOTICE, "Matched, but too many substrings"); @@ -1501,7 +1543,7 @@ PHPAPI void php_pcre_split_impl(pcre_cache_entry *pce, char *subject, int subjec if (re_bump == NULL) { int dummy; - if ((re_bump = pcre_get_compiled_regex("/./u", &extra_bump, &dummy TSRMLS_CC)) == NULL) { + if ((re_bump = pcre_get_compiled_regex("/./us", &extra_bump, &dummy TSRMLS_CC)) == NULL) { RETURN_FALSE; } } @@ -1704,13 +1746,17 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return /* Go through the input array */ zend_hash_internal_pointer_reset(Z_ARRVAL_P(input)); - while(zend_hash_get_current_data(Z_ARRVAL_P(input), (void **)&entry) == SUCCESS) { + while (zend_hash_get_current_data(Z_ARRVAL_P(input), (void **)&entry) == SUCCESS) { + zval subject = **entry; - convert_to_string_ex(entry); + if (Z_TYPE_PP(entry) != IS_STRING) { + zval_copy_ctor(&subject); + convert_to_string(&subject); + } /* Perform the match */ - count = pcre_exec(pce->re, extra, Z_STRVAL_PP(entry), - Z_STRLEN_PP(entry), 0, + count = pcre_exec(pce->re, extra, Z_STRVAL(subject), + Z_STRLEN(subject), 0, 0, offsets, size_offsets); /* Check for too many substrings condition. */ @@ -1723,9 +1769,8 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return } /* If the entry fits our requirements */ - if ((count > 0 && !invert) || - (count == PCRE_ERROR_NOMATCH && invert)) { - (*entry)->refcount++; + if ((count > 0 && !invert) || (count == PCRE_ERROR_NOMATCH && invert)) { + ZVAL_ADDREF(*entry); /* Add to return array */ switch (zend_hash_get_current_key(Z_ARRVAL_P(input), &string_key, &num_key, 0)) @@ -1741,7 +1786,11 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return break; } } - + + if (Z_TYPE_PP(entry) != IS_STRING) { + zval_dtor(&subject); + } + zend_hash_move_forward(Z_ARRVAL_P(input)); } zend_hash_internal_pointer_reset(Z_ARRVAL_P(input)); diff --git a/ext/pcre/php_pcre.h b/ext/pcre/php_pcre.h index 9fe3f541d..52959272c 100644 --- a/ext/pcre/php_pcre.h +++ b/ext/pcre/php_pcre.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pcre.h,v 1.41.2.1.2.6 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pcre.h,v 1.41.2.1.2.7 2008/12/31 11:17:41 sebastian Exp $ */ #ifndef PHP_PCRE_H #define PHP_PCRE_H diff --git a/ext/pcre/tests/bug37911.phpt b/ext/pcre/tests/bug37911.phpt new file mode 100644 index 000000000..f7881191b --- /dev/null +++ b/ext/pcre/tests/bug37911.phpt @@ -0,0 +1,41 @@ +--TEST-- +Bug #37911 (preg_replace_callback ignores named groups) +--FILE-- +blub)|', 'callback', 'bla blub blah')); + +var_dump(preg_match('|(?Pblub)|', 'bla blub blah', $m)); +var_dump($m); + +var_dump(preg_replace_callback('|(?P<1>blub)|', 'callback', 'bla blub blah')); + +?> +--EXPECTF-- +array(3) { + [0]=> + string(4) "blub" + ["name"]=> + string(4) "blub" + [1]=> + string(4) "blub" +} +string(15) "bla blub/4 blah" +int(1) +array(3) { + [0]=> + string(4) "blub" + ["name"]=> + string(4) "blub" + [1]=> + string(4) "blub" +} + +Warning: preg_replace_callback(): Numeric named subpatterns are not allowed in %sbug37911.php on line 14 +NULL diff --git a/ext/pcre/tests/bug42737.phpt b/ext/pcre/tests/bug42737.phpt new file mode 100644 index 000000000..8d9dd52b3 --- /dev/null +++ b/ext/pcre/tests/bug42737.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #42737 (preg_split('//u') triggers a E_NOTICE with newlines) +--FILE-- + +--EXPECT-- +array(2) { + [0]=> + int(13) + [1]=> + int(10) +} diff --git a/ext/pcre/tests/bug44925.phpt b/ext/pcre/tests/bug44925.phpt new file mode 100644 index 000000000..f6e0db425 --- /dev/null +++ b/ext/pcre/tests/bug44925.phpt @@ -0,0 +1,107 @@ +--TEST-- +Bug #44925 (preg_grep() modifies input array) +--FILE-- + +--EXPECTF-- +array(9) { + [0]=> + string(1) "1" + [1]=> + int(2) + [2]=> + int(3) + [3]=> + float(1.1) + [4]=> + bool(false) + [5]=> + NULL + [6]=> + array(0) { + } + [7]=> + string(1) "a" + [8]=> + &string(1) "b" +} + +Notice: Array to string conversion in %sbug44925.php on line 9 +array(0) { +} + +Notice: Array to string conversion in %sbug44925.php on line 11 +array(7) { + [0]=> + string(1) "1" + [1]=> + int(2) + [2]=> + int(3) + [3]=> + float(1.1) + [6]=> + array(0) { + } + [7]=> + string(1) "a" + [8]=> + &string(1) "b" +} +array(7) { + [0]=> + string(1) "1" + [1]=> + int(2) + [2]=> + int(3) + [3]=> + float(1.1) + [6]=> + array(0) { + } + [7]=> + string(1) "a" + [8]=> + &string(1) "y" +} +array(9) { + [0]=> + string(1) "1" + [1]=> + int(2) + [2]=> + int(3) + [3]=> + float(1.1) + [4]=> + bool(false) + [5]=> + NULL + [6]=> + array(0) { + } + [7]=> + string(1) "a" + [8]=> + &string(1) "y" +} diff --git a/ext/pcre/tests/pcre.constants.phpt b/ext/pcre/tests/pcre.constants.phpt new file mode 100644 index 000000000..0b103308e --- /dev/null +++ b/ext/pcre/tests/pcre.constants.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test for pre-defined pcre constants +--FILE-- + +===Done=== +--EXPECT-- +PCRE constants test +PREG_PATTERN_ORDER= 1 +PREG_OFFSET_CAPTURE= 256 +PREG_SPLIT_NO_EMPTY= 1 +PREG_SPLIT_DELIM_CAPTURE= 2 +PREG_SPLIT_OFFSET_CAPTURE= 4 +PREG_GREP_INVERT= 1 +PREG_NO_ERROR= 0 +PREG_INTERNAL_ERROR= 1 +PREG_BACKTRACK_LIMIT_ERROR= 2 +PREG_RECURSION_LIMIT_ERROR= 3 +PREG_BAD_UTF8_ERROR= 4 +===Done=== \ No newline at end of file diff --git a/ext/pcre/tests/preg_last_error_error.phpt b/ext/pcre/tests/preg_last_error_error.phpt new file mode 100644 index 000000000..c75e2f86c --- /dev/null +++ b/ext/pcre/tests/preg_last_error_error.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test preg_grep() function : error conditions - wrong numbers of parameters +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing preg_last_error() : error conditions *** + +-- Testing preg_last_error() function with more than expected no. of arguments -- + +Warning: preg_last_error() expects exactly 0 parameters, 1 given in %s on line %d +NULL +===Done=== \ No newline at end of file diff --git a/ext/pcre/tests/preg_match_basic_002.phpt b/ext/pcre/tests/preg_match_basic_002.phpt new file mode 100644 index 000000000..977a67ea1 --- /dev/null +++ b/ext/pcre/tests/preg_match_basic_002.phpt @@ -0,0 +1,23 @@ +--TEST-- +preg_match() single line match with multi-line input +--FILE-- + +===Done=== +--EXPECTF-- +array(2) { + [0]=> + string(2) "My" + [1]=> + string(1) "y" +} +===Done=== \ No newline at end of file diff --git a/ext/pcre/tests/preg_match_variation1.phpt b/ext/pcre/tests/preg_match_variation1.phpt new file mode 100644 index 000000000..a289ee48e --- /dev/null +++ b/ext/pcre/tests/preg_match_variation1.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test preg_match() function : variation +--FILE-- + +===Done=== +--EXPECT-- +array(1) { + [0]=> + string(2) "-1" +} +===Done=== diff --git a/ext/pcre/tests/preg_replace_callback_error1.phpt b/ext/pcre/tests/preg_replace_callback_error1.phpt new file mode 100644 index 000000000..364964baf --- /dev/null +++ b/ext/pcre/tests/preg_replace_callback_error1.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test preg_replace_callback() function : error +--FILE-- + +--EXPECTF-- +*** Testing preg_replace_callback() : error conditions *** + +Arg value is abcdef + +Warning: preg_replace_callback(): Delimiter must not be alphanumeric or backslash in %s on line %d +NULL + +Arg value is /[a-zA-Z] + +Warning: preg_replace_callback(): No ending delimiter '/' found in %s on line %d +NULL + +Arg value is [a-zA-Z]/ + +Warning: preg_replace_callback(): Unknown modifier '/' in %s on line %d +NULL + +Arg value is /[a-zA-Z]/F + +Warning: preg_replace_callback(): Unknown modifier 'F' in %s on line %d +NULL + +Arg value is Array +string(9) "number 1." + +Arg value is /[a-zA-Z]/ +string(3) " 1." +Done \ No newline at end of file diff --git a/ext/pcre/upgrade-pcre.php b/ext/pcre/upgrade-pcre.php index 43a98c94b..c128d603d 100644 --- a/ext/pcre/upgrade-pcre.php +++ b/ext/pcre/upgrade-pcre.php @@ -58,6 +58,7 @@ function recurse($path) if (!is_file($newfile)) { + continue; die("$newfile is not available any more\n"); } diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index 2a55bf9a8..cb7118aa5 100755 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo.c,v 1.57.2.17.2.10 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo.c,v 1.57.2.17.2.11 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 5d567741e..927d9fe18 100755 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c,v 1.82.2.31.2.22 2008/03/03 21:14:33 iliaa Exp $ */ +/* $Id: pdo_dbh.c,v 1.82.2.31.2.25 2008/12/31 11:17:41 sebastian Exp $ */ /* The PDO Database Handle Class */ @@ -1210,8 +1210,7 @@ int pdo_hash_methods(pdo_dbh_t *dbh, int kind TSRMLS_DC) if (!dbh || !dbh->methods || !dbh->methods->get_driver_methods) { return 0; } - funcs = dbh->methods->get_driver_methods(dbh, - PDO_DBH_DRIVER_METHOD_KIND_DBH TSRMLS_CC); + funcs = dbh->methods->get_driver_methods(dbh, kind TSRMLS_CC); if (!funcs) { return 0; } @@ -1291,9 +1290,7 @@ static union _zend_function *dbh_method_get( if (zend_hash_find(dbh->cls_methods[PDO_DBH_DRIVER_METHOD_KIND_DBH], lc_method_name, method_len+1, (void**)&fbc) == FAILURE) { - if (std_object_handlers.get_method) { - fbc = std_object_handlers.get_method(object_pp, lc_method_name, method_len TSRMLS_CC); - } + if (!fbc) { fbc = NULL; } @@ -1304,6 +1301,12 @@ static union _zend_function *dbh_method_get( } out: + if (!fbc) { + if (std_object_handlers.get_method) { + fbc = std_object_handlers.get_method(object_pp, lc_method_name, method_len TSRMLS_CC); + } + } + efree(lc_method_name); return fbc; } diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c index 1913f0dc7..3d9effdf3 100644 --- a/ext/pdo/pdo_sql_parser.c +++ b/ext/pdo/pdo_sql_parser.c @@ -1,9 +1,9 @@ -/* Generated by re2c 0.11.0 on Mon Nov 26 16:10:28 2007 */ +/* Generated by re2c 0.13.6.dev on Thu Nov 13 21:23:12 2008 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.15 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.21 2008/12/31 11:17:41 sebastian Exp $ */ #include "php.h" #include "php_pdo_driver.h" @@ -52,9 +52,9 @@ static int scan(Scanner *s) { YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: goto yy11; case '"': goto yy2; case '\'': goto yy4; @@ -63,16 +63,17 @@ static int scan(Scanner *s) default: goto yy8; } yy2: - yych = *++YYCURSOR; - goto yy24; + yych = *(YYMARKER = ++YYCURSOR); + if (yych >= 0x01) goto yy26; yy3: { SKIP_ONE(PDO_PARSER_TEXT); } yy4: - yych = *++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy3; goto yy20; yy5: yych = *++YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -142,7 +143,7 @@ yy5: } yy6: ++YYCURSOR; - switch((yych = *YYCURSOR)) { + switch ((yych = *YYCURSOR)) { case ':': case '?': goto yy13; default: goto yy7; @@ -151,9 +152,9 @@ yy7: { RET(PDO_PARSER_BIND_POS); } yy8: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: case '"': case '\'': @@ -168,9 +169,9 @@ yy11: { RET(PDO_PARSER_EOI); } yy13: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case ':': case '?': goto yy13; default: goto yy15; @@ -179,9 +180,9 @@ yy15: { RET(PDO_PARSER_TEXT); } yy16: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -251,26 +252,45 @@ yy18: { RET(PDO_PARSER_BIND); } yy19: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy20: - switch(yych) { - case '\'': goto yy21; + switch (yych) { + case 0x00: goto yy21; + case '\'': goto yy23; + case '\\': goto yy22; default: goto yy19; } yy21: + YYCURSOR = YYMARKER; + goto yy3; +yy22: ++YYCURSOR; - { RET(PDO_PARSER_TEXT); } + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy19; yy23: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + { RET(PDO_PARSER_TEXT); } +yy25: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy24: - switch(yych) { - case '"': goto yy25; - default: goto yy23; +yy26: + switch (yych) { + case 0x00: goto yy21; + case '"': goto yy28; + case '\\': goto yy27; + default: goto yy25; } -yy25: +yy27: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy25; +yy28: ++YYCURSOR; { RET(PDO_PARSER_TEXT); } } @@ -510,9 +530,9 @@ rewrite: } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { /* rewrite ? to :pdoX */ - char idxbuf[32]; + char *name, *idxbuf; const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - char *name; + int bind_no = 1; newbuffer_len = inquery_len; @@ -528,21 +548,19 @@ rewrite: /* check if bound parameter is already available */ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) { - snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1); + spprintf(&idxbuf, 0, tmpl, bind_no++); } else { - memset(idxbuf, 0, sizeof(idxbuf)); - memcpy(idxbuf, p, sizeof(idxbuf)); + idxbuf = estrdup(p); skip_map = 1; } - plc->quoted = estrdup(idxbuf); + 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); } diff --git a/ext/pdo/pdo_sql_parser.c.orig b/ext/pdo/pdo_sql_parser.c.orig index d507f7d9c..8ccf28c6f 100644 --- a/ext/pdo/pdo_sql_parser.c.orig +++ b/ext/pdo/pdo_sql_parser.c.orig @@ -1,10 +1,10 @@ -/* Generated by re2c 0.11.0 on Mon Nov 26 16:10:28 2007 */ +/* Generated by re2c 0.13.6.dev on Thu Nov 13 21:23:12 2008 */ #line 1 "ext/pdo/pdo_sql_parser.re" /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.15 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.21 2008/12/31 11:17:41 sebastian Exp $ */ #include "php.h" #include "php_pdo_driver.h" @@ -55,9 +55,9 @@ static int scan(Scanner *s) { YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: goto yy11; case '"': goto yy2; case '\'': goto yy4; @@ -66,18 +66,19 @@ static int scan(Scanner *s) default: goto yy8; } yy2: - yych = *++YYCURSOR; - goto yy24; + yych = *(YYMARKER = ++YYCURSOR); + if (yych >= 0x01) goto yy26; yy3: #line 63 "ext/pdo/pdo_sql_parser.re" { SKIP_ONE(PDO_PARSER_TEXT); } #line 75 "ext/pdo/pdo_sql_parser.c" yy4: - yych = *++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy3; goto yy20; yy5: yych = *++YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -147,7 +148,7 @@ yy5: } yy6: ++YYCURSOR; - switch((yych = *YYCURSOR)) { + switch ((yych = *YYCURSOR)) { case ':': case '?': goto yy13; default: goto yy7; @@ -155,12 +156,12 @@ yy6: yy7: #line 62 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND_POS); } -#line 159 "ext/pdo/pdo_sql_parser.c" +#line 160 "ext/pdo/pdo_sql_parser.c" yy8: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: case '"': case '\'': @@ -171,17 +172,17 @@ yy8: yy10: #line 64 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 175 "ext/pdo/pdo_sql_parser.c" +#line 176 "ext/pdo/pdo_sql_parser.c" yy11: ++YYCURSOR; #line 65 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_EOI); } -#line 180 "ext/pdo/pdo_sql_parser.c" +#line 181 "ext/pdo/pdo_sql_parser.c" yy13: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case ':': case '?': goto yy13; default: goto yy15; @@ -189,12 +190,12 @@ yy13: yy15: #line 60 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 193 "ext/pdo/pdo_sql_parser.c" +#line 194 "ext/pdo/pdo_sql_parser.c" yy16: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -263,35 +264,54 @@ yy16: yy18: #line 61 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND); } -#line 267 "ext/pdo/pdo_sql_parser.c" +#line 268 "ext/pdo/pdo_sql_parser.c" yy19: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy20: - switch(yych) { - case '\'': goto yy21; + switch (yych) { + case 0x00: goto yy21; + case '\'': goto yy23; + case '\\': goto yy22; default: goto yy19; } yy21: + YYCURSOR = YYMARKER; + goto yy3; +yy22: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy19; +yy23: ++YYCURSOR; #line 59 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 281 "ext/pdo/pdo_sql_parser.c" -yy23: +#line 293 "ext/pdo/pdo_sql_parser.c" +yy25: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy24: - switch(yych) { - case '"': goto yy25; - default: goto yy23; +yy26: + switch (yych) { + case 0x00: goto yy21; + case '"': goto yy28; + case '\\': goto yy27; + default: goto yy25; } -yy25: +yy27: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy25; +yy28: ++YYCURSOR; #line 58 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 295 "ext/pdo/pdo_sql_parser.c" +#line 315 "ext/pdo/pdo_sql_parser.c" } #line 66 "ext/pdo/pdo_sql_parser.re" @@ -530,9 +550,9 @@ rewrite: } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { /* rewrite ? to :pdoX */ - char idxbuf[32]; + char *name, *idxbuf; const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - char *name; + int bind_no = 1; newbuffer_len = inquery_len; @@ -548,21 +568,19 @@ rewrite: /* check if bound parameter is already available */ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) { - snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1); + spprintf(&idxbuf, 0, tmpl, bind_no++); } else { - memset(idxbuf, 0, sizeof(idxbuf)); - memcpy(idxbuf, p, sizeof(idxbuf)); + idxbuf = estrdup(p); skip_map = 1; } - plc->quoted = estrdup(idxbuf); + 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); } diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re index 3b89d14d0..3199937a1 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.12 2007/12/31 07:17:40 sebastian Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.18 2008/12/31 11:16:23 sebastian Exp $ */ #include "php.h" #include "php_pdo_driver.h" @@ -50,15 +50,15 @@ static int scan(Scanner *s) QUESTION = [?]; SPECIALS = [:?"']; MULTICHAR = [:?]; - EOF = [\000]; + EOF = [\000]; ANYNOEOF = [\001-\377]; */ /*!re2c - (["] ([^"])* ["]) { RET(PDO_PARSER_TEXT); } - (['] ([^'])* [']) { RET(PDO_PARSER_TEXT); } + (["](([\\]ANYNOEOF)|ANYNOEOF\["\\])*["]) { RET(PDO_PARSER_TEXT); } + (['](([\\]ANYNOEOF)|ANYNOEOF\['\\])*[']) { RET(PDO_PARSER_TEXT); } MULTICHAR{2,} { RET(PDO_PARSER_TEXT); } - BINDCHR { RET(PDO_PARSER_BIND); } + BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } SPECIALS { SKIP_ONE(PDO_PARSER_TEXT); } (ANYNOEOF\SPECIALS)+ { RET(PDO_PARSER_TEXT); } @@ -299,9 +299,9 @@ rewrite: } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { /* rewrite ? to :pdoX */ - char idxbuf[32]; + char *name, *idxbuf; const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - char *name; + int bind_no = 1; newbuffer_len = inquery_len; @@ -317,21 +317,19 @@ rewrite: /* check if bound parameter is already available */ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) { - snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1); + spprintf(&idxbuf, 0, tmpl, bind_no++); } else { - memset(idxbuf, 0, sizeof(idxbuf)); - memcpy(idxbuf, p, sizeof(idxbuf)); + idxbuf = estrdup(p); skip_map = 1; } - plc->quoted = estrdup(idxbuf); + 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); } diff --git a/ext/pdo/pdo_sqlstate.c b/ext/pdo/pdo_sqlstate.c index 181415459..fa998a9bf 100644 --- a/ext/pdo/pdo_sqlstate.c +++ b/ext/pdo/pdo_sqlstate.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sqlstate.c,v 1.7.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_sqlstate.c,v 1.7.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 2e1621672..1b6ff263a 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.118.2.38.2.34 2008/02/26 00:14:04 iliaa Exp $ */ +/* $Id: pdo_stmt.c,v 1.118.2.38.2.46 2008/12/31 11:17:41 sebastian Exp $ */ /* The PDO Statement Handle Class */ @@ -38,31 +38,44 @@ #include "php_memory_streams.h" /* {{{ arginfo */ +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_execute, 0, 0, 0) ZEND_ARG_INFO(0, bound_input_params) /* array */ ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetch, 0, 0, 0) ZEND_ARG_INFO(0, how) ZEND_ARG_INFO(0, orientation) ZEND_ARG_INFO(0, offset) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 1) + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchobject, 0, 0, 0) ZEND_ARG_INFO(0, class_name) ZEND_ARG_INFO(0, ctor_args) /* array */ ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchcolumn, 0, 0, 0) ZEND_ARG_INFO(0, column_number) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_fetchall, 0, 0, 0) ZEND_ARG_INFO(0, how) ZEND_ARG_INFO(0, class_name) ZEND_ARG_INFO(0, ctor_args) /* array */ ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindvalue, 0, 0, 2) ZEND_ARG_INFO(0, paramno) ZEND_ARG_INFO(0, param) ZEND_ARG_INFO(0, type) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindparam, 0, 0, 2) ZEND_ARG_INFO(0, paramno) ZEND_ARG_INFO(1, param) @@ -70,6 +83,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindparam, 0, 0, 2) ZEND_ARG_INFO(0, maxlen) ZEND_ARG_INFO(0, driverdata) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindcolumn, 0, 0, 2) ZEND_ARG_INFO(0, column) ZEND_ARG_INFO(1, param) @@ -77,16 +92,24 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_bindcolumn, 0, 0, 2) ZEND_ARG_INFO(0, maxlen) ZEND_ARG_INFO(0, driverdata) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_setattribute, 0) ZEND_ARG_INFO(0, attribute) ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getattribute, 0) ZEND_ARG_INFO(0, attribute) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO(arginfo_pdostatement_getcolumnmeta, 0) ZEND_ARG_INFO(0, column) ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_setfetchmode, 0, 0, 1) ZEND_ARG_INFO(0, mode) ZEND_ARG_INFO(0, params) @@ -564,6 +587,8 @@ static inline void fetch_value(pdo_stmt_t *stmt, zval *dest, int colno, int *typ case PDO_PARAM_LOB: if (value == NULL) { ZVAL_NULL(dest); + } else if (value[0] == '\0') { + ZVAL_EMPTY_STRING(dest); } else if (value_len == 0) { if (stmt->dbh->stringify || new_type == PDO_PARAM_STR) { char *buf = NULL; @@ -891,7 +916,7 @@ static int do_fetch_opt_finish(pdo_stmt_t *stmt, int free_ctor_agrs TSRMLS_DC) / static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value, enum pdo_fetch_type how, enum pdo_fetch_orientation ori, long offset, zval *return_all TSRMLS_DC) /* {{{ */ { - int flags = how & PDO_FETCH_FLAGS, idx, old_arg_count = 0; + int flags, idx, old_arg_count = 0; zend_class_entry *ce = NULL, *old_ce = NULL; zval grp_val, *grp, **pgrp, *retval, *old_ctor_args = NULL; int colno; @@ -899,6 +924,7 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value, if (how == PDO_FETCH_USE_DEFAULT) { how = stmt->default_fetch_type; } + flags = how & PDO_FETCH_FLAGS; how = how & ~PDO_FETCH_FLAGS; if (!do_fetch_common(stmt, ori, offset, do_bind TSRMLS_CC)) { @@ -1365,7 +1391,7 @@ static PHP_METHOD(PDOStatement, fetch) } /* }}} */ -/* {{{ proto mixed PDOStatement::fetchObject(string class_name [, NULL|array ctor_args]) +/* {{{ proto mixed PDOStatement::fetchObject([string class_name [, NULL|array ctor_args]]) Fetches the next row and returns it as an object. */ static PHP_METHOD(PDOStatement, fetchObject) { @@ -1473,7 +1499,7 @@ static PHP_METHOD(PDOStatement, fetchAll) zval *arg2; zend_class_entry *old_ce; zval *old_ctor_args, *ctor_args = NULL; - int error = 0, old_arg_count; + int error = 0, flags, old_arg_count; PHP_STMT_GET_OBJ; if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lzz", &how, &arg2, &ctor_args)) { @@ -1565,7 +1591,10 @@ static PHP_METHOD(PDOStatement, fetchAll) } } + flags = how & PDO_FETCH_FLAGS; + if ((how & ~PDO_FETCH_FLAGS) == PDO_FETCH_USE_DEFAULT) { + flags |= stmt->default_fetch_type & PDO_FETCH_FLAGS; how |= stmt->default_fetch_type & ~PDO_FETCH_FLAGS; } @@ -1580,7 +1609,7 @@ static PHP_METHOD(PDOStatement, fetchAll) } else { return_all = 0; } - if (!do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)) { + if (!do_fetch(stmt, TRUE, data, how | flags, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)) { FREE_ZVAL(data); error = 2; } @@ -1589,15 +1618,15 @@ static PHP_METHOD(PDOStatement, fetchAll) if ((how & PDO_FETCH_GROUP)) { do { MAKE_STD_ZVAL(data); - } while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)); + } while (do_fetch(stmt, TRUE, data, how | flags, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)); } else if (how == PDO_FETCH_KEY_PAIR || (how == PDO_FETCH_USE_DEFAULT && stmt->default_fetch_type == PDO_FETCH_KEY_PAIR)) { - while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)); + while (do_fetch(stmt, TRUE, data, how | flags, PDO_FETCH_ORI_NEXT, 0, return_all TSRMLS_CC)); } else { array_init(return_value); do { add_next_index_zval(return_value, data); MAKE_STD_ZVAL(data); - } while (do_fetch(stmt, TRUE, data, how, PDO_FETCH_ORI_NEXT, 0, 0 TSRMLS_CC)); + } while (do_fetch(stmt, TRUE, data, how | flags, PDO_FETCH_ORI_NEXT, 0, 0 TSRMLS_CC)); } FREE_ZVAL(data); } @@ -1893,7 +1922,7 @@ static PHP_METHOD(PDOStatement, getColumnMeta) int pdo_stmt_setup_fetch_mode(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int skip) { long mode = PDO_FETCH_BOTH; - int argc = ZEND_NUM_ARGS() - skip; + int flags, argc = ZEND_NUM_ARGS() - skip; zval ***args; zend_class_entry **cep; @@ -1926,6 +1955,7 @@ fail_out: convert_to_long_ex(args[skip]); mode = Z_LVAL_PP(args[skip]); + flags = mode & PDO_FETCH_FLAGS; if (!pdo_stmt_verify_mode(stmt, mode, 0 TSRMLS_CC)) { efree(args); @@ -1953,21 +1983,30 @@ fail_out: break; case PDO_FETCH_CLASS: - if (argc < 2 || argc > 3) { - goto fail_out; - } - convert_to_string_ex(args[skip+1]); - - if (FAILURE == zend_lookup_class(Z_STRVAL_PP(args[skip+1]), - Z_STRLEN_PP(args[skip+1]), &cep TSRMLS_CC)) { - goto fail_out; - } + /* Gets its class name from 1st column */ + if ((flags & PDO_FETCH_CLASSTYPE) == PDO_FETCH_CLASSTYPE) { + if (argc != 1) { + goto fail_out; + } + stmt->fetch.cls.ce = NULL; + } else { + if (argc < 2 || argc > 3) { + goto fail_out; + } + convert_to_string_ex(args[skip+1]); - if (!cep || !*cep) { - goto fail_out; + if (FAILURE == zend_lookup_class(Z_STRVAL_PP(args[skip+1]), + Z_STRLEN_PP(args[skip+1]), &cep TSRMLS_CC)) { + goto fail_out; + } + + if (!cep || !*cep) { + goto fail_out; + } + + stmt->fetch.cls.ce = *cep; } - - stmt->fetch.cls.ce = *cep; + stmt->fetch.cls.ctor_args = NULL; #ifdef ilia_0 /* we'll only need this when we have persistent statements, if ever */ if (stmt->dbh->is_persistent) { @@ -2139,17 +2178,18 @@ static PHP_METHOD(PDOStatement, debugDumpParams) uint len; ulong num; - if (zend_hash_get_current_key_ex(stmt->bound_params, &str, &len, &num, 0, &pos) == HASH_KEY_IS_STRING) { - php_stream_printf(out TSRMLS_CC, "Key: Position #%d:\n", num); + if (zend_hash_get_current_key_ex(stmt->bound_params, &str, &len, &num, 0, &pos) == HASH_KEY_IS_LONG) { + php_stream_printf(out TSRMLS_CC, "Key: Position #%ld:\n", num); } else { php_stream_printf(out TSRMLS_CC, "Key: Name: [%d] %.*s\n", len, len, str); } - php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] %.*s\nis_param=%d\nparam_type=%d\n", - param->paramno, param->namelen, param->namelen, param->name, + php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] \"%.*s\"\nis_param=%d\nparam_type=%d\n", + param->paramno, param->namelen, param->namelen, param->name ? param->name : "", param->is_param, param->param_type); + zend_hash_move_forward_ex(stmt->bound_params, &pos); } } @@ -2557,6 +2597,7 @@ static zval *row_prop_or_dim_read(zval *object, zval *member, int type TSRMLS_DC int colno = -1; MAKE_STD_ZVAL(return_value); + RETVAL_NULL(); if (Z_TYPE_P(member) == IS_LONG) { if (Z_LVAL_P(member) >= 0 && Z_LVAL_P(member) < stmt->column_count) { @@ -2569,9 +2610,15 @@ static zval *row_prop_or_dim_read(zval *object, zval *member, int type TSRMLS_DC for (colno = 0; colno < stmt->column_count; colno++) { if (strcmp(stmt->columns[colno].name, Z_STRVAL_P(member)) == 0) { fetch_value(stmt, return_value, colno, NULL TSRMLS_CC); - break; + return_value->refcount = 0; + return_value->is_ref = 0; + return return_value; } } + if (strcmp(Z_STRVAL_P(member), "queryString") == 0) { + zval_ptr_dtor(&return_value); + return std_object_handlers.read_property(object, member, IS_STRING TSRMLS_CC); + } } return_value->refcount = 0; @@ -2711,10 +2758,12 @@ zend_object_handlers pdo_row_object_handlers = { void pdo_row_free_storage(pdo_stmt_t *stmt TSRMLS_DC) { - ZVAL_NULL(&stmt->lazy_object_ref); - - if (--stmt->refcount == 0) { - free_statement(stmt TSRMLS_CC); + if (stmt) { + ZVAL_NULL(&stmt->lazy_object_ref); + + if (--stmt->refcount == 0) { + free_statement(stmt TSRMLS_CC); + } } } diff --git a/ext/pdo/php_pdo.h b/ext/pdo/php_pdo.h index 4812a6d48..b749dd61a 100755 --- a/ext/pdo/php_pdo.h +++ b/ext/pdo/php_pdo.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo.h,v 1.7.2.5.2.4 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo.h,v 1.7.2.5.2.5 2008/12/31 11:17:41 sebastian Exp $ */ #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 eec8f2137..324c630a9 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_driver.h,v 1.66.2.11.2.8 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_driver.h,v 1.66.2.11.2.9 2008/12/31 11:17:41 sebastian Exp $ */ #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 dd2218b3d..8d3967a1d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_int.h,v 1.17.2.6.2.3 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_int.h,v 1.17.2.6.2.4 2008/12/31 11:17:41 sebastian Exp $ */ /* Stuff private to the PDO extension and not for consumption by PDO drivers * */ diff --git a/ext/pdo/tests/bug_44159.phpt b/ext/pdo/tests/bug_44159.phpt index db4da4013..6c7415ae0 100644 --- a/ext/pdo/tests/bug_44159.phpt +++ b/ext/pdo/tests/bug_44159.phpt @@ -7,7 +7,8 @@ if (!extension_loaded('pdo_sqlite')) die('skip no pdo_sqlite'); --FILE-- setAttribute($attr, 'nonsense')); } +@unlink($dir."/foo.db"); + ?> --EXPECTF-- Warning: PDO::setAttribute(): SQLSTATE[HY000]: General error: PDO::ATTR_STATEMENT_CLASS requires format array(classname, array(ctor_args)); the classname must be a string specifying an existing class in %s on line %d diff --git a/ext/pdo/tests/pdo_033.phpt b/ext/pdo/tests/pdo_033.phpt index 9739c0e0e..6f78be6ed 100644 --- a/ext/pdo/tests/pdo_033.phpt +++ b/ext/pdo/tests/pdo_033.phpt @@ -18,7 +18,11 @@ $unquoted = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a $quoted = $db->quote($unquoted); -$db->query("CREATE TABLE test (t char(100))"); +$len = strlen($unquoted); + +@$db->exec("DROP TABLE test"); + +$db->query("CREATE TABLE test (t char($len))"); $db->query("INSERT INTO test (t) VALUES($quoted)"); $stmt = $db->prepare('SELECT * from test'); @@ -26,6 +30,7 @@ $stmt->execute(); print_r($stmt->fetchAll(PDO::FETCH_ASSOC)); +$db->exec("DROP TABLE test"); ?> --EXPECT-- diff --git a/ext/pdo/tests/pdorow.phpt b/ext/pdo/tests/pdorow.phpt new file mode 100644 index 000000000..b33dd155d --- /dev/null +++ b/ext/pdo/tests/pdorow.phpt @@ -0,0 +1,10 @@ +--TEST-- +Trying instantiate a PDORow object manually +--FILE-- + +--EXPECTF-- +Fatal error: PDORow::__construct(): You should not create a PDOStatement manually in %s on line %d diff --git a/ext/pdo_dblib/config.m4 b/ext/pdo_dblib/config.m4 index 1141f64fa..431be826b 100644 --- a/ext/pdo_dblib/config.m4 +++ b/ext/pdo_dblib/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.2.2.2.2.1 2007/07/03 17:25:34 sniper Exp $ +dnl $Id: config.m4,v 1.2.2.2.2.2 2008/10/04 13:19:22 felipe Exp $ dnl if test "$PHP_PDO" != "no"; then @@ -13,11 +13,11 @@ if test "$PHP_PDO_DBLIB" != "no"; then if test "$PHP_PDO_DBLIB" = "yes"; then for i in /usr/local /usr; do - if test -f $i/include/tds.h; then + if test -f $i/include/sybdb.h; then PDO_FREETDS_INSTALLATION_DIR=$i PDO_FREETDS_INCLUDE_DIR=$i/include break - elif test -f $i/include/freetds/tds.h; then + elif test -f $i/include/freetds/sybdb.h; then PDO_FREETDS_INSTALLATION_DIR=$i PDO_FREETDS_INCLUDE_DIR=$i/include/freetds break; @@ -30,10 +30,10 @@ if test "$PHP_PDO_DBLIB" != "no"; then elif test "$PHP_PDO_DBLIB" != "no"; then - if test -f $PHP_PDO_DBLIB/include/tds.h; then + if test -f $PHP_PDO_DBLIB/include/sybdb.h; then PDO_FREETDS_INSTALLATION_DIR=$PHP_PDO_DBLIB PDO_FREETDS_INCLUDE_DIR=$PHP_PDO_DBLIB/include - elif test -f $PHP_PDO_DBLIB/include/freetds/tds.h; then + elif test -f $PHP_PDO_DBLIB/include/freetds/sybdb.h; then PDO_FREETDS_INSTALLATION_DIR=$PHP_PDO_DBLIB PDO_FREETDS_INCLUDE_DIR=$PHP_PDO_DBLIB/include/freetds else @@ -45,8 +45,8 @@ if test "$PHP_PDO_DBLIB" != "no"; then PHP_LIBDIR=lib fi - if test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libtds.a" && test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libtds.so"; then - AC_MSG_ERROR(Could not find $PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libtds.[a|so]) + if test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.a" && test ! -r "$PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.so"; then + AC_MSG_ERROR(Could not find $PDO_FREETDS_INSTALLATION_DIR/$PHP_LIBDIR/libsybdb.[a|so]) fi PHP_ADD_INCLUDE($PDO_FREETDS_INCLUDE_DIR) diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c index 1d7a826e7..35a0e8ae6 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dblib_driver.c,v 1.9.2.2.2.3 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: dblib_driver.c,v 1.9.2.2.2.4 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c index 6302fc3ae..1846ecf9e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dblib_stmt.c,v 1.6.2.2.2.5 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: dblib_stmt.c,v 1.6.2.2.2.6 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c index 5203da769..36f33e3eb 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dblib.c,v 1.9.2.6.2.4 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_dblib.c,v 1.9.2.6.2.5 2008/12/31 11:17:41 sebastian Exp $ */ #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 6c546e1b2..174cb946e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_dblib.h,v 1.2.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_dblib.h,v 1.2.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #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 8f3096522..364610c4c 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_dblib_int.h,v 1.4.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_dblib_int.h,v 1.4.2.1.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #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 e3d777be6..954b2a0c9 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: firebird_driver.c,v 1.17.2.2.2.5 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: firebird_driver.c,v 1.17.2.2.2.6 2008/12/31 11:17:41 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c index b58ea1b17..aa1b35c00 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: firebird_statement.c,v 1.18.2.1.2.6 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: firebird_statement.c,v 1.18.2.1.2.8 2009/02/09 12:07:35 felipe Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -527,6 +527,9 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat case PDO_PARAM_EVT_ALLOC: if (param->is_param) { /* allocate the parameter */ + if (var->sqlind) { + efree(var->sqlind); + } var->sqlind = (void*)emalloc(var->sqllen + 2*sizeof(short)); var->sqldata = &((char*)var->sqlind)[sizeof(short)]; } diff --git a/ext/pdo_firebird/pdo_firebird.c b/ext/pdo_firebird/pdo_firebird.c index a5b8156e8..5d20234e5 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_firebird.c,v 1.4.2.3.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_firebird.c,v 1.4.2.3.2.3 2008/12/31 11:17:41 sebastian Exp $ */ #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 0711450a5..0531e538e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_firebird.h,v 1.3.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_firebird.h,v 1.3.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 c49a31095..d3755e823 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_firebird_int.h,v 1.10.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_firebird_int.h,v 1.10.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_PDO_FIREBIRD_INT_H #define PHP_PDO_FIREBIRD_INT_H diff --git a/ext/pdo_firebird/tests/ddl.phpt b/ext/pdo_firebird/tests/ddl.phpt index d03e48b7a..98a148e8f 100644 --- a/ext/pdo_firebird/tests/ddl.phpt +++ b/ext/pdo_firebird/tests/ddl.phpt @@ -3,19 +3,19 @@ PDO_Firebird: DDL/transactions --SKIPIF-- --FILE-- -setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_WARNING); + $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $db->exec("CREATE TABLE ddl (id INT NOT NULL PRIMARY KEY, text BLOB SUB_TYPE 1)"); $db->exec("CREATE GENERATOR gen_ddl_id"); $db->exec("CREATE TRIGGER ddl_bi FOR ddl BEFORE INSERT AS BEGIN IF (NEW.id IS NULL) THEN NEW.id=GEN_ID(gen_ddl_id,1); END"); - $db->setAttribute(PDO_ATTR_AUTOCOMMIT,0); + $db->setAttribute(PDO::ATTR_AUTOCOMMIT,0); $db->beginTransaction(); var_dump($db->exec("INSERT INTO ddl (text) VALUES ('bla')")); diff --git a/ext/pdo_firebird/tests/execute.phpt b/ext/pdo_firebird/tests/execute.phpt index bfaa31335..4097f70ca 100644 --- a/ext/pdo_firebird/tests/execute.phpt +++ b/ext/pdo_firebird/tests/execute.phpt @@ -5,15 +5,15 @@ PDO_Firebird: prepare/execute/binding --INI-- ibase.timestampformat=%Y-%m-%d %H:%M:%S --FILE-- -getAttribute(PDO_ATTR_CONNECTION_STATUS)); + var_dump($db->getAttribute(PDO::ATTR_CONNECTION_STATUS)); - $db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_WARNING); + $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $db->exec("CREATE TABLE ddl (id SMALLINT NOT NULL PRIMARY KEY, text VARCHAR(32), datetime TIMESTAMP DEFAULT '2000-02-12' NOT NULL)"); @@ -21,11 +21,13 @@ ibase.timestampformat=%Y-%m-%d %H:%M:%S $s = $db->prepare("SELECT * FROM ddl WHERE id=? FOR UPDATE"); - $s->bindParam(1,$id = 0); - $s->bindColumn("TEXT",$var = null); + $id = 0; + $s->bindParam(1,$id); + $var = null; + $s->bindColumn("TEXT",$var); $id = 1; $s->execute(); - $s->setAttribute(PDO_ATTR_CURSOR_NAME, "c"); + $s->setAttribute(PDO::ATTR_CURSOR_NAME, "c"); var_dump($id); diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 3073c4bf4..c69bd8623 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysql_driver.c,v 1.59.2.13.2.6 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: mysql_driver.c,v 1.59.2.13.2.8 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -496,12 +496,12 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ if ((PG(open_basedir) && PG(open_basedir)[0] != '\0') || PG(safe_mode)) { local_infile = 0; } - +#ifdef MYSQL_OPT_LOCAL_INFILE if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE, (const char *)&local_infile)) { pdo_mysql_error(dbh); goto cleanup; } - +#endif #ifdef MYSQL_OPT_RECONNECT /* since 5.0.3, the default for this option is 0 if not specified. * we want the old behaviour */ diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c index 0a1a66e87..92095211c 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysql_statement.c,v 1.48.2.14.2.7 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: mysql_statement.c,v 1.48.2.14.2.8 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c index 315770b12..8218de6fb 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_mysql.c,v 1.8.2.13.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_mysql.c,v 1.8.2.13.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_mysql/php_pdo_mysql.h b/ext/pdo_mysql/php_pdo_mysql.h index 3a5ee2b8f..cd0b2974e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_mysql.h,v 1.3.2.1.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_mysql.h,v 1.3.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 c6e60bd35..95f899375 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_mysql_int.h,v 1.16.2.4.2.2 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: php_pdo_mysql_int.h,v 1.16.2.4.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_PDO_MYSQL_INT_H #define PHP_PDO_MYSQL_INT_H diff --git a/ext/pdo_mysql/tests/bug41125.phpt b/ext/pdo_mysql/tests/bug41125.phpt new file mode 100644 index 000000000..29a98164d --- /dev/null +++ b/ext/pdo_mysql/tests/bug41125.phpt @@ -0,0 +1,162 @@ +--TEST-- +Bug #41125 (PDO mysql + quote() + prepare() can result in seg fault) +--SKIPIF-- + +--FILE-- +quote('%' . $search . '%'); +$stmt = $db->prepare($sql); +$stmt->execute(); +print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n"; +print implode(' - ', $stmt->errorinfo()) ."\n"; + +print "-------------------------------------------------------\n"; + +$queries = array( + "SELECT 1 FROM DUAL WHERE 1 = '?\'\''", + "SELECT 'a\\'0' FROM DUAL WHERE 1 = ?", + "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND ?", + "SELECT 'foo?bar', '', '''' FROM DUAL WHERE ?" +); + +foreach ($queries as $k => $query) { + $stmt = $db->prepare($query); + $stmt->execute(array(1)); + printf("[%d] Query: [[%s]]\n", $k + 1, $query); + print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n"; + print implode(' - ', $stmt->errorinfo()) ."\n"; + print "--------\n"; +} + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); +$sql = "SELECT upper(:id) FROM DUAL WHERE '1'"; +$stmt = $db->prepare($sql); + +$id = 'o\'\0'; +$stmt->bindParam(':id', $id); +$stmt->execute(); +printf("Query: [[%s]]\n", $sql); +print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n"; +print implode(' - ', $stmt->errorinfo()) ."\n"; + +print "-------------------------------------------------------\n"; + +$queries = array( + "SELECT 1, 'foo' FROM DUAL WHERE 1 = :id AND '\\0' IS NULL AND 2 <> :id", + "SELECT 1 FROM DUAL WHERE 1 = :id AND '' AND 2 <> :id", + "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'\'' = '''' AND 2 <> :id", + "SELECT 1 FROM DUAL WHERE 1 = :id AND '\'' = '''' AND 2 <> :id", + "SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1", + "SELECT 'a''', '\'b\'' FROM DUAL WHERE '''' LIKE '\\'' AND 1", + "SELECT UPPER(:id) FROM DUAL WHERE '1'", + "SELECT 1 FROM DUAL WHERE '\''", + "SELECT 1 FROM DUAL WHERE :id AND '\\0' OR :id", + "SELECT 1 FROM DUAL WHERE 'a\\f\\n\\0' AND 1 >= :id", + "SELECT 1 FROM DUAL WHERE '\'' = ''''", + "SELECT '\\n' '1 FROM DUAL WHERE '''' and :id'", + "SELECT 1 'FROM DUAL WHERE :id AND '''' = '''' OR 1 = 1 AND ':id", +); + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); +$id = 1; + +foreach ($queries as $k => $query) { + $stmt = $db->prepare($query); + $stmt->bindParam(':id', $id); + $stmt->execute(); + + printf("[%d] Query: [[%s]]\n", $k + 1, $query); + print implode(' - ', (($r = @$stmt->fetch(PDO::FETCH_NUM)) ? $r : array())) ."\n"; + print implode(' - ', $stmt->errorinfo()) ."\n"; + print "--------\n"; +} + +?> +--EXPECT-- +1 +00000 +------------------------------------------------------- +[1] Query: [[SELECT 1 FROM DUAL WHERE 1 = '?\'\'']] + +00000 +-------- +[2] Query: [[SELECT 'a\'0' FROM DUAL WHERE 1 = ?]] +a'0 +00000 +-------- +[3] Query: [[SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\'' AND ?]] +a - b' +00000 +-------- +[4] Query: [[SELECT 'foo?bar', '', '''' FROM DUAL WHERE ?]] +foo?bar - - ' +00000 +-------- +Query: [[SELECT upper(:id) FROM DUAL WHERE '1']] +O'\0 +00000 +------------------------------------------------------- +[1] Query: [[SELECT 1, 'foo' FROM DUAL WHERE 1 = :id AND '\0' IS NULL AND 2 <> :id]] + +00000 +-------- +[2] Query: [[SELECT 1 FROM DUAL WHERE 1 = :id AND '' AND 2 <> :id]] + +00000 +-------- +[3] Query: [[SELECT 1 FROM DUAL WHERE 1 = :id AND '\'\'' = '''' AND 2 <> :id]] + +00000 +-------- +[4] Query: [[SELECT 1 FROM DUAL WHERE 1 = :id AND '\'' = '''' AND 2 <> :id]] +1 +00000 +-------- +[5] Query: [[SELECT 'a', 'b\'' FROM DUAL WHERE '''' LIKE '\'' AND 1]] +a - b' +00000 +-------- +[6] Query: [[SELECT 'a''', '\'b\'' FROM DUAL WHERE '''' LIKE '\'' AND 1]] +a' - 'b' +00000 +-------- +[7] Query: [[SELECT UPPER(:id) FROM DUAL WHERE '1']] +1 +00000 +-------- +[8] Query: [[SELECT 1 FROM DUAL WHERE '\'']] + +00000 +-------- +[9] Query: [[SELECT 1 FROM DUAL WHERE :id AND '\0' OR :id]] +1 +00000 +-------- +[10] Query: [[SELECT 1 FROM DUAL WHERE 'a\f\n\0' AND 1 >= :id]] + +00000 +-------- +[11] Query: [[SELECT 1 FROM DUAL WHERE '\'' = '''']] +1 +00000 +-------- +[12] Query: [[SELECT '\n' '1 FROM DUAL WHERE '''' and :id']] + +1 FROM DUAL WHERE '' and :id +00000 +-------- +[13] Query: [[SELECT 1 'FROM DUAL WHERE :id AND '''' = '''' OR 1 = 1 AND ':id]] +1 +00000 +-------- diff --git a/ext/pdo_mysql/tests/bug44327.phpt b/ext/pdo_mysql/tests/bug44327.phpt new file mode 100644 index 000000000..3d461c0fc --- /dev/null +++ b/ext/pdo_mysql/tests/bug44327.phpt @@ -0,0 +1,64 @@ +--TEST-- +Bug #44327 (PDORow::queryString property & numeric offsets / Crash) +--SKIPIF-- + +--FILE-- +prepare("SELECT 1 AS \"one\""); + $stmt->execute(); + $row = $stmt->fetch(PDO::FETCH_LAZY); + var_dump($row); + var_dump($row->{0}); + var_dump($row->one); + var_dump($row->queryString); + + print "----------------------------------\n"; + + @$db->exec("DROP TABLE test"); + $db->exec("CREATE TABLE test (id INT)"); + $db->exec("INSERT INTO test(id) VALUES (1)"); + $stmt = $db->prepare("SELECT id FROM test"); + $stmt->execute(); + $row = $stmt->fetch(PDO::FETCH_LAZY); + var_dump($row); + var_dump($row->queryString); + @$db->exec("DROP TABLE test"); + + print "----------------------------------\n"; + + $stmt = $db->prepare('foo'); + @$stmt->execute(); + $row = $stmt->fetch(); + var_dump($row->queryString); + +?> +--EXPECTF-- +object(PDORow)#%d (2) { + ["queryString"]=> + string(17) "SELECT 1 AS "one"" + ["one"]=> + string(1) "1" +} +string(1) "1" +string(1) "1" +string(17) "SELECT 1 AS "one"" +---------------------------------- +object(PDORow)#%d (2) { + ["queryString"]=> + string(19) "SELECT id FROM test" + ["id"]=> + string(1) "1" +} +string(19) "SELECT id FROM test" +---------------------------------- + +Notice: Trying to get property of non-object in %s on line %d +NULL diff --git a/ext/pdo_mysql/tests/bug46292.phpt b/ext/pdo_mysql/tests/bug46292.phpt new file mode 100644 index 000000000..df66dbb4c --- /dev/null +++ b/ext/pdo_mysql/tests/bug46292.phpt @@ -0,0 +1,80 @@ +--TEST-- +Bug #46292 (PDO::setFetchMode() shouldn't requires the 2nd arg when using FETCH_CLASSTYPE) +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + + $pdoDb->query('DROP TABLE IF EXISTS testz'); + + $pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value INT)'); + + $pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)"); + + $stmt = $pdoDb->prepare("SELECT * FROM testz"); + + var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | PDO::FETCH_GROUP)); + $stmt->execute(); + + var_dump($stmt->fetch()); + var_dump($stmt->fetch()); + var_dump($stmt->fetchAll()); + + $pdoDb->query('DROP TABLE IF EXISTS testz'); + +?> +--EXPECTF-- +bool(true) +myclass::__construct() +object(myclass)#%d (1) { + ["value"]=> + string(1) "1" +} +myclass::__construct() +object(myclass2)#%d (1) { + ["value"]=> + string(1) "2" +} +myclass::__construct() +array(2) { + [0]=> + object(myclass)#%d (1) { + ["value"]=> + NULL + } + [1]=> + object(stdClass)#%d (1) { + ["value"]=> + NULL + } +} diff --git a/ext/pdo_oci/oci_driver.c b/ext/pdo_oci/oci_driver.c index 7ed6d83fc..a91fcaf6b 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: oci_driver.c,v 1.24.2.4.2.10 2008/03/08 14:01:49 felipe Exp $ */ +/* $Id: oci_driver.c,v 1.24.2.4.2.11 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c index 9b453e460..e5fc91b00 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: oci_statement.c,v 1.16.2.10.2.8 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: oci_statement.c,v 1.16.2.10.2.9 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_oci/pdo_oci.c b/ext/pdo_oci/pdo_oci.c index 68d1d8385..d33bd071d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_oci.c,v 1.5.2.6.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pdo_oci.c,v 1.5.2.6.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 74ecee076..51b15d4e2 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_oci.h,v 1.2.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_oci.h,v 1.2.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 33bf1ccf8..40da800e1 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_oci_int.h,v 1.4.2.2.2.5 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_oci_int.h,v 1.4.2.2.2.6 2008/12/31 11:17:42 sebastian Exp $ */ #include diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index da45d5836..d7da4a59b 100755 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -1,473 +1,473 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 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 | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Wez Furlong | - +----------------------------------------------------------------------+ -*/ - -/* $Id: odbc_driver.c,v 1.27.2.4.2.4 2007/12/31 07:20:10 sebastian Exp $ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_ini.h" -#include "ext/standard/info.h" -#include "pdo/php_pdo.h" -#include "pdo/php_pdo_driver.h" -#include "php_pdo_odbc.h" -#include "php_pdo_odbc_int.h" -#include "zend_exceptions.h" - -static int pdo_odbc_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *info TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - pdo_odbc_errinfo *einfo = &H->einfo; - pdo_odbc_stmt *S = NULL; - char *message = NULL; - - if (stmt) { - S = (pdo_odbc_stmt*)stmt->driver_data; - einfo = &S->einfo; - } - - spprintf(&message, 0, "%s (%s[%ld] at %s:%d)", - einfo->last_err_msg, - einfo->what, einfo->last_error, - einfo->file, einfo->line); - - add_next_index_long(info, einfo->last_error); - add_next_index_string(info, message, 0); - add_next_index_string(info, einfo->last_state, 1); - - return 1; -} - - -void pdo_odbc_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, PDO_ODBC_HSTMT statement, char *what, const char *file, int line TSRMLS_DC) /* {{{ */ -{ - SQLRETURN rc; - SQLSMALLINT errmsgsize = 0; - SQLHANDLE eh; - SQLSMALLINT htype, recno = 1; - pdo_odbc_db_handle *H = (pdo_odbc_db_handle*)dbh->driver_data; - pdo_odbc_errinfo *einfo = &H->einfo; - pdo_odbc_stmt *S = NULL; - pdo_error_type *pdo_err = &dbh->error_code; - - if (stmt) { - S = (pdo_odbc_stmt*)stmt->driver_data; - - einfo = &S->einfo; - pdo_err = &stmt->error_code; - } - - if (statement == SQL_NULL_HSTMT && S) { - statement = S->stmt; - } - - if (statement) { - htype = SQL_HANDLE_STMT; - eh = statement; - } else if (H->dbc) { - htype = SQL_HANDLE_DBC; - eh = H->dbc; - } else { - htype = SQL_HANDLE_ENV; - eh = H->env; - } - - rc = SQLGetDiagRec(htype, eh, recno++, einfo->last_state, &einfo->last_error, - einfo->last_err_msg, sizeof(einfo->last_err_msg)-1, &errmsgsize); - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - errmsgsize = 0; - } - - einfo->last_err_msg[errmsgsize] = '\0'; - einfo->file = file; - einfo->line = line; - einfo->what = what; - - strcpy(*pdo_err, einfo->last_state); -/* printf("@@ SQLSTATE[%s] %s\n", *pdo_err, einfo->last_err_msg); */ - if (!dbh->methods) { - zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "SQLSTATE[%s] %s: %d %s", - *pdo_err, what, einfo->last_error, einfo->last_err_msg); - } - - /* just like a cursor, once you start pulling, you need to keep - * going until the end; SQL Server (at least) will mess with the - * actual cursor state if you don't finish retrieving all the - * diagnostic records (which can be generated by PRINT statements - * in the query, for instance). */ - while (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { - char discard_state[5]; - char discard_buf[1024]; - SQLINTEGER code; - rc = SQLGetDiagRec(htype, eh, recno++, discard_state, &code, - discard_buf, sizeof(discard_buf)-1, &errmsgsize); - } - -} -/* }}} */ - -static int odbc_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle*)dbh->driver_data; - - if (H->dbc != SQL_NULL_HANDLE) { - SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); - SQLDisconnect(H->dbc); - SQLFreeHandle(SQL_HANDLE_DBC, H->dbc); - H->dbc = NULL; - } - SQLFreeHandle(SQL_HANDLE_ENV, H->env); - H->env = NULL; - pefree(H, dbh->is_persistent); - dbh->driver_data = NULL; - - return 0; -} - -static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC) -{ - RETCODE rc; - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - pdo_odbc_stmt *S = ecalloc(1, sizeof(*S)); - enum pdo_cursor_type cursor_type = PDO_CURSOR_FWDONLY; - int ret; - char *nsql = NULL; - int nsql_len = 0; - - S->H = H; - - /* before we prepare, we need to peek at the query; if it uses named parameters, - * we want PDO to rewrite them for us */ - stmt->supports_placeholders = PDO_PLACEHOLDER_POSITIONAL; - ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC); - - if (ret == 1) { - /* query was re-written */ - sql = nsql; - } else if (ret == -1) { - /* couldn't grok it */ - strcpy(dbh->error_code, stmt->error_code); - efree(S); - return 0; - } - - rc = SQLAllocHandle(SQL_HANDLE_STMT, H->dbc, &S->stmt); - - if (rc == SQL_INVALID_HANDLE || rc == SQL_ERROR) { - efree(S); - if (nsql) { - efree(nsql); - } - pdo_odbc_drv_error("SQLAllocStmt"); - return 0; - } - - cursor_type = pdo_attr_lval(driver_options, PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY TSRMLS_CC); - if (cursor_type != PDO_CURSOR_FWDONLY) { - rc = SQLSetStmtAttr(S->stmt, SQL_ATTR_CURSOR_SCROLLABLE, (void*)SQL_SCROLLABLE, 0); - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_stmt_error("SQLSetStmtAttr: SQL_ATTR_CURSOR_SCROLLABLE"); - SQLFreeHandle(SQL_HANDLE_STMT, S->stmt); - if (nsql) { - efree(nsql); - } - return 0; - } - } - - rc = SQLPrepare(S->stmt, (char*)sql, SQL_NTS); - if (nsql) { - efree(nsql); - } - - stmt->driver_data = S; - stmt->methods = &odbc_stmt_methods; - - if (rc != SQL_SUCCESS) { - pdo_odbc_stmt_error("SQLPrepare"); - if (rc != SQL_SUCCESS_WITH_INFO) { - /* clone error information into the db handle */ - strcpy(H->einfo.last_err_msg, S->einfo.last_err_msg); - H->einfo.file = S->einfo.file; - H->einfo.line = S->einfo.line; - H->einfo.what = S->einfo.what; - strcpy(dbh->error_code, stmt->error_code); - } - } - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - return 1; -} - -static long odbc_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - RETCODE rc; - long row_count = -1; - PDO_ODBC_HSTMT stmt; - - rc = SQLAllocHandle(SQL_HANDLE_STMT, H->dbc, &stmt); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLAllocHandle: STMT"); - return -1; - } - - rc = SQLExecDirect(stmt, (char *)sql, sql_len); - - if (rc == SQL_NO_DATA) { - /* If SQLExecDirect executes a searched update or delete statement that - * does not affect any rows at the data source, the call to - * SQLExecDirect returns SQL_NO_DATA. */ - row_count = 0; - goto out; - } - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_doer_error("SQLExecDirect"); - goto out; - } - - rc = SQLRowCount(stmt, &row_count); - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_doer_error("SQLRowCount"); - goto out; - } - if (row_count == -1) { - row_count = 0; - } -out: - SQLFreeHandle(SQL_HANDLE_STMT, stmt); - return row_count; -} - -static int odbc_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type param_type TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - /* TODO: figure it out */ - return 0; -} - -static int odbc_handle_begin(pdo_dbh_t *dbh TSRMLS_DC) -{ - if (dbh->auto_commit) { - /* we need to disable auto-commit now, to be able to initiate a transaction */ - RETCODE rc; - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - - rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_IS_INTEGER); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = OFF"); - return 0; - } - } - return 1; -} - -static int odbc_handle_commit(pdo_dbh_t *dbh TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - RETCODE rc; - - rc = SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_COMMIT); - - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLEndTran: Commit"); - - if (rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - } - - if (dbh->auto_commit) { - /* turn auto-commit back on again */ - rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_IS_INTEGER); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); - return 0; - } - } - return 1; -} - -static int odbc_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC) -{ - pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; - RETCODE rc; - - rc = SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); - - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLEndTran: Rollback"); - - if (rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - } - if (dbh->auto_commit && H->dbc) { - /* turn auto-commit back on again */ - rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_IS_INTEGER); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); - return 0; - } - } - - return 1; -} - -static int odbc_handle_get_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC) -{ - switch (attr) { - case PDO_ATTR_CLIENT_VERSION: - ZVAL_STRING(val, "ODBC-" PDO_ODBC_TYPE, 1); - return 1; - - case PDO_ATTR_SERVER_VERSION: - case PDO_ATTR_PREFETCH: - case PDO_ATTR_TIMEOUT: - case PDO_ATTR_SERVER_INFO: - case PDO_ATTR_CONNECTION_STATUS: - break; - - } - return 0; -} - -static struct pdo_dbh_methods odbc_methods = { - odbc_handle_closer, - odbc_handle_preparer, - odbc_handle_doer, - odbc_handle_quoter, - odbc_handle_begin, - odbc_handle_commit, - odbc_handle_rollback, - NULL, /* set attr */ - NULL, /* last id */ - pdo_odbc_fetch_error_func, - odbc_handle_get_attr, /* get attr */ - NULL, /* check_liveness */ -}; - -static int pdo_odbc_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) /* {{{ */ -{ - pdo_odbc_db_handle *H; - RETCODE rc; - int use_direct = 0; - SQLUINTEGER cursor_lib; - - H = pecalloc(1, sizeof(*H), dbh->is_persistent); - - dbh->driver_data = H; - - SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &H->env); - rc = SQLSetEnvAttr(H->env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_drv_error("SQLSetEnvAttr: ODBC3"); - goto fail; - } - -#ifdef SQL_ATTR_CONNECTION_POOLING - if (pdo_odbc_pool_on != SQL_CP_OFF) { - rc = SQLSetEnvAttr(H->env, SQL_ATTR_CP_MATCH, (void*)pdo_odbc_pool_mode, 0); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetEnvAttr: SQL_ATTR_CP_MATCH"); - goto fail; - } - } -#endif - - rc = SQLAllocHandle(SQL_HANDLE_DBC, H->env, &H->dbc); - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_drv_error("SQLAllocHandle (DBC)"); - goto fail; - } - - rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, - (SQLPOINTER)(dbh->auto_commit ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF), SQL_IS_INTEGER); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT"); - goto fail; - } - - /* set up the cursor library, if needed, or if configured explicitly */ - cursor_lib = pdo_attr_lval(driver_options, PDO_ODBC_ATTR_USE_CURSOR_LIBRARY, SQL_CUR_USE_IF_NEEDED TSRMLS_CC); - rc = SQLSetConnectAttr(H->dbc, SQL_ODBC_CURSORS, (void*)cursor_lib, SQL_IS_INTEGER); - if (rc != SQL_SUCCESS && cursor_lib != SQL_CUR_USE_IF_NEEDED) { - pdo_odbc_drv_error("SQLSetConnectAttr SQL_ODBC_CURSORS"); - goto fail; - } - - if (strchr(dbh->data_source, ';')) { - char dsnbuf[1024]; - short dsnbuflen; - - use_direct = 1; - - /* Force UID and PWD to be set in the DSN */ - if (dbh->username && *dbh->username && !strstr(dbh->data_source, "uid") - && !strstr(dbh->data_source, "UID")) { - char *dsn; - spprintf(&dsn, 0, "%s;UID=%s;PWD=%s", dbh->data_source, dbh->username, dbh->password); - pefree((char*)dbh->data_source, dbh->is_persistent); - dbh->data_source = dsn; - } - - rc = SQLDriverConnect(H->dbc, NULL, (char*)dbh->data_source, strlen(dbh->data_source), - dsnbuf, sizeof(dsnbuf)-1, &dsnbuflen, SQL_DRIVER_NOPROMPT); - } - if (!use_direct) { - rc = SQLConnect(H->dbc, (char*)dbh->data_source, SQL_NTS, dbh->username, SQL_NTS, dbh->password, SQL_NTS); - } - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - pdo_odbc_drv_error(use_direct ? "SQLDriverConnect" : "SQLConnect"); - goto fail; - } - - /* TODO: if we want to play nicely, we should check to see if the driver really supports ODBC v3 or not */ - - dbh->methods = &odbc_methods; - dbh->alloc_own_columns = 1; - - return 1; - -fail: - dbh->methods = &odbc_methods; - return 0; -} -/* }}} */ - -pdo_driver_t pdo_odbc_driver = { - PDO_DRIVER_HEADER(odbc), - pdo_odbc_handle_factory -}; - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2009 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 | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Wez Furlong | + +----------------------------------------------------------------------+ +*/ + +/* $Id: odbc_driver.c,v 1.27.2.4.2.6 2008/12/31 11:17:42 sebastian Exp $ */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" +#include "php_ini.h" +#include "ext/standard/info.h" +#include "pdo/php_pdo.h" +#include "pdo/php_pdo_driver.h" +#include "php_pdo_odbc.h" +#include "php_pdo_odbc_int.h" +#include "zend_exceptions.h" + +static int pdo_odbc_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *info TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + pdo_odbc_errinfo *einfo = &H->einfo; + pdo_odbc_stmt *S = NULL; + char *message = NULL; + + if (stmt) { + S = (pdo_odbc_stmt*)stmt->driver_data; + einfo = &S->einfo; + } + + spprintf(&message, 0, "%s (%s[%ld] at %s:%d)", + einfo->last_err_msg, + einfo->what, einfo->last_error, + einfo->file, einfo->line); + + add_next_index_long(info, einfo->last_error); + add_next_index_string(info, message, 0); + add_next_index_string(info, einfo->last_state, 1); + + return 1; +} + + +void pdo_odbc_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, PDO_ODBC_HSTMT statement, char *what, const char *file, int line TSRMLS_DC) /* {{{ */ +{ + SQLRETURN rc; + SQLSMALLINT errmsgsize = 0; + SQLHANDLE eh; + SQLSMALLINT htype, recno = 1; + pdo_odbc_db_handle *H = (pdo_odbc_db_handle*)dbh->driver_data; + pdo_odbc_errinfo *einfo = &H->einfo; + pdo_odbc_stmt *S = NULL; + pdo_error_type *pdo_err = &dbh->error_code; + + if (stmt) { + S = (pdo_odbc_stmt*)stmt->driver_data; + + einfo = &S->einfo; + pdo_err = &stmt->error_code; + } + + if (statement == SQL_NULL_HSTMT && S) { + statement = S->stmt; + } + + if (statement) { + htype = SQL_HANDLE_STMT; + eh = statement; + } else if (H->dbc) { + htype = SQL_HANDLE_DBC; + eh = H->dbc; + } else { + htype = SQL_HANDLE_ENV; + eh = H->env; + } + + rc = SQLGetDiagRec(htype, eh, recno++, einfo->last_state, &einfo->last_error, + einfo->last_err_msg, sizeof(einfo->last_err_msg)-1, &errmsgsize); + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + errmsgsize = 0; + } + + einfo->last_err_msg[errmsgsize] = '\0'; + einfo->file = file; + einfo->line = line; + einfo->what = what; + + strcpy(*pdo_err, einfo->last_state); +/* printf("@@ SQLSTATE[%s] %s\n", *pdo_err, einfo->last_err_msg); */ + if (!dbh->methods) { + zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "SQLSTATE[%s] %s: %d %s", + *pdo_err, what, einfo->last_error, einfo->last_err_msg); + } + + /* just like a cursor, once you start pulling, you need to keep + * going until the end; SQL Server (at least) will mess with the + * actual cursor state if you don't finish retrieving all the + * diagnostic records (which can be generated by PRINT statements + * in the query, for instance). */ + while (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { + char discard_state[5]; + char discard_buf[1024]; + SQLINTEGER code; + rc = SQLGetDiagRec(htype, eh, recno++, discard_state, &code, + discard_buf, sizeof(discard_buf)-1, &errmsgsize); + } + +} +/* }}} */ + +static int odbc_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle*)dbh->driver_data; + + if (H->dbc != SQL_NULL_HANDLE) { + SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); + SQLDisconnect(H->dbc); + SQLFreeHandle(SQL_HANDLE_DBC, H->dbc); + H->dbc = NULL; + } + SQLFreeHandle(SQL_HANDLE_ENV, H->env); + H->env = NULL; + pefree(H, dbh->is_persistent); + dbh->driver_data = NULL; + + return 0; +} + +static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC) +{ + RETCODE rc; + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + pdo_odbc_stmt *S = ecalloc(1, sizeof(*S)); + enum pdo_cursor_type cursor_type = PDO_CURSOR_FWDONLY; + int ret; + char *nsql = NULL; + int nsql_len = 0; + + S->H = H; + + /* before we prepare, we need to peek at the query; if it uses named parameters, + * we want PDO to rewrite them for us */ + stmt->supports_placeholders = PDO_PLACEHOLDER_POSITIONAL; + ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC); + + if (ret == 1) { + /* query was re-written */ + sql = nsql; + } else if (ret == -1) { + /* couldn't grok it */ + strcpy(dbh->error_code, stmt->error_code); + efree(S); + return 0; + } + + rc = SQLAllocHandle(SQL_HANDLE_STMT, H->dbc, &S->stmt); + + if (rc == SQL_INVALID_HANDLE || rc == SQL_ERROR) { + efree(S); + if (nsql) { + efree(nsql); + } + pdo_odbc_drv_error("SQLAllocStmt"); + return 0; + } + + cursor_type = pdo_attr_lval(driver_options, PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY TSRMLS_CC); + if (cursor_type != PDO_CURSOR_FWDONLY) { + rc = SQLSetStmtAttr(S->stmt, SQL_ATTR_CURSOR_SCROLLABLE, (void*)SQL_SCROLLABLE, 0); + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_stmt_error("SQLSetStmtAttr: SQL_ATTR_CURSOR_SCROLLABLE"); + SQLFreeHandle(SQL_HANDLE_STMT, S->stmt); + if (nsql) { + efree(nsql); + } + return 0; + } + } + + rc = SQLPrepare(S->stmt, (char*)sql, SQL_NTS); + if (nsql) { + efree(nsql); + } + + stmt->driver_data = S; + stmt->methods = &odbc_stmt_methods; + + if (rc != SQL_SUCCESS) { + pdo_odbc_stmt_error("SQLPrepare"); + if (rc != SQL_SUCCESS_WITH_INFO) { + /* clone error information into the db handle */ + strcpy(H->einfo.last_err_msg, S->einfo.last_err_msg); + H->einfo.file = S->einfo.file; + H->einfo.line = S->einfo.line; + H->einfo.what = S->einfo.what; + strcpy(dbh->error_code, stmt->error_code); + } + } + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + return 1; +} + +static long odbc_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + RETCODE rc; + long row_count = -1; + PDO_ODBC_HSTMT stmt; + + rc = SQLAllocHandle(SQL_HANDLE_STMT, H->dbc, &stmt); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLAllocHandle: STMT"); + return -1; + } + + rc = SQLExecDirect(stmt, (char *)sql, sql_len); + + if (rc == SQL_NO_DATA) { + /* If SQLExecDirect executes a searched update or delete statement that + * does not affect any rows at the data source, the call to + * SQLExecDirect returns SQL_NO_DATA. */ + row_count = 0; + goto out; + } + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_doer_error("SQLExecDirect"); + goto out; + } + + rc = SQLRowCount(stmt, &row_count); + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_doer_error("SQLRowCount"); + goto out; + } + if (row_count == -1) { + row_count = 0; + } +out: + SQLFreeHandle(SQL_HANDLE_STMT, stmt); + return row_count; +} + +static int odbc_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type param_type TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + /* TODO: figure it out */ + return 0; +} + +static int odbc_handle_begin(pdo_dbh_t *dbh TSRMLS_DC) +{ + if (dbh->auto_commit) { + /* we need to disable auto-commit now, to be able to initiate a transaction */ + RETCODE rc; + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + + rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_IS_INTEGER); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = OFF"); + return 0; + } + } + return 1; +} + +static int odbc_handle_commit(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + RETCODE rc; + + rc = SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_COMMIT); + + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLEndTran: Commit"); + + if (rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + } + + if (dbh->auto_commit) { + /* turn auto-commit back on again */ + rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_IS_INTEGER); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); + return 0; + } + } + return 1; +} + +static int odbc_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + RETCODE rc; + + rc = SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); + + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLEndTran: Rollback"); + + if (rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + } + if (dbh->auto_commit && H->dbc) { + /* turn auto-commit back on again */ + rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_IS_INTEGER); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); + return 0; + } + } + + return 1; +} + +static int odbc_handle_get_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC) +{ + switch (attr) { + case PDO_ATTR_CLIENT_VERSION: + ZVAL_STRING(val, "ODBC-" PDO_ODBC_TYPE, 1); + return 1; + + case PDO_ATTR_SERVER_VERSION: + case PDO_ATTR_PREFETCH: + case PDO_ATTR_TIMEOUT: + case PDO_ATTR_SERVER_INFO: + case PDO_ATTR_CONNECTION_STATUS: + break; + + } + return 0; +} + +static struct pdo_dbh_methods odbc_methods = { + odbc_handle_closer, + odbc_handle_preparer, + odbc_handle_doer, + odbc_handle_quoter, + odbc_handle_begin, + odbc_handle_commit, + odbc_handle_rollback, + NULL, /* set attr */ + NULL, /* last id */ + pdo_odbc_fetch_error_func, + odbc_handle_get_attr, /* get attr */ + NULL, /* check_liveness */ +}; + +static int pdo_odbc_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) /* {{{ */ +{ + pdo_odbc_db_handle *H; + RETCODE rc; + int use_direct = 0; + SQLUINTEGER cursor_lib; + + H = pecalloc(1, sizeof(*H), dbh->is_persistent); + + dbh->driver_data = H; + + SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &H->env); + rc = SQLSetEnvAttr(H->env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_drv_error("SQLSetEnvAttr: ODBC3"); + goto fail; + } + +#ifdef SQL_ATTR_CONNECTION_POOLING + if (pdo_odbc_pool_on != SQL_CP_OFF) { + rc = SQLSetEnvAttr(H->env, SQL_ATTR_CP_MATCH, (void*)pdo_odbc_pool_mode, 0); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetEnvAttr: SQL_ATTR_CP_MATCH"); + goto fail; + } + } +#endif + + rc = SQLAllocHandle(SQL_HANDLE_DBC, H->env, &H->dbc); + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_drv_error("SQLAllocHandle (DBC)"); + goto fail; + } + + rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, + (SQLPOINTER)(dbh->auto_commit ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF), SQL_IS_INTEGER); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT"); + goto fail; + } + + /* set up the cursor library, if needed, or if configured explicitly */ + cursor_lib = pdo_attr_lval(driver_options, PDO_ODBC_ATTR_USE_CURSOR_LIBRARY, SQL_CUR_USE_IF_NEEDED TSRMLS_CC); + rc = SQLSetConnectAttr(H->dbc, SQL_ODBC_CURSORS, (void*)cursor_lib, SQL_IS_INTEGER); + if (rc != SQL_SUCCESS && cursor_lib != SQL_CUR_USE_IF_NEEDED) { + pdo_odbc_drv_error("SQLSetConnectAttr SQL_ODBC_CURSORS"); + goto fail; + } + + if (strchr(dbh->data_source, ';')) { + char dsnbuf[1024]; + short dsnbuflen; + + use_direct = 1; + + /* Force UID and PWD to be set in the DSN */ + if (dbh->username && *dbh->username && !strstr(dbh->data_source, "uid") + && !strstr(dbh->data_source, "UID")) { + char *dsn; + spprintf(&dsn, 0, "%s;UID=%s;PWD=%s", dbh->data_source, dbh->username, dbh->password); + pefree((char*)dbh->data_source, dbh->is_persistent); + dbh->data_source = dsn; + } + + rc = SQLDriverConnect(H->dbc, NULL, (char*)dbh->data_source, strlen(dbh->data_source), + dsnbuf, sizeof(dsnbuf)-1, &dsnbuflen, SQL_DRIVER_NOPROMPT); + } + if (!use_direct) { + rc = SQLConnect(H->dbc, (char*)dbh->data_source, SQL_NTS, dbh->username, SQL_NTS, dbh->password, SQL_NTS); + } + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + pdo_odbc_drv_error(use_direct ? "SQLDriverConnect" : "SQLConnect"); + goto fail; + } + + /* TODO: if we want to play nicely, we should check to see if the driver really supports ODBC v3 or not */ + + dbh->methods = &odbc_methods; + dbh->alloc_own_columns = 1; + + return 1; + +fail: + dbh->methods = &odbc_methods; + return 0; +} +/* }}} */ + +pdo_driver_t pdo_odbc_driver = { + PDO_DRIVER_HEADER(odbc), + pdo_odbc_handle_factory +}; + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c index 83909dab2..b26ebd265 100755 --- a/ext/pdo_odbc/odbc_stmt.c +++ b/ext/pdo_odbc/odbc_stmt.c @@ -1,649 +1,649 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 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 | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Wez Furlong | - +----------------------------------------------------------------------+ -*/ - -/* $Id: odbc_stmt.c,v 1.26.2.2.2.4 2007/12/31 07:20:10 sebastian Exp $ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_ini.h" -#include "ext/standard/info.h" -#include "pdo/php_pdo.h" -#include "pdo/php_pdo_driver.h" -#include "php_pdo_odbc.h" -#include "php_pdo_odbc_int.h" - -static void free_cols(pdo_stmt_t *stmt, pdo_odbc_stmt *S TSRMLS_DC) -{ - if (S->cols) { - int i; - - for (i = 0; i < stmt->column_count; i++) { - if (S->cols[i].data) { - efree(S->cols[i].data); - } - } - efree(S->cols); - S->cols = NULL; - } -} - -static int odbc_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) -{ - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - - if (S->stmt != SQL_NULL_HANDLE) { - if (stmt->executed) { - SQLCloseCursor(S->stmt); - } - SQLFreeHandle(SQL_HANDLE_STMT, S->stmt); - S->stmt = SQL_NULL_HANDLE; - } - - free_cols(stmt, S TSRMLS_CC); - - efree(S); - - return 1; -} - -static int odbc_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) -{ - RETCODE rc; - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - char *buf = NULL; - long row_count = -1; - - if (stmt->executed) { - SQLCloseCursor(S->stmt); - } - - rc = SQLExecute(S->stmt); - - while (rc == SQL_NEED_DATA) { - struct pdo_bound_param_data *param; - rc = SQLParamData(S->stmt, (SQLPOINTER*)¶m); - if (rc == SQL_NEED_DATA) { - php_stream *stm; - int len; - - if (Z_TYPE_P(param->parameter) != IS_RESOURCE) { - /* they passed in a string */ - convert_to_string(param->parameter); - SQLPutData(S->stmt, Z_STRVAL_P(param->parameter), Z_STRLEN_P(param->parameter)); - continue; - } - - php_stream_from_zval_no_verify(stm, ¶m->parameter); - if (!stm) { - /* shouldn't happen either */ - pdo_odbc_stmt_error("input LOB is no longer a stream"); - SQLCloseCursor(S->stmt); - if (buf) { - efree(buf); - } - return 0; - } - - /* now suck data from the stream and stick it into the database */ - if (buf == NULL) { - buf = emalloc(8192); - } - - do { - len = php_stream_read(stm, buf, 8192); - if (len == 0) { - break; - } - SQLPutData(S->stmt, buf, len); - } while (1); - } - } - - if (buf) { - efree(buf); - } - - switch (rc) { - case SQL_SUCCESS: - break; - case SQL_NO_DATA_FOUND: - case SQL_SUCCESS_WITH_INFO: - pdo_odbc_stmt_error("SQLExecute"); - break; - - default: - pdo_odbc_stmt_error("SQLExecute"); - return 0; - } - - SQLRowCount(S->stmt, &row_count); - stmt->row_count = row_count; - - if (!stmt->executed) { - /* do first-time-only definition of bind/mapping stuff */ - SQLSMALLINT colcount; - - /* how many columns do we have ? */ - SQLNumResultCols(S->stmt, &colcount); - - stmt->column_count = (int)colcount; - S->cols = ecalloc(colcount, sizeof(pdo_odbc_column)); - S->going_long = 0; - } - - return 1; -} - -static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, - enum pdo_param_event event_type TSRMLS_DC) -{ - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - RETCODE rc; - SWORD sqltype = 0, ctype = 0, scale = 0, nullable = 0; - UDWORD precision = 0; - pdo_odbc_param *P; - - /* we're only interested in parameters for prepared SQL right now */ - if (param->is_param) { - - switch (event_type) { - case PDO_PARAM_EVT_FREE: - P = param->driver_data; - if (P) { - efree(P); - } - break; - - case PDO_PARAM_EVT_ALLOC: - { - /* figure out what we're doing */ - switch (PDO_PARAM_TYPE(param->param_type)) { - case PDO_PARAM_LOB: - break; - - case PDO_PARAM_STMT: - return 0; - - default: - break; - } - - rc = SQLDescribeParam(S->stmt, param->paramno+1, &sqltype, &precision, &scale, &nullable); - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - /* MS Access, for instance, doesn't support SQLDescribeParam, - * so we need to guess */ - sqltype = PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB ? - SQL_LONGVARBINARY : - SQL_LONGVARCHAR; - precision = 4000; - scale = 5; - nullable = 1; - - if (param->max_value_len > 0) { - precision = param->max_value_len; - } - } - if (sqltype == SQL_BINARY || sqltype == SQL_VARBINARY || sqltype == SQL_LONGVARBINARY) { - ctype = SQL_C_BINARY; - } else { - ctype = SQL_C_CHAR; - } - - P = emalloc(sizeof(*P)); - param->driver_data = P; - - P->len = 0; /* is re-populated each EXEC_PRE */ - P->outbuf = NULL; - - if ((param->param_type & PDO_PARAM_INPUT_OUTPUT) == PDO_PARAM_INPUT_OUTPUT) { - P->paramtype = SQL_PARAM_INPUT_OUTPUT; - } else if (param->max_value_len <= 0) { - P->paramtype = SQL_PARAM_INPUT; - } else { - P->paramtype = SQL_PARAM_OUTPUT; - } - - if (P->paramtype != SQL_PARAM_INPUT) { - if (PDO_PARAM_TYPE(param->param_type) != PDO_PARAM_NULL) { - /* need an explicit buffer to hold result */ - P->len = param->max_value_len > 0 ? param->max_value_len : precision; - P->outbuf = emalloc(P->len + 1); - } - } - - if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB && P->paramtype != SQL_PARAM_INPUT) { - pdo_odbc_stmt_error("Can't bind a lob for output"); - return 0; - } - - rc = SQLBindParameter(S->stmt, param->paramno+1, - P->paramtype, ctype, sqltype, precision, scale, - P->paramtype == SQL_PARAM_INPUT ? - (SQLPOINTER)param : - P->outbuf, - P->len, - &P->len - ); - - if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { - return 1; - } - pdo_odbc_stmt_error("SQLBindParameter"); - return 0; - } - - case PDO_PARAM_EVT_EXEC_PRE: - P = param->driver_data; - if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) { - if (Z_TYPE_P(param->parameter) == IS_RESOURCE) { - php_stream *stm; - php_stream_statbuf sb; - - php_stream_from_zval_no_verify(stm, ¶m->parameter); - - if (!stm) { - return 0; - } - - if (0 == php_stream_stat(stm, &sb)) { - if (P->outbuf) { - int len, amount; - char *ptr = P->outbuf; - char *end = P->outbuf + P->len; - - P->len = 0; - do { - amount = end - ptr; - if (amount == 0) { - break; - } - if (amount > 8192) - amount = 8192; - len = php_stream_read(stm, ptr, amount); - if (len == 0) { - break; - } - ptr += len; - P->len += len; - } while (1); - - } else { - P->len = SQL_LEN_DATA_AT_EXEC(sb.sb.st_size); - } - } else { - if (P->outbuf) { - P->len = 0; - } else { - P->len = SQL_LEN_DATA_AT_EXEC(0); - } - } - } else { - convert_to_string(param->parameter); - if (P->outbuf) { - P->len = Z_STRLEN_P(param->parameter); - memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); - } else { - P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); - } - } - } else if (Z_TYPE_P(param->parameter) == IS_NULL || PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL) { - P->len = SQL_NULL_DATA; - } else { - convert_to_string(param->parameter); - if (P->outbuf) { - P->len = Z_STRLEN_P(param->parameter); - memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); - } else { - P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); - } - } - return 1; - - case PDO_PARAM_EVT_EXEC_POST: - P = param->driver_data; - if (P->outbuf) { - switch (P->len) { - case SQL_NULL_DATA: - zval_dtor(param->parameter); - ZVAL_NULL(param->parameter); - break; - default: - convert_to_string(param->parameter); - Z_STRVAL_P(param->parameter) = erealloc(Z_STRVAL_P(param->parameter), P->len+1); - memcpy(Z_STRVAL_P(param->parameter), P->outbuf, P->len); - Z_STRLEN_P(param->parameter) = P->len; - Z_STRVAL_P(param->parameter)[P->len] = '\0'; - } - } - return 1; - } - } - return 1; -} - -static int odbc_stmt_fetch(pdo_stmt_t *stmt, - enum pdo_fetch_orientation ori, long offset TSRMLS_DC) -{ - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - RETCODE rc; - SQLSMALLINT odbcori; - - switch (ori) { - case PDO_FETCH_ORI_NEXT: odbcori = SQL_FETCH_NEXT; break; - case PDO_FETCH_ORI_PRIOR: odbcori = SQL_FETCH_PRIOR; break; - case PDO_FETCH_ORI_FIRST: odbcori = SQL_FETCH_FIRST; break; - case PDO_FETCH_ORI_LAST: odbcori = SQL_FETCH_LAST; break; - case PDO_FETCH_ORI_ABS: odbcori = SQL_FETCH_ABSOLUTE; break; - case PDO_FETCH_ORI_REL: odbcori = SQL_FETCH_RELATIVE; break; - default: - strcpy(stmt->error_code, "HY106"); - return 0; - } - rc = SQLFetchScroll(S->stmt, odbcori, offset); - - if (rc == SQL_SUCCESS) { - return 1; - } - if (rc == SQL_SUCCESS_WITH_INFO) { - pdo_odbc_stmt_error("SQLFetchScroll"); - return 1; - } - - if (rc == SQL_NO_DATA) { - /* pdo_odbc_stmt_error("SQLFetchScroll"); */ - return 0; - } - - pdo_odbc_stmt_error("SQLFetchScroll"); - - return 0; -} - -static int odbc_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) -{ - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - struct pdo_column_data *col = &stmt->columns[colno]; - zend_bool dyn = FALSE; - RETCODE rc; - SWORD colnamelen; - SDWORD colsize, displaysize; - - rc = SQLDescribeCol(S->stmt, colno+1, S->cols[colno].colname, - sizeof(S->cols[colno].colname)-1, &colnamelen, - &S->cols[colno].coltype, &colsize, NULL, NULL); - - if (rc != SQL_SUCCESS) { - pdo_odbc_stmt_error("SQLDescribeCol"); - if (rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - } - - rc = SQLColAttribute(S->stmt, colno+1, - SQL_DESC_DISPLAY_SIZE, - NULL, 0, NULL, &displaysize); - - if (rc != SQL_SUCCESS) { - pdo_odbc_stmt_error("SQLColAttribute"); - if (rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - } - colsize = displaysize; - - col->maxlen = S->cols[colno].datalen = colsize; - col->namelen = colnamelen; - col->name = estrdup(S->cols[colno].colname); - - /* returning data as a string */ - col->param_type = PDO_PARAM_STR; - - /* tell ODBC to put it straight into our buffer, but only if it - * isn't "long" data, and only if we haven't already bound a long - * column. */ - if (colsize < 256 && !S->going_long) { - S->cols[colno].data = emalloc(colsize+1); - S->cols[colno].is_long = 0; - - rc = SQLBindCol(S->stmt, colno+1, SQL_C_CHAR, S->cols[colno].data, - S->cols[colno].datalen+1, &S->cols[colno].fetched_len); - - if (rc != SQL_SUCCESS) { - pdo_odbc_stmt_error("SQLBindCol"); - return 0; - } - } else { - /* allocate a smaller buffer to keep around for smaller - * "long" columns */ - S->cols[colno].data = emalloc(256); - S->going_long = 1; - S->cols[colno].is_long = 1; - } - - return 1; -} - -static int odbc_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC) -{ - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - pdo_odbc_column *C = &S->cols[colno]; - - /* if it is a column containing "long" data, perform late binding now */ - if (C->is_long) { - unsigned long alloced = 4096; - unsigned long used = 0; - char *buf; - RETCODE rc; - - /* fetch it into C->data, which is allocated with a length - * of 256 bytes; if there is more to be had, we then allocate - * bigger buffer for the caller to free */ - - rc = SQLGetData(S->stmt, colno+1, SQL_C_CHAR, C->data, - 256, &C->fetched_len); - - if (rc == SQL_SUCCESS) { - /* all the data fit into our little buffer; - * jump down to the generic bound data case */ - goto in_data; - } - - if (rc == SQL_SUCCESS_WITH_INFO) { - /* promote up to a bigger buffer */ - - if (C->fetched_len != SQL_NO_TOTAL) { - /* use size suggested by the driver, if it knows it */ - alloced = C->fetched_len + 1; - } - - buf = emalloc(alloced); - memcpy(buf, C->data, 256); - used = 255; /* not 256; the driver NUL terminated the buffer */ - - do { - C->fetched_len = 0; - rc = SQLGetData(S->stmt, colno+1, SQL_C_CHAR, - buf + used, alloced - used, - &C->fetched_len); - - if (rc == SQL_NO_DATA) { - /* we got the lot */ - break; - } else if (rc != SQL_SUCCESS) { - pdo_odbc_stmt_error("SQLGetData"); - if (rc != SQL_SUCCESS_WITH_INFO) { - break; - } - } - - if (C->fetched_len == SQL_NO_TOTAL) { - used += alloced - used; - } else { - used += C->fetched_len; - } - - if (rc == SQL_SUCCESS) { - /* this was the final fetch */ - break; - } - - /* we need to fetch another chunk; resize the - * buffer */ - alloced *= 2; - buf = erealloc(buf, alloced); - } while (1); - - /* size down */ - if (used < alloced - 1024) { - alloced = used+1; - buf = erealloc(buf, used+1); - } - buf[used] = '\0'; - *ptr = buf; - *caller_frees = 1; - *len = used; - return 1; - } - - /* something went caca */ - *ptr = NULL; - *len = 0; - return 1; - } - -in_data: - /* check the indicator to ensure that the data is intact */ - if (C->fetched_len == SQL_NULL_DATA) { - /* A NULL value */ - *ptr = NULL; - *len = 0; - return 1; - } else if (C->fetched_len >= 0) { - /* it was stored perfectly */ - *ptr = C->data; - *len = C->fetched_len; - return 1; - } else { - /* no data? */ - *ptr = NULL; - *len = 0; - return 1; - } -} - -static int odbc_stmt_set_param(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC) -{ - SQLRETURN rc; - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - - switch (attr) { - case PDO_ATTR_CURSOR_NAME: - convert_to_string(val); - rc = SQLSetCursorName(S->stmt, Z_STRVAL_P(val), Z_STRLEN_P(val)); - - if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { - return 1; - } - pdo_odbc_stmt_error("SQLSetCursorName"); - return 0; - - default: - strcpy(S->einfo.last_err_msg, "Unknown Attribute"); - S->einfo.what = "setAttribute"; - strcpy(S->einfo.last_state, "IM0001"); - return -1; - } -} - -static int odbc_stmt_get_attr(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC) -{ - SQLRETURN rc; - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - - switch (attr) { - case PDO_ATTR_CURSOR_NAME: - { - char buf[256]; - SQLSMALLINT len = 0; - rc = SQLGetCursorName(S->stmt, buf, sizeof(buf), &len); - - if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { - ZVAL_STRINGL(val, buf, len, 1); - return 1; - } - pdo_odbc_stmt_error("SQLGetCursorName"); - return 0; - } - - default: - strcpy(S->einfo.last_err_msg, "Unknown Attribute"); - S->einfo.what = "getAttribute"; - strcpy(S->einfo.last_state, "IM0001"); - return -1; - } -} - -static int odbc_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) -{ - SQLRETURN rc; - SQLSMALLINT colcount; - pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; - - /* NOTE: can't guarantee that output or input/output parameters - * are set until this fella returns SQL_NO_DATA, according to - * MSDN ODBC docs */ - rc = SQLMoreResults(S->stmt); - - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { - return 0; - } - - free_cols(stmt, S TSRMLS_CC); - /* how many columns do we have ? */ - SQLNumResultCols(S->stmt, &colcount); - stmt->column_count = (int)colcount; - S->cols = ecalloc(colcount, sizeof(pdo_odbc_column)); - S->going_long = 0; - - return 1; -} - -struct pdo_stmt_methods odbc_stmt_methods = { - odbc_stmt_dtor, - odbc_stmt_execute, - odbc_stmt_fetch, - odbc_stmt_describe, - odbc_stmt_get_col, - odbc_stmt_param_hook, - odbc_stmt_set_param, - odbc_stmt_get_attr, /* get attr */ - NULL, /* get column meta */ - odbc_stmt_next_rowset -}; - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2009 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 | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Wez Furlong | + +----------------------------------------------------------------------+ +*/ + +/* $Id: odbc_stmt.c,v 1.26.2.2.2.6 2008/12/31 11:17:42 sebastian Exp $ */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" +#include "php_ini.h" +#include "ext/standard/info.h" +#include "pdo/php_pdo.h" +#include "pdo/php_pdo_driver.h" +#include "php_pdo_odbc.h" +#include "php_pdo_odbc_int.h" + +static void free_cols(pdo_stmt_t *stmt, pdo_odbc_stmt *S TSRMLS_DC) +{ + if (S->cols) { + int i; + + for (i = 0; i < stmt->column_count; i++) { + if (S->cols[i].data) { + efree(S->cols[i].data); + } + } + efree(S->cols); + S->cols = NULL; + } +} + +static int odbc_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) +{ + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + + if (S->stmt != SQL_NULL_HANDLE) { + if (stmt->executed) { + SQLCloseCursor(S->stmt); + } + SQLFreeHandle(SQL_HANDLE_STMT, S->stmt); + S->stmt = SQL_NULL_HANDLE; + } + + free_cols(stmt, S TSRMLS_CC); + + efree(S); + + return 1; +} + +static int odbc_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) +{ + RETCODE rc; + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + char *buf = NULL; + long row_count = -1; + + if (stmt->executed) { + SQLCloseCursor(S->stmt); + } + + rc = SQLExecute(S->stmt); + + while (rc == SQL_NEED_DATA) { + struct pdo_bound_param_data *param; + rc = SQLParamData(S->stmt, (SQLPOINTER*)¶m); + if (rc == SQL_NEED_DATA) { + php_stream *stm; + int len; + + if (Z_TYPE_P(param->parameter) != IS_RESOURCE) { + /* they passed in a string */ + convert_to_string(param->parameter); + SQLPutData(S->stmt, Z_STRVAL_P(param->parameter), Z_STRLEN_P(param->parameter)); + continue; + } + + php_stream_from_zval_no_verify(stm, ¶m->parameter); + if (!stm) { + /* shouldn't happen either */ + pdo_odbc_stmt_error("input LOB is no longer a stream"); + SQLCloseCursor(S->stmt); + if (buf) { + efree(buf); + } + return 0; + } + + /* now suck data from the stream and stick it into the database */ + if (buf == NULL) { + buf = emalloc(8192); + } + + do { + len = php_stream_read(stm, buf, 8192); + if (len == 0) { + break; + } + SQLPutData(S->stmt, buf, len); + } while (1); + } + } + + if (buf) { + efree(buf); + } + + switch (rc) { + case SQL_SUCCESS: + break; + case SQL_NO_DATA_FOUND: + case SQL_SUCCESS_WITH_INFO: + pdo_odbc_stmt_error("SQLExecute"); + break; + + default: + pdo_odbc_stmt_error("SQLExecute"); + return 0; + } + + SQLRowCount(S->stmt, &row_count); + stmt->row_count = row_count; + + if (!stmt->executed) { + /* do first-time-only definition of bind/mapping stuff */ + SQLSMALLINT colcount; + + /* how many columns do we have ? */ + SQLNumResultCols(S->stmt, &colcount); + + stmt->column_count = (int)colcount; + S->cols = ecalloc(colcount, sizeof(pdo_odbc_column)); + S->going_long = 0; + } + + return 1; +} + +static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, + enum pdo_param_event event_type TSRMLS_DC) +{ + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + RETCODE rc; + SWORD sqltype = 0, ctype = 0, scale = 0, nullable = 0; + UDWORD precision = 0; + pdo_odbc_param *P; + + /* we're only interested in parameters for prepared SQL right now */ + if (param->is_param) { + + switch (event_type) { + case PDO_PARAM_EVT_FREE: + P = param->driver_data; + if (P) { + efree(P); + } + break; + + case PDO_PARAM_EVT_ALLOC: + { + /* figure out what we're doing */ + switch (PDO_PARAM_TYPE(param->param_type)) { + case PDO_PARAM_LOB: + break; + + case PDO_PARAM_STMT: + return 0; + + default: + break; + } + + rc = SQLDescribeParam(S->stmt, param->paramno+1, &sqltype, &precision, &scale, &nullable); + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + /* MS Access, for instance, doesn't support SQLDescribeParam, + * so we need to guess */ + sqltype = PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB ? + SQL_LONGVARBINARY : + SQL_LONGVARCHAR; + precision = 4000; + scale = 5; + nullable = 1; + + if (param->max_value_len > 0) { + precision = param->max_value_len; + } + } + if (sqltype == SQL_BINARY || sqltype == SQL_VARBINARY || sqltype == SQL_LONGVARBINARY) { + ctype = SQL_C_BINARY; + } else { + ctype = SQL_C_CHAR; + } + + P = emalloc(sizeof(*P)); + param->driver_data = P; + + P->len = 0; /* is re-populated each EXEC_PRE */ + P->outbuf = NULL; + + if ((param->param_type & PDO_PARAM_INPUT_OUTPUT) == PDO_PARAM_INPUT_OUTPUT) { + P->paramtype = SQL_PARAM_INPUT_OUTPUT; + } else if (param->max_value_len <= 0) { + P->paramtype = SQL_PARAM_INPUT; + } else { + P->paramtype = SQL_PARAM_OUTPUT; + } + + if (P->paramtype != SQL_PARAM_INPUT) { + if (PDO_PARAM_TYPE(param->param_type) != PDO_PARAM_NULL) { + /* need an explicit buffer to hold result */ + P->len = param->max_value_len > 0 ? param->max_value_len : precision; + P->outbuf = emalloc(P->len + 1); + } + } + + if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB && P->paramtype != SQL_PARAM_INPUT) { + pdo_odbc_stmt_error("Can't bind a lob for output"); + return 0; + } + + rc = SQLBindParameter(S->stmt, param->paramno+1, + P->paramtype, ctype, sqltype, precision, scale, + P->paramtype == SQL_PARAM_INPUT ? + (SQLPOINTER)param : + P->outbuf, + P->len, + &P->len + ); + + if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { + return 1; + } + pdo_odbc_stmt_error("SQLBindParameter"); + return 0; + } + + case PDO_PARAM_EVT_EXEC_PRE: + P = param->driver_data; + if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) { + if (Z_TYPE_P(param->parameter) == IS_RESOURCE) { + php_stream *stm; + php_stream_statbuf sb; + + php_stream_from_zval_no_verify(stm, ¶m->parameter); + + if (!stm) { + return 0; + } + + if (0 == php_stream_stat(stm, &sb)) { + if (P->outbuf) { + int len, amount; + char *ptr = P->outbuf; + char *end = P->outbuf + P->len; + + P->len = 0; + do { + amount = end - ptr; + if (amount == 0) { + break; + } + if (amount > 8192) + amount = 8192; + len = php_stream_read(stm, ptr, amount); + if (len == 0) { + break; + } + ptr += len; + P->len += len; + } while (1); + + } else { + P->len = SQL_LEN_DATA_AT_EXEC(sb.sb.st_size); + } + } else { + if (P->outbuf) { + P->len = 0; + } else { + P->len = SQL_LEN_DATA_AT_EXEC(0); + } + } + } else { + convert_to_string(param->parameter); + if (P->outbuf) { + P->len = Z_STRLEN_P(param->parameter); + memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); + } else { + P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); + } + } + } else if (Z_TYPE_P(param->parameter) == IS_NULL || PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL) { + P->len = SQL_NULL_DATA; + } else { + convert_to_string(param->parameter); + if (P->outbuf) { + P->len = Z_STRLEN_P(param->parameter); + memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); + } else { + P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); + } + } + return 1; + + case PDO_PARAM_EVT_EXEC_POST: + P = param->driver_data; + if (P->outbuf) { + switch (P->len) { + case SQL_NULL_DATA: + zval_dtor(param->parameter); + ZVAL_NULL(param->parameter); + break; + default: + convert_to_string(param->parameter); + Z_STRVAL_P(param->parameter) = erealloc(Z_STRVAL_P(param->parameter), P->len+1); + memcpy(Z_STRVAL_P(param->parameter), P->outbuf, P->len); + Z_STRLEN_P(param->parameter) = P->len; + Z_STRVAL_P(param->parameter)[P->len] = '\0'; + } + } + return 1; + } + } + return 1; +} + +static int odbc_stmt_fetch(pdo_stmt_t *stmt, + enum pdo_fetch_orientation ori, long offset TSRMLS_DC) +{ + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + RETCODE rc; + SQLSMALLINT odbcori; + + switch (ori) { + case PDO_FETCH_ORI_NEXT: odbcori = SQL_FETCH_NEXT; break; + case PDO_FETCH_ORI_PRIOR: odbcori = SQL_FETCH_PRIOR; break; + case PDO_FETCH_ORI_FIRST: odbcori = SQL_FETCH_FIRST; break; + case PDO_FETCH_ORI_LAST: odbcori = SQL_FETCH_LAST; break; + case PDO_FETCH_ORI_ABS: odbcori = SQL_FETCH_ABSOLUTE; break; + case PDO_FETCH_ORI_REL: odbcori = SQL_FETCH_RELATIVE; break; + default: + strcpy(stmt->error_code, "HY106"); + return 0; + } + rc = SQLFetchScroll(S->stmt, odbcori, offset); + + if (rc == SQL_SUCCESS) { + return 1; + } + if (rc == SQL_SUCCESS_WITH_INFO) { + pdo_odbc_stmt_error("SQLFetchScroll"); + return 1; + } + + if (rc == SQL_NO_DATA) { + /* pdo_odbc_stmt_error("SQLFetchScroll"); */ + return 0; + } + + pdo_odbc_stmt_error("SQLFetchScroll"); + + return 0; +} + +static int odbc_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) +{ + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + struct pdo_column_data *col = &stmt->columns[colno]; + zend_bool dyn = FALSE; + RETCODE rc; + SWORD colnamelen; + SDWORD colsize, displaysize; + + rc = SQLDescribeCol(S->stmt, colno+1, S->cols[colno].colname, + sizeof(S->cols[colno].colname)-1, &colnamelen, + &S->cols[colno].coltype, &colsize, NULL, NULL); + + if (rc != SQL_SUCCESS) { + pdo_odbc_stmt_error("SQLDescribeCol"); + if (rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + } + + rc = SQLColAttribute(S->stmt, colno+1, + SQL_DESC_DISPLAY_SIZE, + NULL, 0, NULL, &displaysize); + + if (rc != SQL_SUCCESS) { + pdo_odbc_stmt_error("SQLColAttribute"); + if (rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + } + colsize = displaysize; + + col->maxlen = S->cols[colno].datalen = colsize; + col->namelen = colnamelen; + col->name = estrdup(S->cols[colno].colname); + + /* returning data as a string */ + col->param_type = PDO_PARAM_STR; + + /* tell ODBC to put it straight into our buffer, but only if it + * isn't "long" data, and only if we haven't already bound a long + * column. */ + if (colsize < 256 && !S->going_long) { + S->cols[colno].data = emalloc(colsize+1); + S->cols[colno].is_long = 0; + + rc = SQLBindCol(S->stmt, colno+1, SQL_C_CHAR, S->cols[colno].data, + S->cols[colno].datalen+1, &S->cols[colno].fetched_len); + + if (rc != SQL_SUCCESS) { + pdo_odbc_stmt_error("SQLBindCol"); + return 0; + } + } else { + /* allocate a smaller buffer to keep around for smaller + * "long" columns */ + S->cols[colno].data = emalloc(256); + S->going_long = 1; + S->cols[colno].is_long = 1; + } + + return 1; +} + +static int odbc_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC) +{ + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + pdo_odbc_column *C = &S->cols[colno]; + + /* if it is a column containing "long" data, perform late binding now */ + if (C->is_long) { + unsigned long alloced = 4096; + unsigned long used = 0; + char *buf; + RETCODE rc; + + /* fetch it into C->data, which is allocated with a length + * of 256 bytes; if there is more to be had, we then allocate + * bigger buffer for the caller to free */ + + rc = SQLGetData(S->stmt, colno+1, SQL_C_CHAR, C->data, + 256, &C->fetched_len); + + if (rc == SQL_SUCCESS) { + /* all the data fit into our little buffer; + * jump down to the generic bound data case */ + goto in_data; + } + + if (rc == SQL_SUCCESS_WITH_INFO) { + /* promote up to a bigger buffer */ + + if (C->fetched_len != SQL_NO_TOTAL) { + /* use size suggested by the driver, if it knows it */ + alloced = C->fetched_len + 1; + } + + buf = emalloc(alloced); + memcpy(buf, C->data, 256); + used = 255; /* not 256; the driver NUL terminated the buffer */ + + do { + C->fetched_len = 0; + rc = SQLGetData(S->stmt, colno+1, SQL_C_CHAR, + buf + used, alloced - used, + &C->fetched_len); + + if (rc == SQL_NO_DATA) { + /* we got the lot */ + break; + } else if (rc != SQL_SUCCESS) { + pdo_odbc_stmt_error("SQLGetData"); + if (rc != SQL_SUCCESS_WITH_INFO) { + break; + } + } + + if (C->fetched_len == SQL_NO_TOTAL) { + used += alloced - used; + } else { + used += C->fetched_len; + } + + if (rc == SQL_SUCCESS) { + /* this was the final fetch */ + break; + } + + /* we need to fetch another chunk; resize the + * buffer */ + alloced *= 2; + buf = erealloc(buf, alloced); + } while (1); + + /* size down */ + if (used < alloced - 1024) { + alloced = used+1; + buf = erealloc(buf, used+1); + } + buf[used] = '\0'; + *ptr = buf; + *caller_frees = 1; + *len = used; + return 1; + } + + /* something went caca */ + *ptr = NULL; + *len = 0; + return 1; + } + +in_data: + /* check the indicator to ensure that the data is intact */ + if (C->fetched_len == SQL_NULL_DATA) { + /* A NULL value */ + *ptr = NULL; + *len = 0; + return 1; + } else if (C->fetched_len >= 0) { + /* it was stored perfectly */ + *ptr = C->data; + *len = C->fetched_len; + return 1; + } else { + /* no data? */ + *ptr = NULL; + *len = 0; + return 1; + } +} + +static int odbc_stmt_set_param(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC) +{ + SQLRETURN rc; + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + + switch (attr) { + case PDO_ATTR_CURSOR_NAME: + convert_to_string(val); + rc = SQLSetCursorName(S->stmt, Z_STRVAL_P(val), Z_STRLEN_P(val)); + + if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { + return 1; + } + pdo_odbc_stmt_error("SQLSetCursorName"); + return 0; + + default: + strcpy(S->einfo.last_err_msg, "Unknown Attribute"); + S->einfo.what = "setAttribute"; + strcpy(S->einfo.last_state, "IM0001"); + return -1; + } +} + +static int odbc_stmt_get_attr(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC) +{ + SQLRETURN rc; + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + + switch (attr) { + case PDO_ATTR_CURSOR_NAME: + { + char buf[256]; + SQLSMALLINT len = 0; + rc = SQLGetCursorName(S->stmt, buf, sizeof(buf), &len); + + if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { + ZVAL_STRINGL(val, buf, len, 1); + return 1; + } + pdo_odbc_stmt_error("SQLGetCursorName"); + return 0; + } + + default: + strcpy(S->einfo.last_err_msg, "Unknown Attribute"); + S->einfo.what = "getAttribute"; + strcpy(S->einfo.last_state, "IM0001"); + return -1; + } +} + +static int odbc_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) +{ + SQLRETURN rc; + SQLSMALLINT colcount; + pdo_odbc_stmt *S = (pdo_odbc_stmt*)stmt->driver_data; + + /* NOTE: can't guarantee that output or input/output parameters + * are set until this fella returns SQL_NO_DATA, according to + * MSDN ODBC docs */ + rc = SQLMoreResults(S->stmt); + + if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { + return 0; + } + + free_cols(stmt, S TSRMLS_CC); + /* how many columns do we have ? */ + SQLNumResultCols(S->stmt, &colcount); + stmt->column_count = (int)colcount; + S->cols = ecalloc(colcount, sizeof(pdo_odbc_column)); + S->going_long = 0; + + return 1; +} + +struct pdo_stmt_methods odbc_stmt_methods = { + odbc_stmt_dtor, + odbc_stmt_execute, + odbc_stmt_fetch, + odbc_stmt_describe, + odbc_stmt_get_col, + odbc_stmt_param_hook, + odbc_stmt_set_param, + odbc_stmt_get_attr, /* get attr */ + NULL, /* get column meta */ + odbc_stmt_next_rowset +}; + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ diff --git a/ext/pdo_odbc/pdo_odbc.c b/ext/pdo_odbc/pdo_odbc.c index 1eeed26d3..f62e4b90e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 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,v 1.14.2.7.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pdo_odbc.c,v 1.14.2.7.2.4 2008/12/31 11:17:42 sebastian Exp $ */ #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 9fc026e99..a13122f43 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-2008 The PHP Group | + | Copyright (c) 1997-2009 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,v 1.2.4.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_odbc.h,v 1.2.4.5 2008/12/31 11:17:42 sebastian Exp $ */ #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 89e91b5a1..920343008 100755 --- a/ext/pdo_odbc/php_pdo_odbc_int.h +++ b/ext/pdo_odbc/php_pdo_odbc_int.h @@ -1,185 +1,185 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 5 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 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 | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Wez Furlong | - +----------------------------------------------------------------------+ -*/ - -/* $Id: php_pdo_odbc_int.h,v 1.9.2.1.2.3 2007/12/31 07:20:10 sebastian Exp $ */ - -#ifdef PHP_WIN32 -# define PDO_ODBC_TYPE "Win32" -#endif - -#ifndef PDO_ODBC_TYPE -# warning Please fix configure to give your ODBC libraries a name -# define PDO_ODBC_TYPE "Unknown" -#endif - -/* {{{ Roll a dice, pick a header at random... */ -#if HAVE_SQLCLI1_H -# include -# if defined(DB268K) && HAVE_LIBRARYMANAGER_H -# include -# endif -#endif - -#if HAVE_ODBC_H -# include -#endif - -#if HAVE_IODBC_H -# include -#endif - -#if HAVE_SQLUNIX_H && !defined(PHP_WIN32) -# include -#endif - -#if HAVE_SQLTYPES_H -# include -#endif - -#if HAVE_SQLUCODE_H -# include -#endif - -#if HAVE_SQL_H -# include -#endif - -#if HAVE_ISQL_H -# include -#endif - -#if HAVE_SQLEXT_H -# include -#endif - -#if HAVE_ISQLEXT_H -# include -#endif - -#if HAVE_UDBCEXT_H -# include -#endif - -#if HAVE_CLI0CORE_H -# include -#endif - -#if HAVE_CLI0EXT1_H -# include -#endif - -#if HAVE_CLI0CLI_H -# include -#endif - -#if HAVE_CLI0DEFS_H -# include -#endif - -#if HAVE_CLI0ENV_H -# include -#endif - -#if HAVE_ODBCSDK_H -# include -#endif - -/* }}} */ - -/* {{{ Figure out the type for handles */ -#if !defined(HENV) && !defined(SQLHENV) && defined(SQLHANDLE) -# define PDO_ODBC_HENV SQLHANDLE -# define PDO_ODBC_HDBC SQLHANDLE -# define PDO_ODBC_HSTMT SQLHANDLE -#elif !defined(HENV) && (defined(SQLHENV) || defined(DB2CLI_VER)) -# define PDO_ODBC_HENV SQLHENV -# define PDO_ODBC_HDBC SQLHDBC -# define PDO_ODBC_HSTMT SQLHSTMT -#else -# define PDO_ODBC_HENV HENV -# define PDO_ODBC_HDBC HDBC -# define PDO_ODBC_HSTMT HSTMT -#endif -/* }}} */ - -typedef struct { - char last_state[6]; - char last_err_msg[SQL_MAX_MESSAGE_LENGTH]; - SDWORD last_error; - const char *file, *what; - int line; -} pdo_odbc_errinfo; - -typedef struct { - PDO_ODBC_HENV env; - PDO_ODBC_HDBC dbc; - pdo_odbc_errinfo einfo; -} pdo_odbc_db_handle; - -typedef struct { - char *data; - unsigned long datalen; - long fetched_len; - SWORD coltype; - char colname[128]; - unsigned is_long; -} pdo_odbc_column; - -typedef struct { - PDO_ODBC_HSTMT stmt; - pdo_odbc_column *cols; - pdo_odbc_db_handle *H; - pdo_odbc_errinfo einfo; - unsigned going_long:1; - unsigned _spare:31; -} pdo_odbc_stmt; - -typedef struct { - SQLINTEGER len; - SQLSMALLINT paramtype; - char *outbuf; -} pdo_odbc_param; - -extern pdo_driver_t pdo_odbc_driver; -extern struct pdo_stmt_methods odbc_stmt_methods; - -void pdo_odbc_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, PDO_ODBC_HSTMT statement, char *what, const char *file, int line TSRMLS_DC); -#define pdo_odbc_drv_error(what) pdo_odbc_error(dbh, NULL, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC) -#define pdo_odbc_stmt_error(what) pdo_odbc_error(stmt->dbh, stmt, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC) -#define pdo_odbc_doer_error(what) pdo_odbc_error(dbh, NULL, stmt, what, __FILE__, __LINE__ TSRMLS_CC) - -void pdo_odbc_init_error_table(void); -void pdo_odbc_fini_error_table(void); - -#ifdef SQL_ATTR_CONNECTION_POOLING -extern SQLUINTEGER pdo_odbc_pool_on; -extern SQLUINTEGER pdo_odbc_pool_mode; -#endif - -enum { - PDO_ODBC_ATTR_USE_CURSOR_LIBRARY = PDO_ATTR_DRIVER_SPECIFIC, -}; - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2009 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 | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Wez Furlong | + +----------------------------------------------------------------------+ +*/ + +/* $Id: php_pdo_odbc_int.h,v 1.9.2.1.2.5 2008/12/31 11:17:42 sebastian Exp $ */ + +#ifdef PHP_WIN32 +# define PDO_ODBC_TYPE "Win32" +#endif + +#ifndef PDO_ODBC_TYPE +# warning Please fix configure to give your ODBC libraries a name +# define PDO_ODBC_TYPE "Unknown" +#endif + +/* {{{ Roll a dice, pick a header at random... */ +#if HAVE_SQLCLI1_H +# include +# if defined(DB268K) && HAVE_LIBRARYMANAGER_H +# include +# endif +#endif + +#if HAVE_ODBC_H +# include +#endif + +#if HAVE_IODBC_H +# include +#endif + +#if HAVE_SQLUNIX_H && !defined(PHP_WIN32) +# include +#endif + +#if HAVE_SQLTYPES_H +# include +#endif + +#if HAVE_SQLUCODE_H +# include +#endif + +#if HAVE_SQL_H +# include +#endif + +#if HAVE_ISQL_H +# include +#endif + +#if HAVE_SQLEXT_H +# include +#endif + +#if HAVE_ISQLEXT_H +# include +#endif + +#if HAVE_UDBCEXT_H +# include +#endif + +#if HAVE_CLI0CORE_H +# include +#endif + +#if HAVE_CLI0EXT1_H +# include +#endif + +#if HAVE_CLI0CLI_H +# include +#endif + +#if HAVE_CLI0DEFS_H +# include +#endif + +#if HAVE_CLI0ENV_H +# include +#endif + +#if HAVE_ODBCSDK_H +# include +#endif + +/* }}} */ + +/* {{{ Figure out the type for handles */ +#if !defined(HENV) && !defined(SQLHENV) && defined(SQLHANDLE) +# define PDO_ODBC_HENV SQLHANDLE +# define PDO_ODBC_HDBC SQLHANDLE +# define PDO_ODBC_HSTMT SQLHANDLE +#elif !defined(HENV) && (defined(SQLHENV) || defined(DB2CLI_VER)) +# define PDO_ODBC_HENV SQLHENV +# define PDO_ODBC_HDBC SQLHDBC +# define PDO_ODBC_HSTMT SQLHSTMT +#else +# define PDO_ODBC_HENV HENV +# define PDO_ODBC_HDBC HDBC +# define PDO_ODBC_HSTMT HSTMT +#endif +/* }}} */ + +typedef struct { + char last_state[6]; + char last_err_msg[SQL_MAX_MESSAGE_LENGTH]; + SDWORD last_error; + const char *file, *what; + int line; +} pdo_odbc_errinfo; + +typedef struct { + PDO_ODBC_HENV env; + PDO_ODBC_HDBC dbc; + pdo_odbc_errinfo einfo; +} pdo_odbc_db_handle; + +typedef struct { + char *data; + unsigned long datalen; + long fetched_len; + SWORD coltype; + char colname[128]; + unsigned is_long; +} pdo_odbc_column; + +typedef struct { + PDO_ODBC_HSTMT stmt; + pdo_odbc_column *cols; + pdo_odbc_db_handle *H; + pdo_odbc_errinfo einfo; + unsigned going_long:1; + unsigned _spare:31; +} pdo_odbc_stmt; + +typedef struct { + SQLINTEGER len; + SQLSMALLINT paramtype; + char *outbuf; +} pdo_odbc_param; + +extern pdo_driver_t pdo_odbc_driver; +extern struct pdo_stmt_methods odbc_stmt_methods; + +void pdo_odbc_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, PDO_ODBC_HSTMT statement, char *what, const char *file, int line TSRMLS_DC); +#define pdo_odbc_drv_error(what) pdo_odbc_error(dbh, NULL, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC) +#define pdo_odbc_stmt_error(what) pdo_odbc_error(stmt->dbh, stmt, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC) +#define pdo_odbc_doer_error(what) pdo_odbc_error(dbh, NULL, stmt, what, __FILE__, __LINE__ TSRMLS_CC) + +void pdo_odbc_init_error_table(void); +void pdo_odbc_fini_error_table(void); + +#ifdef SQL_ATTR_CONNECTION_POOLING +extern SQLUINTEGER pdo_odbc_pool_on; +extern SQLUINTEGER pdo_odbc_pool_mode; +#endif + +enum { + PDO_ODBC_ATTR_USE_CURSOR_LIBRARY = PDO_ATTR_DRIVER_SPECIFIC, +}; + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ diff --git a/ext/pdo_pgsql/pdo_pgsql.c b/ext/pdo_pgsql/pdo_pgsql.c index 000e4a859..f0f823b2f 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_pgsql.c,v 1.7.2.11.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pdo_pgsql.c,v 1.7.2.11.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -123,7 +123,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,v 1.7.2.11.2.2 2007/12/31 07:20:10 sebastian Exp $ "); + php_info_print_table_row(2, "Revision", " $Id: pdo_pgsql.c,v 1.7.2.11.2.3 2008/12/31 11:17:42 sebastian Exp $ "); php_info_print_table_end(); } diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 82d141522..3bd07f5c2 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql_driver.c,v 1.53.2.14.2.11 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pgsql_driver.c,v 1.53.2.14.2.12 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 33aea2335..1842ad572 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql_statement.c,v 1.31.2.12.2.11 2008/02/26 00:14:04 iliaa Exp $ */ +/* $Id: pgsql_statement.c,v 1.31.2.12.2.14 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -246,6 +246,9 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * break; case PDO_PARAM_EVT_ALLOC: + case PDO_PARAM_EVT_EXEC_POST: + case PDO_PARAM_EVT_FETCH_PRE: + case PDO_PARAM_EVT_FETCH_POST: /* work is handled by EVT_NORMALIZE */ return 1; @@ -293,10 +296,16 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * S->param_types[param->paramno] = OIDOID; return 1; } else { + int len; + SEPARATE_ZVAL_IF_NOT_REF(¶m->parameter); Z_TYPE_P(param->parameter) = IS_STRING; - Z_STRLEN_P(param->parameter) = php_stream_copy_to_mem(stm, - &Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0); + + if ((len = php_stream_copy_to_mem(stm, &Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0)) > 0) { + Z_STRLEN_P(param->parameter) = len; + } else { + ZVAL_EMPTY_STRING(param->parameter); + } } } else { /* expected a stream resource */ @@ -598,6 +607,7 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned case PDO_PARAM_STR: case PDO_PARAM_STMT: case PDO_PARAM_INPUT_OUTPUT: + default: break; } } diff --git a/ext/pdo_pgsql/php_pdo_pgsql.h b/ext/pdo_pgsql/php_pdo_pgsql.h index 4a6e2d6cc..964f44dc4 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_pgsql.h,v 1.3.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_pgsql.h,v 1.3.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 87b56dcb1..e8cfe3f3e 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_pgsql_int.h,v 1.13.2.4.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_pgsql_int.h,v 1.13.2.4.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_PDO_PGSQL_INT_H #define PHP_PDO_PGSQL_INT_H diff --git a/ext/pdo_pgsql/tests/bug43925.phpt b/ext/pdo_pgsql/tests/bug43925.phpt new file mode 100644 index 000000000..e22ffba04 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug43925.phpt @@ -0,0 +1,59 @@ +--TEST-- +Bug #43925 (Incorrect argument counter in prepared statements with pgsql) +--SKIPIF-- + +--FILE-- +query('DROP TABLE nodes'); + +$dbh->query(' +CREATE TABLE nodes +( + id integer NOT NULL PRIMARY KEY + , root integer NOT NULL + , lft integer NOT NULL + , rgt integer NOT NULL +);'); + +$dbh->query('INSERT INTO nodes (id, root, lft, rgt) VALUES (1, 1, 1, 6);'); +$dbh->query('INSERT INTO nodes (id, root, lft, rgt) VALUES (2, 1, 2, 3);'); +$dbh->query('INSERT INTO nodes (id, root, lft, rgt) VALUES (3, 1, 4, 5);'); + + +$stmt = $dbh->prepare(' + SELECT * + FROM nodes + WHERE (:rootId > 0 OR lft > :left OR rgt > :left) + AND (root = :rootId OR root = :left) + AND (1 > :left OR 1 < :left OR 1 = :left) + AND (:x > 0 OR :x < 10 OR :x > 100) + OR :y = 1 OR :left = 1 +'); + +$stmt->bindValue('left', 1, PDO::PARAM_INT); +$stmt->bindValue('rootId', 3, PDO::PARAM_INT); +$stmt->bindValue('x', 5, PDO::PARAM_INT); +$stmt->bindValue('y', 50, PDO::PARAM_INT); + +$stmt->execute(); + +foreach ($stmt->fetchAll() as $row) { + print implode(' - ', $row); + print "\n"; +} + +$dbh->query('DROP TABLE nodes'); + +?> +--EXPECTF-- +1 - 1 - 1 - 1 - 1 - 1 - 6 - 6 +2 - 2 - 1 - 1 - 2 - 2 - 3 - 3 +3 - 3 - 1 - 1 - 4 - 4 - 5 - 5 diff --git a/ext/pdo_pgsql/tests/bug46274.phpt b/ext/pdo_pgsql/tests/bug46274.phpt new file mode 100644 index 000000000..c34839ad4 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug46274.phpt @@ -0,0 +1,85 @@ +--TEST-- +Bug #46274 (pdo_pgsql - Segfault when using PDO::ATTR_STRINGIFY_FETCHES and blob) +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); + +$db->query('CREATE TABLE test_one_blob (id SERIAL NOT NULL, blob1 BYTEA)'); + +$stmt = $db->prepare("INSERT INTO test_one_blob (blob1) VALUES (:foo)"); + +$data = 'foo'; +$blob = fopen('php://memory', 'a'); +fwrite($blob, $data); +rewind($blob); + +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$blob = ''; +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$data = ''; +$blob = fopen('php://memory', 'a'); +fwrite($blob, $data); +rewind($blob); + +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$blob = NULL; +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$res = $db->query("SELECT blob1 from test_one_blob"); +// Resource +var_dump($res->fetch()); + +// Empty string +var_dump($res->fetch()); + +// Empty string +var_dump($res->fetch()); + +// NULL +var_dump($res->fetch()); + +$db->query('DROP TABLE test_one_blob'); + +?> +--EXPECTF-- +array(2) { + ["blob1"]=> + string(3) "foo" + [0]=> + string(3) "foo" +} +array(2) { + ["blob1"]=> + string(0) "" + [0]=> + string(0) "" +} +array(2) { + ["blob1"]=> + string(0) "" + [0]=> + string(0) "" +} +array(2) { + ["blob1"]=> + NULL + [0]=> + NULL +} diff --git a/ext/pdo_pgsql/tests/bug46274_2.phpt b/ext/pdo_pgsql/tests/bug46274_2.phpt new file mode 100644 index 000000000..5e3555688 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug46274_2.phpt @@ -0,0 +1,87 @@ +--TEST-- +Bug #46274 (pdo_pgsql - Segfault when using PDO::ATTR_STRINGIFY_FETCHES and blob) +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); + +$db->query('CREATE TABLE test_one_blob (id SERIAL NOT NULL, blob1 BYTEA)'); + +$stmt = $db->prepare("INSERT INTO test_one_blob (blob1) VALUES (:foo)"); + +$data = 'foo'; +$blob = fopen('php://memory', 'a'); +fwrite($blob, $data); +rewind($blob); + +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$blob = ''; +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$data = ''; +$blob = fopen('php://memory', 'a'); +fwrite($blob, $data); +rewind($blob); + +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$blob = NULL; +$stmt->bindparam(':foo', $blob, PDO::PARAM_LOB); +$stmt->execute(); + +$res = $db->query("SELECT blob1 from test_one_blob"); +// Resource +var_dump($x = $res->fetch()); +var_dump(fread($x['blob1'], 10)); + +// Empty string +var_dump($res->fetch()); + +// Empty string +var_dump($res->fetch()); + +// NULL +var_dump($res->fetch()); + +$db->query('DROP TABLE test_one_blob'); + +?> +--EXPECTF-- +array(2) { + ["blob1"]=> + resource(%d) of type (stream) + [0]=> + resource(%d) of type (stream) +} +string(3) "foo" +array(2) { + ["blob1"]=> + string(0) "" + [0]=> + string(0) "" +} +array(2) { + ["blob1"]=> + string(0) "" + [0]=> + string(0) "" +} +array(2) { + ["blob1"]=> + NULL + [0]=> + NULL +} diff --git a/ext/pdo_pgsql/tests/large_objects.phpt b/ext/pdo_pgsql/tests/large_objects.phpt index f6ee9e29c..316963a38 100644 --- a/ext/pdo_pgsql/tests/large_objects.phpt +++ b/ext/pdo_pgsql/tests/large_objects.phpt @@ -19,7 +19,7 @@ $db->exec('CREATE TABLE test (blobid integer not null primary key, bloboid OID)' $db->beginTransaction(); $oid = $db->pgsqlLOBCreate(); try { -$stm = $db->pgsqlLOBOpen($oid); +$stm = $db->pgsqlLOBOpen($oid, 'w+b'); fwrite($stm, "Hello dude\n"); $stmt = $db->prepare("INSERT INTO test (blobid, bloboid) values (?, ?)"); @@ -34,14 +34,37 @@ $stm = null; /* Pull it out */ $stmt = $db->prepare("SELECT * from test"); -$stmt->execute(); $stmt->bindColumn('bloboid', $lob, PDO::PARAM_LOB); +$stmt->execute(); echo "Fetching:\n"; while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) { var_dump($row['blobid']); var_dump(stream_get_contents($lob)); } echo "Fetched!\n"; + +/* Try again, with late bind */ +$stmt = $db->prepare("SELECT * from test"); +$stmt->execute(); +$stmt->bindColumn('bloboid', $lob, PDO::PARAM_LOB); +echo "Fetching late bind:\n"; +while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) { + var_dump($row['blobid']); + var_dump(is_int($row['bloboid'])); +} +echo "Fetched!\n"; + +/* Try again, with NO bind */ +$stmt = $db->prepare("SELECT * from test"); +$stmt->execute(); +$stmt->bindColumn('bloboid', $lob, PDO::PARAM_LOB); +echo "Fetching NO bind:\n"; +while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) { + var_dump($row['blobid']); + var_dump(is_int($row['bloboid'])); +} +echo "Fetched!\n"; + } catch (Exception $e) { /* catch exceptions so that we can guarantee to clean * up the LOB */ @@ -53,9 +76,18 @@ echo "Fetched!\n"; * linger and clutter up the storage */ $db->pgsqlLOBUnlink($oid); +?> --EXPECT-- Fetching: int(1) string(11) "Hello dude " Fetched! +Fetching late bind: +int(1) +bool(true) +Fetched! +Fetching NO bind: +int(1) +bool(true) +Fetched! diff --git a/ext/pdo_sqlite/pdo_sqlite.c b/ext/pdo_sqlite/pdo_sqlite.c index 3b266039a..2719bbcd8 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sqlite.c,v 1.10.2.6.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pdo_sqlite.c,v 1.10.2.6.2.4 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -100,7 +100,7 @@ PHP_MINFO_FUNCTION(pdo_sqlite) "(bundled) " #endif PHP_PDO_SQLITE_MODULE_VERSION - " $Id: pdo_sqlite.c,v 1.10.2.6.2.3 2007/12/31 07:20:10 sebastian Exp $"); + " $Id: pdo_sqlite.c,v 1.10.2.6.2.4 2008/12/31 11:17:42 sebastian Exp $"); php_info_print_table_row(2, "SQLite Library", sqlite3_libversion()); php_info_print_table_end(); } diff --git a/ext/pdo_sqlite/php_pdo_sqlite.h b/ext/pdo_sqlite/php_pdo_sqlite.h index 3e912c518..7ad681108 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_sqlite.h,v 1.2.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_sqlite.h,v 1.2.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #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 0269e9c6a..9430cea95 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_sqlite_int.h,v 1.3.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pdo_sqlite_int.h,v 1.3.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_PDO_SQLITE_INT_H #define PHP_PDO_SQLITE_INT_H diff --git a/ext/pdo_sqlite/sqlite/src/keywordhash.h b/ext/pdo_sqlite/sqlite/src/keywordhash.h index cdf8b630e..87111ce8f 100644 --- a/ext/pdo_sqlite/sqlite/src/keywordhash.h +++ b/ext/pdo_sqlite/sqlite/src/keywordhash.h @@ -2,7 +2,7 @@ ** ** The code in this file has been automatically generated by ** -** $Header: /repository/php-src/ext/pdo_sqlite/sqlite/src/keywordhash.h,v 1.2.2.1.2.4 2007/05/16 21:04:46 iliaa Exp $ +** $Header: /repository/php-src/ext/pdo_sqlite/sqlite/src/Attic/keywordhash.h,v 1.2.2.1.2.4 2007/05/16 21:04:46 iliaa Exp $ ** ** The code in this file implements a function that determines whether ** or not a given identifier is really an SQL keyword. The same thing diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c index f65cc9320..7f0ffcdad 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sqlite_driver.c,v 1.20.2.5.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: sqlite_driver.c,v 1.20.2.5.2.5 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -368,8 +368,8 @@ static int do_callback(struct pdo_sqlite_fci *fc, zval *cb, } /* clean up the params */ - if (argc) { - for (i = is_agg; i < argc; i++) { + if (zargs) { + for (i = is_agg; i < fake_argc; i++) { zval_ptr_dtor(zargs[i]); efree(zargs[i]); } @@ -498,6 +498,7 @@ static PHP_METHOD(SQLite, sqliteCreateFunction) MAKE_STD_ZVAL(func->func); *(func->func) = *callback; zval_copy_ctor(func->func); + INIT_PZVAL(func->func); func->argc = argc; @@ -576,10 +577,12 @@ static PHP_METHOD(SQLite, sqliteCreateAggregate) MAKE_STD_ZVAL(func->step); *(func->step) = *step_callback; zval_copy_ctor(func->step); + INIT_PZVAL(func->step); MAKE_STD_ZVAL(func->fini); *(func->fini) = *fini_callback; zval_copy_ctor(func->fini); + INIT_PZVAL(func->fini); func->argc = argc; diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c index 339f47143..b096fcb03 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sqlite_statement.c,v 1.18.2.4.2.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: sqlite_statement.c,v 1.18.2.4.2.5 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/pdo_sqlite/tests/bug44327_2.phpt b/ext/pdo_sqlite/tests/bug44327_2.phpt new file mode 100644 index 000000000..0e704c573 --- /dev/null +++ b/ext/pdo_sqlite/tests/bug44327_2.phpt @@ -0,0 +1,50 @@ +--TEST-- +Bug #44327.2 (PDORow::queryString property & numeric offsets / Crash) +--SKIPIF-- + +--FILE-- +query('select 1 as queryString'); +var_dump($x, $x->queryString); + +$y = $x->fetch(); +var_dump($y, @$y->queryString); + +print "--------------------------------------------\n"; + +$x = $db->query('select 1 as queryString'); +var_dump($x, $x->queryString); + +$y = $x->fetch(PDO::FETCH_LAZY); +var_dump($y, $y->queryString); + +?> +--EXPECTF-- +object(PDOStatement)#%d (1) { + ["queryString"]=> + string(23) "select 1 as queryString" +} +string(23) "select 1 as queryString" +array(2) { + ["queryString"]=> + string(1) "1" + [0]=> + string(1) "1" +} +NULL +-------------------------------------------- +object(PDOStatement)#%d (1) { + ["queryString"]=> + string(23) "select 1 as queryString" +} +string(23) "select 1 as queryString" +object(PDORow)#%d (1) { + ["queryString"]=> + string(1) "1" +} +string(1) "1" diff --git a/ext/pdo_sqlite/tests/bug44327_3.phpt b/ext/pdo_sqlite/tests/bug44327_3.phpt new file mode 100644 index 000000000..4d704c3d6 --- /dev/null +++ b/ext/pdo_sqlite/tests/bug44327_3.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #44327.3 (PDORow::queryString property & numeric offsets / Crash) +--SKIPIF-- + +--FILE-- +query('select 1 as queryStringxx'); +$y = $x->fetch(PDO::FETCH_LAZY); +var_dump($y, $y->queryString, $y->queryStringzz, $y->queryStringxx); + +print "---\n"; + +var_dump($y[5], $y->{3}); + +?> +--EXPECTF-- +object(PDORow)#%d (2) { + ["queryString"]=> + string(25) "select 1 as queryStringxx" + ["queryStringxx"]=> + string(1) "1" +} +string(25) "select 1 as queryStringxx" +NULL +string(1) "1" +--- +NULL +NULL diff --git a/ext/pdo_sqlite/tests/bug46139.phpt b/ext/pdo_sqlite/tests/bug46139.phpt new file mode 100644 index 000000000..c361d7a9b --- /dev/null +++ b/ext/pdo_sqlite/tests/bug46139.phpt @@ -0,0 +1,42 @@ +--TEST-- +Bug #46139 (PDOStatement->setFetchMode() forgets FETCH_PROPS_LATE) +--SKIPIF-- + +--FILE-- +test); + } +} + +$stmt = $db->query("SELECT 'foo' test, 1"); +$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Person'); +$r1 = $stmt->fetch(); +printf("'%s'\n", $r1->test); + +$stmt = $db->query("SELECT 'foo' test, 1"); +$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Person'); +$r1 = $stmt->fetchAll(); +printf("'%s'\n", $r1[0]->test); + +$stmt = $db->query("SELECT 'foo' test, 1"); +$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Person'); +$r1 = $stmt->fetch(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE); +printf("'%s'\n", $r1->test); + +?> +--EXPECT-- +NULL +'foo' +NULL +'foo' +NULL +'foo' diff --git a/ext/pdo_sqlite/tests/debugdumpparams_001.phpt b/ext/pdo_sqlite/tests/debugdumpparams_001.phpt new file mode 100644 index 000000000..c263eb143 --- /dev/null +++ b/ext/pdo_sqlite/tests/debugdumpparams_001.phpt @@ -0,0 +1,37 @@ +--TEST-- +Testing PDOStatement::debugDumpParams() with bound params +--SKIPIF-- + +--FILE-- +prepare('select :a, :b, ?'); +$x->bindValue(':a', 1, PDO::PARAM_INT); +$x->bindValue(':b', 'foo'); +$x->bindValue(3, 1313); +var_dump($x->debugDumpParams()); + +?> +--EXPECT-- +SQL: [16] select :a, :b, ? +Params: 3 +Key: Name: [2] :a +paramno=-1 +name=[2] ":a" +is_param=1 +param_type=1 +Key: Name: [2] :b +paramno=-1 +name=[2] ":b" +is_param=1 +param_type=2 +Key: Position #2: +paramno=2 +name=[0] "" +is_param=1 +param_type=2 +NULL diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt new file mode 100644 index 000000000..8661e3679 --- /dev/null +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createaggregate.phpt @@ -0,0 +1,31 @@ +--TEST-- +PDO_sqlite: Testing sqliteCreateAggregate() +--FILE-- +query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)'); + +$db->query('INSERT INTO foobar VALUES (NULL, "PHP")'); +$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")'); + +function test_a(&$a, $b) { $a .= $b; return $a; } +function test_b(&$a) { return $a; } +$db->sqliteCreateAggregate('testing', 'test_a', 'test_b'); + + +foreach ($db->query('SELECT testing(name) FROM foobar') as $row) { + var_dump($row); +} + +$db->query('DROP TABLE foobar'); + +?> +--EXPECTF-- +array(2) { + ["testing(name)"]=> + %string|unicode%(2) "12" + [0]=> + %string|unicode%(2) "12" +} diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt new file mode 100644 index 000000000..74a79faed --- /dev/null +++ b/ext/pdo_sqlite/tests/pdo_sqlite_createfunction.phpt @@ -0,0 +1,37 @@ +--TEST-- +PDO_sqlite: Testing sqliteCreateFunction() +--FILE-- +query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)'); + +$db->query('INSERT INTO foobar VALUES (NULL, "PHP")'); +$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")'); + + +function test($v) { return strtolower($v); } +$db->sqliteCreateFunction('testing', 'test'); + + +foreach ($db->query('SELECT testing(name) FROM foobar') as $row) { + var_dump($row); +} + +$db->query('DROP TABLE foobar'); + +?> +--EXPECTF-- +array(2) { + ["testing(name)"]=> + %string|unicode%(3) "php" + [0]=> + %string|unicode%(3) "php" +} +array(2) { + ["testing(name)"]=> + %string|unicode%(4) "php6" + [0]=> + %string|unicode%(4) "php6" +} diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt new file mode 100644 index 000000000..d930e7f0a --- /dev/null +++ b/ext/pdo_sqlite/tests/pdo_sqlite_lastinsertid.phpt @@ -0,0 +1,26 @@ +--TEST-- +PDO_sqlite: Testing lastInsertId() +--FILE-- +query('CREATE TABLE IF NOT EXISTS foo (id INT AUTO INCREMENT, name TEXT)'); +$db->query('INSERT INTO foo VALUES (NULL, "PHP")'); +$db->query('INSERT INTO foo VALUES (NULL, "PHP6")'); +var_dump($db->query('SELECT * FROM foo')); +var_dump($db->errorInfo()); +var_dump($db->lastInsertId()); + +$db->query('DROP TABLE foo'); + +?> +--EXPECTF-- +object(PDOStatement)#2 (1) { + ["queryString"]=> + %string|unicode%(17) "SELECT * FROM foo" +} +array(1) { + [0]=> + %string|unicode%(5) "00000" +} +%string|unicode%(1) "2" diff --git a/ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt b/ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt new file mode 100644 index 000000000..75f416987 --- /dev/null +++ b/ext/pdo_sqlite/tests/pdo_sqlite_transaction.phpt @@ -0,0 +1,26 @@ +--TEST-- +PDO_sqlite: Testing transaction +--FILE-- +beginTransaction(); + +$db->query('CREATE TABLE IF NOT EXISTS foobar (id INT AUTO INCREMENT, name TEXT)'); +$db->commit(); + +$db->beginTransaction(); +$db->query('INSERT INTO foobar VALUES (NULL, "PHP")'); +$db->query('INSERT INTO foobar VALUES (NULL, "PHP6")'); +$db->rollback(); + +$r = $db->query('SELECT COUNT(*) FROM foobar'); +var_dump($r->rowCount()); + + +$db->query('DROP TABLE foobar'); + +?> +--EXPECTF-- +int(0) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 15371e01c..05493d87d 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pgsql.c,v 1.331.2.13.2.27 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pgsql.c,v 1.331.2.13.2.36 2009/01/27 14:44:07 felipe Exp $ */ #include @@ -1199,6 +1199,12 @@ PHP_FUNCTION(pg_query) static void _php_pgsql_free_params(char **params, int num_params) { if (num_params > 0) { + int i; + for (i = 0; i < num_params; i++) { + if (params[i]) { + efree(params[i]); + } + } efree(params); } } @@ -1216,7 +1222,6 @@ PHP_FUNCTION(pg_query_params) int leftover = 0; int num_params = 0; char **params = NULL; - unsigned char otype; PGconn *pgsql; PGresult *pgsql_result; ExecStatusType status; @@ -1276,19 +1281,20 @@ PHP_FUNCTION(pg_query_params) RETURN_FALSE; } - otype = (*tmp)->type; - convert_to_string_ex(tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); - _php_pgsql_free_params(params, num_params); - RETURN_FALSE; - } - - if (otype == IS_NULL) { + if (Z_TYPE_PP(tmp) == IS_NULL) { params[i] = NULL; - } - else { - params[i] = Z_STRVAL_PP(tmp); + } else { + zval tmp_val = **tmp; + zval_copy_ctor(&tmp_val); + convert_to_string(&tmp_val); + if (Z_TYPE(tmp_val) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); + zval_dtor(&tmp_val); + _php_pgsql_free_params(params, num_params); + RETURN_FALSE; + } + params[i] = estrndup(Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); + zval_dtor(&tmp_val); } zend_hash_move_forward(Z_ARRVAL_PP(pv_param_arr)); @@ -1439,7 +1445,6 @@ PHP_FUNCTION(pg_execute) int leftover = 0; int num_params = 0; char **params = NULL; - unsigned char otype; PGconn *pgsql; PGresult *pgsql_result; ExecStatusType status; @@ -1500,19 +1505,20 @@ PHP_FUNCTION(pg_execute) RETURN_FALSE; } - otype = (*tmp)->type; - SEPARATE_ZVAL(tmp); - convert_to_string_ex(tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); - _php_pgsql_free_params(params, num_params); - RETURN_FALSE; - } - - if (otype == IS_NULL) { + if (Z_TYPE_PP(tmp) == IS_NULL) { params[i] = NULL; } else { - params[i] = Z_STRVAL_PP(tmp); + zval tmp_val = **tmp; + zval_copy_ctor(&tmp_val); + convert_to_string(&tmp_val); + if (Z_TYPE(tmp_val) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); + zval_dtor(&tmp_val); + _php_pgsql_free_params(params, num_params); + RETURN_FALSE; + } + params[i] = estrndup(Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); + zval_dtor(&tmp_val); } zend_hash_move_forward(Z_ARRVAL_PP(pv_param_arr)); @@ -1729,7 +1735,7 @@ PHP_FUNCTION(pg_field_table) char *table_name; zend_rsrc_list_entry *field_table; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|b!", &result, &fnum, &return_oid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|b", &result, &fnum, &return_oid) == FAILURE) { return; } @@ -1979,10 +1985,9 @@ PHP_FUNCTION(pg_fetch_result) if (PQgetisnull(pgsql_result, pgsql_row, field_offset)) { Z_TYPE_P(return_value) = IS_NULL; } else { - Z_STRVAL_P(return_value) = PQgetvalue(pgsql_result, pgsql_row, field_offset); - Z_STRLEN_P(return_value) = (Z_STRVAL_P(return_value) ? strlen(Z_STRVAL_P(return_value)) : 0); - Z_STRVAL_P(return_value) = safe_estrndup(Z_STRVAL_P(return_value),Z_STRLEN_P(return_value)); - Z_TYPE_P(return_value) = IS_STRING; + char *value = PQgetvalue(pgsql_result, pgsql_row, field_offset); + int value_len = PQgetlength(pgsql_result, pgsql_row, field_offset); + ZVAL_STRINGL(return_value, value, value_len, 1); } } /* }}} */ @@ -3449,7 +3454,7 @@ PHP_FUNCTION(pg_copy_from) ExecStatusType status; int argc = ZEND_NUM_ARGS(); - if (zend_parse_parameters(argc TSRMLS_CC, "rs/a|ss", + if (zend_parse_parameters(argc TSRMLS_CC, "rsa|ss", &pgsql_link, &table_name, &table_name_len, &pg_rows, &pg_delim, &pg_delim_len, &pg_null_as, &pg_null_as_len) == FAILURE) { return; @@ -4048,7 +4053,6 @@ PHP_FUNCTION(pg_send_query_params) zval **pv_param_arr, **tmp; int num_params = 0; char **params = NULL; - unsigned char otype; zval **query; int id = -1; PGconn *pgsql; @@ -4097,20 +4101,20 @@ PHP_FUNCTION(pg_send_query_params) RETURN_FALSE; } - otype = (*tmp)->type; - SEPARATE_ZVAL(tmp); - convert_to_string_ex(tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); - _php_pgsql_free_params(params, num_params); - RETURN_FALSE; - } - - if (otype == IS_NULL) { + if (Z_TYPE_PP(tmp) == IS_NULL) { params[i] = NULL; - } - else { - params[i] = Z_STRVAL_PP(tmp); + } else { + zval tmp_val = **tmp; + zval_copy_ctor(&tmp_val); + convert_to_string(&tmp_val); + if (Z_TYPE(tmp_val) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); + zval_dtor(&tmp_val); + _php_pgsql_free_params(params, num_params); + RETURN_FALSE; + } + params[i] = estrndup(Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); + zval_dtor(&tmp_val); } zend_hash_move_forward(Z_ARRVAL_PP(pv_param_arr)); @@ -4194,7 +4198,6 @@ PHP_FUNCTION(pg_send_execute) zval **pv_param_arr, **tmp; int num_params = 0; char **params = NULL; - unsigned char otype; zval **stmtname; int id = -1; PGconn *pgsql; @@ -4241,19 +4244,20 @@ PHP_FUNCTION(pg_send_execute) RETURN_FALSE; } - otype = (*tmp)->type; - convert_to_string(*tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); - _php_pgsql_free_params(params, num_params); - RETURN_FALSE; - } - - if (otype == IS_NULL) { + if (Z_TYPE_PP(tmp) == IS_NULL) { params[i] = NULL; - } - else { - params[i] = Z_STRVAL_PP(tmp); + } else { + zval tmp_val = **tmp; + zval_copy_ctor(&tmp_val); + convert_to_string(&tmp_val); + if (Z_TYPE(tmp_val) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); + zval_dtor(&tmp_val); + _php_pgsql_free_params(params, num_params); + RETURN_FALSE; + } + params[i] = estrndup(Z_STRVAL(tmp_val), Z_STRLEN(tmp_val)); + zval_dtor(&tmp_val); } zend_hash_move_forward(Z_ARRVAL_PP(pv_param_arr)); @@ -4407,27 +4411,47 @@ PHP_FUNCTION(pg_get_pid) PHP_PGSQL_API int php_pgsql_meta_data(PGconn *pg_link, const char *table_name, zval *meta TSRMLS_DC) { PGresult *pg_result; - char *tmp_name; + char *src, *tmp_name, *tmp_name2 = NULL; smart_str querystr = {0}; int new_len; int i, num_rows; zval *elem; + if (!*table_name) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The table name must be specified"); + return FAILURE; + } + + src = estrdup(table_name); + tmp_name = php_strtok_r(src, ".", &tmp_name2); + + if (!tmp_name2 || !*tmp_name2) { + /* Default schema */ + tmp_name2 = tmp_name; + tmp_name = "public"; + } + smart_str_appends(&querystr, "SELECT a.attname, a.attnum, t.typname, a.attlen, a.attnotNULL, a.atthasdef, a.attndims " - "FROM pg_class as c, pg_attribute a, pg_type t " + "FROM pg_class as c, pg_attribute a, pg_type t, pg_namespace n " "WHERE a.attnum > 0 AND a.attrelid = c.oid AND c.relname = '"); + tmp_name2 = php_addslashes(tmp_name2, strlen(tmp_name2), &new_len, 0 TSRMLS_CC); + smart_str_appendl(&querystr, tmp_name2, new_len); - tmp_name = php_addslashes((char *)table_name, strlen(table_name), &new_len, 0 TSRMLS_CC); + smart_str_appends(&querystr, "' AND c.relnamespace = n.oid AND n.nspname = '"); + tmp_name = php_addslashes(tmp_name, strlen(tmp_name), &new_len, 0 TSRMLS_CC); smart_str_appendl(&querystr, tmp_name, new_len); - efree(tmp_name); smart_str_appends(&querystr, "' AND a.atttypid = t.oid ORDER BY a.attnum;"); smart_str_0(&querystr); + efree(tmp_name2); + efree(tmp_name); + efree(src); + pg_result = PQexec(pg_link, querystr.c); if (PQresultStatus(pg_result) != PGRES_TUPLES_OK || (num_rows = PQntuples(pg_result)) == 0) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Failed to query meta_data for '%s' table %s", table_name, querystr.c); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Table '%s' doesn't exists", table_name); smart_str_free(&querystr); PQclear(pg_result); return FAILURE; @@ -5003,7 +5027,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con ZVAL_STRINGL(new_val, "NOW()", sizeof("NOW()")-1, 1); } else { /* FIXME: better regex must be used */ - if (php_pgsql_convert_match(Z_STRVAL_PP(val), "^([0-9]{4}[/-][0-9]{1,2}[/-][0-9]{1,2})([ \\t]+(([0-9]{1,2}:[0-9]{1,2}){1}(:[0-9]{1,2}){0,1}(\\.[0-9]+){0,1}([ \\t]*([+-][0-9]{1,2}(:[0-9]{1,2}){0,1}|[-a-zA-Z_/+]{1,50})){0,1})){0,1}$", 1 TSRMLS_CC) == FAILURE) { + if (php_pgsql_convert_match(Z_STRVAL_PP(val), "^([0-9]{4}[/-][0-9]{1,2}[/-][0-9]{1,2})([ \\t]+(([0-9]{1,2}:[0-9]{1,2}){1}(:[0-9]{1,2}){0,1}(\\.[0-9]+){0,1}([ \\t]*([+-][0-9]{1,4}(:[0-9]{1,2}){0,1}|[-a-zA-Z_/+]{1,50})){0,1})){0,1}$", 1 TSRMLS_CC) == FAILURE) { err = 1; } else { ZVAL_STRING(new_val, Z_STRVAL_PP(val), 1); @@ -5342,7 +5366,7 @@ static int do_exec(smart_str *querystr, int expect, PGconn *pg_link, ulong opt T PQclear(pg_result); return 0; } else { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Failed to execute '%s'", querystr->c); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", PQresultErrorMessage(pg_result)); PQclear(pg_result); } } @@ -5693,7 +5717,7 @@ cleanup: FREE_ZVAL(ids_converted); } if (ret == SUCCESS && (opt & PGSQL_DML_STRING)) { - *sql = estrdup(querystr.c); + *sql = querystr.c; } else { smart_str_free(&querystr); diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h index 08b2a394d..f6033e5a4 100644 --- a/ext/pgsql/php_pgsql.h +++ b/ext/pgsql/php_pgsql.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pgsql.h,v 1.73.2.1.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pgsql.h,v 1.73.2.1.2.4 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_PGSQL_H #define PHP_PGSQL_H diff --git a/ext/pgsql/tests/bug37100.phpt b/ext/pgsql/tests/bug37100.phpt new file mode 100644 index 000000000..b66149e4a --- /dev/null +++ b/ext/pgsql/tests/bug37100.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #37100 (data is returned truncated with BINARY CURSOR) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(24) "\001\003\252\000\010\022" +string(12) "0103aa000812" +int(6) +string(12) "0103aa000812" diff --git a/ext/pgsql/tests/pg_delete_001.phpt b/ext/pgsql/tests/pg_delete_001.phpt new file mode 100644 index 000000000..abb65be14 --- /dev/null +++ b/ext/pgsql/tests/pg_delete_001.phpt @@ -0,0 +1,86 @@ +--TEST-- +PostgreSQL pg_delete() - basic test using schema +--SKIPIF-- + +--FILE-- + 1, 'id2' => 1)); +pg_insert($conn, 'foo', array('id' => 1, 'id2' => 2)); +pg_insert($conn, 'foo', array('id' => 1, 'id2' => 2)); +pg_insert($conn, 'foo', array('id' => 3, 'id2' => 3)); + +pg_insert($conn, 'phptests.foo', array('id' => 1, 'id2' => 1)); +pg_insert($conn, 'phptests.foo', array('id' => 1, 'id2' => 2)); +pg_insert($conn, 'phptests.foo', array('id' => 2, 'id2' => 3)); +pg_insert($conn, 'phptests.foo', array('id' => 2, 'id2' => 3)); + +pg_delete($conn, 'foo', array('id' => 1, 'id2' => 0)); +pg_delete($conn, 'foo', array('id' => 1, 'id2' => 2)); +var_dump(pg_delete($conn, 'foo', array('id' => 1, 'id2' => 2), PGSQL_DML_STRING)); + +pg_delete($conn, 'phptests.foo', array('id' => 2, 'id2' => 1)); +pg_delete($conn, 'phptests.foo', array('id' => 2, 'id2' => 3)); +var_dump(pg_delete($conn, 'phptests.foo', array('id' => 2, 'id2' => 3), PGSQL_DML_STRING)); + +var_dump(pg_fetch_all(pg_query('SELECT * FROM foo'))); +var_dump(pg_fetch_all(pg_query('SELECT * FROM phptests.foo'))); + +/* Inexistent */ +pg_delete($conn, 'bar', array('id' => 1, 'id2' => 2)); +var_dump(pg_delete($conn, 'bar', array('id' => 1, 'id2' => 2), PGSQL_DML_STRING)); + +pg_query('DROP TABLE foo'); +pg_query('DROP TABLE phptests.foo'); +pg_query('DROP SCHEMA phptests'); + +?> +--EXPECTF-- +string(37) "DELETE FROM foo WHERE id=1 AND id2=2;" +string(46) "DELETE FROM phptests.foo WHERE id=2 AND id2=3;" +array(2) { + [0]=> + array(2) { + ["id"]=> + string(1) "1" + ["id2"]=> + string(1) "1" + } + [1]=> + array(2) { + ["id"]=> + string(1) "3" + ["id2"]=> + string(1) "3" + } +} +array(2) { + [0]=> + array(2) { + ["id"]=> + string(1) "1" + ["id2"]=> + string(1) "1" + } + [1]=> + array(2) { + ["id"]=> + string(1) "1" + ["id2"]=> + string(1) "2" + } +} + +Warning: pg_delete(): Table 'bar' doesn't exists in %s on line %d + +Warning: pg_delete(): Table 'bar' doesn't exists in %s on line %d +bool(false) diff --git a/ext/pgsql/tests/pg_insert_001.phpt b/ext/pgsql/tests/pg_insert_001.phpt new file mode 100644 index 000000000..7d2721918 --- /dev/null +++ b/ext/pgsql/tests/pg_insert_001.phpt @@ -0,0 +1,40 @@ +--TEST-- +PostgreSQL pg_select() - basic test using schema +--SKIPIF-- + +--FILE-- + 1, 'id2' => 1)); + +pg_insert($conn, 'phptests.foo', array('id' => 1, 'id2' => 2)); + +var_dump(pg_insert($conn, 'phptests.foo', array('id' => 1, 'id2' => 2), PGSQL_DML_STRING)); + +var_dump(pg_select($conn, 'phptests.foo', array('id' => 1))); + +pg_query('DROP TABLE phptests.foo'); +pg_query('DROP SCHEMA phptests'); + +?> +--EXPECTF-- + +Warning: pg_insert(): Table 'foo' doesn't exists in %s on line %d +string(47) "INSERT INTO phptests.foo (id,id2) VALUES (1,2);" +array(1) { + [0]=> + array(2) { + ["id"]=> + string(1) "1" + ["id2"]=> + string(1) "2" + } +} diff --git a/ext/pgsql/tests/pg_meta_data_001.phpt b/ext/pgsql/tests/pg_meta_data_001.phpt new file mode 100644 index 000000000..2841de83d --- /dev/null +++ b/ext/pgsql/tests/pg_meta_data_001.phpt @@ -0,0 +1,92 @@ +--TEST-- +PostgreSQL pg_meta_data() - basic test using schema +--SKIPIF-- + +--FILE-- + +--EXPECT-- +array(2) { + ["id"]=> + array(6) { + ["num"]=> + int(1) + ["type"]=> + string(4) "int4" + ["len"]=> + int(4) + ["not null"]=> + bool(false) + ["has default"]=> + bool(false) + ["array dims"]=> + int(0) + } + ["id3"]=> + array(6) { + ["num"]=> + int(2) + ["type"]=> + string(4) "int4" + ["len"]=> + int(4) + ["not null"]=> + bool(false) + ["has default"]=> + bool(false) + ["array dims"]=> + int(0) + } +} +array(2) { + ["id"]=> + array(6) { + ["num"]=> + int(1) + ["type"]=> + string(4) "int4" + ["len"]=> + int(4) + ["not null"]=> + bool(false) + ["has default"]=> + bool(false) + ["array dims"]=> + int(0) + } + ["id2"]=> + array(6) { + ["num"]=> + int(2) + ["type"]=> + string(4) "int4" + ["len"]=> + int(4) + ["not null"]=> + bool(false) + ["has default"]=> + bool(false) + ["array dims"]=> + int(0) + } +} diff --git a/ext/pgsql/tests/pg_select_001.phpt b/ext/pgsql/tests/pg_select_001.phpt new file mode 100644 index 000000000..9bcf130dd --- /dev/null +++ b/ext/pgsql/tests/pg_select_001.phpt @@ -0,0 +1,63 @@ +--TEST-- +PostgreSQL pg_select() - basic test using schema +--SKIPIF-- + +--FILE-- + 1))); + +/* Existent column */ +var_dump(pg_select($conn, 'phptests.foo', array('id' => 1))); + +/* Testing with inexistent column */ +var_dump(pg_select($conn, 'phptests.bar', array('id' => 1))); + +/* Existent column */ +var_dump(pg_select($conn, 'phptests.bar', array('id4' => 4))); + + +pg_query('DROP TABLE phptests.foo'); +pg_query('DROP TABLE phptests.bar'); +pg_query('DROP SCHEMA phptests'); + +?> +--EXPECTF-- +Warning: pg_select(): Table 'foo' doesn't exists in %s on line %d +bool(false) +array(1) { + [0]=> + array(2) { + ["id"]=> + string(1) "1" + ["id2"]=> + string(1) "2" + } +} + +Notice: pg_select(): Invalid field name (id) in values in %s on line %d +bool(false) +array(1) { + [0]=> + array(2) { + ["id4"]=> + string(1) "4" + ["id3"]=> + string(1) "5" + } +} diff --git a/ext/pgsql/tests/pg_update_001.phpt b/ext/pgsql/tests/pg_update_001.phpt new file mode 100644 index 000000000..95fa69256 --- /dev/null +++ b/ext/pgsql/tests/pg_update_001.phpt @@ -0,0 +1,51 @@ +--TEST-- +PostgreSQL pg_update() - basic test using schema +--SKIPIF-- + +--FILE-- + 1, 'id2' => 1)); +pg_insert($conn, 'phptests.foo', array('id' => 1, 'id2' => 2)); + +pg_update($conn, 'foo', array('id' => 10), array('id' => 1)); +var_dump(pg_update($conn, 'foo', array('id' => 10), array('id' => 1), PGSQL_DML_STRING)); + +pg_update($conn, 'phptests.foo', array('id' => 100), array('id2' => 2)); +var_dump(pg_update($conn, 'phptests.foo', array('id' => 100), array('id2' => 2), PGSQL_DML_STRING)); + +$rs = pg_query('SELECT * FROM foo UNION SELECT * FROM phptests.foo'); +while ($row = pg_fetch_assoc($rs)) { + var_dump($row); +} + +pg_query('DROP TABLE foo'); +pg_query('DROP TABLE phptests.foo'); +pg_query('DROP SCHEMA phptests'); + +?> +--EXPECT-- +string(32) "UPDATE foo SET id=10 WHERE id=1;" +string(43) "UPDATE phptests.foo SET id=100 WHERE id2=2;" +array(2) { + ["id"]=> + string(2) "10" + ["id2"]=> + string(1) "1" +} +array(2) { + ["id"]=> + string(3) "100" + ["id2"]=> + string(1) "2" +} diff --git a/ext/posix/config.m4 b/ext/posix/config.m4 index 4c8158044..deaa52af3 100644 --- a/ext/posix/config.m4 +++ b/ext/posix/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.12.4.5 2007/03/01 11:23:54 tony2001 Exp $ +dnl $Id: config.m4,v 1.12.4.7 2009/01/21 19:23:03 jani Exp $ dnl PHP_ARG_ENABLE(posix,whether to enable POSIX-like functions, @@ -31,4 +31,20 @@ int main(int argc, char *argv[]) ], [ AC_MSG_RESULT([no, cannot detect working ttyname_r() when cross compiling. posix_ttyname() will be thread-unsafe]) ]) + + AC_CACHE_CHECK([for utsname.domainname], ac_cv_have_utsname_domainname, [ + AC_TRY_COMPILE([ + #define _GNU_SOURCE + #include + ],[ + return sizeof(((struct utsname *)0)->domainname); + ],[ + ac_cv_have_utsname_domainname=yes + ],[ + ac_cv_have_utsname_domainname=no + ]) + ]) + if test "$ac_cv_have_utsname_domainname" = yes; then + AC_DEFINE(HAVE_UTSNAME_DOMAINNAME, 1, [Wether struct utsname has domainname]) + fi fi diff --git a/ext/posix/php_posix.h b/ext/posix/php_posix.h index a966b490f..431b83714 100644 --- a/ext/posix/php_posix.h +++ b/ext/posix/php_posix.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ */ -/* $Id: php_posix.h,v 1.18.2.1.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_posix.h,v 1.18.2.1.2.4 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_POSIX_H #define PHP_POSIX_H diff --git a/ext/posix/posix.c b/ext/posix/posix.c index ba9d09aa4..feb2c4bf5 100644 --- a/ext/posix/posix.c +++ b/ext/posix/posix.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: posix.c,v 1.70.2.3.2.18 2008/04/11 11:00:24 tony2001 Exp $ */ +/* $Id: posix.c,v 1.70.2.3.2.22 2009/01/04 15:08:34 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -36,6 +36,11 @@ #endif #include + +#if defined(_GNU_SOURCE) && !defined(__USE_GNU) +# define __USE_GNU +#endif + #include #include #include @@ -147,7 +152,7 @@ zend_function_entry posix_functions[] = { static PHP_MINFO_FUNCTION(posix) { php_info_print_table_start(); - php_info_print_table_row(2, "Revision", "$Revision: 1.70.2.3.2.18 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.70.2.3.2.22 $"); php_info_print_table_end(); } /* }}} */ @@ -467,7 +472,7 @@ PHP_FUNCTION(posix_uname) add_assoc_string(return_value, "release", u.release, 1); add_assoc_string(return_value, "version", u.version, 1); add_assoc_string(return_value, "machine", u.machine, 1); -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) && !defined(DARWIN) && defined(HAVE_UTSNAME_DOMAINNAME) add_assoc_string(return_value, "domainname", u.domainname, 1); #endif } diff --git a/ext/posix/tests/posix_getcwd.phpt b/ext/posix/tests/posix_getcwd.phpt new file mode 100644 index 000000000..478aeccaa --- /dev/null +++ b/ext/posix/tests/posix_getcwd.phpt @@ -0,0 +1,19 @@ +--TEST-- +posix_getcwd(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECTF-- +string(%d) "%s" + +Warning: Wrong parameter count for posix_getcwd() in %s on line %d +NULL diff --git a/ext/posix/tests/posix_getgrgid_error.phpt b/ext/posix/tests/posix_getgrgid_error.phpt index bce624f45..7fcc8926f 100644 --- a/ext/posix/tests/posix_getgrgid_error.phpt +++ b/ext/posix/tests/posix_getgrgid_error.phpt @@ -12,10 +12,6 @@ Test posix_getgrgid() function : error conditions * Alias to functions: */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing posix_getgrgid() : error conditions ***\n"; // Zero arguments diff --git a/ext/posix/tests/posix_getgrnam.phpt b/ext/posix/tests/posix_getgrnam.phpt new file mode 100644 index 000000000..9d24f085e --- /dev/null +++ b/ext/posix/tests/posix_getgrnam.phpt @@ -0,0 +1,19 @@ +--TEST-- +posix_getgrnam(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECT-- +bool(false) +bool(false) +bool(false) diff --git a/ext/posix/tests/posix_getpwnam.phpt b/ext/posix/tests/posix_getpwnam.phpt new file mode 100644 index 000000000..4b8962297 --- /dev/null +++ b/ext/posix/tests/posix_getpwnam.phpt @@ -0,0 +1,19 @@ +--TEST-- +posix_getpwnam(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECT-- +bool(false) +bool(false) +bool(false) diff --git a/ext/posix/tests/posix_getrlimit.phpt b/ext/posix/tests/posix_getrlimit.phpt new file mode 100644 index 000000000..55bd8aff8 --- /dev/null +++ b/ext/posix/tests/posix_getrlimit.phpt @@ -0,0 +1,17 @@ +--TEST-- +posix_getrlimit(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECTF-- +array(%d) { +%a +} diff --git a/ext/posix/tests/posix_initgroups.phpt b/ext/posix/tests/posix_initgroups.phpt new file mode 100644 index 000000000..6ffb202f3 --- /dev/null +++ b/ext/posix/tests/posix_initgroups.phpt @@ -0,0 +1,18 @@ +--TEST-- +posix_initgroups(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECTF-- +Warning: posix_initgroups() expects parameter 2 to be long, string given in %s on line %d +bool(false) +bool(false) diff --git a/ext/posix/tests/posix_isatty.phpt b/ext/posix/tests/posix_isatty.phpt new file mode 100644 index 000000000..74309c299 --- /dev/null +++ b/ext/posix/tests/posix_isatty.phpt @@ -0,0 +1,15 @@ +--TEST-- +posix_isatty(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECTF-- +bool(%s) diff --git a/ext/posix/tests/posix_kill_variation1.phpt b/ext/posix/tests/posix_kill_variation1.phpt index 46268f241..6fcf0fa98 100644 --- a/ext/posix/tests/posix_kill_variation1.phpt +++ b/ext/posix/tests/posix_kill_variation1.phpt @@ -12,10 +12,6 @@ Test posix_kill() function : usage variations - first parameter type * Alias to functions: */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing posix_kill() : usage variations ***\n"; // Initialise function arguments not being substituted (if any) diff --git a/ext/posix/tests/posix_kill_variation2.phpt b/ext/posix/tests/posix_kill_variation2.phpt index aef9acd04..240cfa57c 100644 --- a/ext/posix/tests/posix_kill_variation2.phpt +++ b/ext/posix/tests/posix_kill_variation2.phpt @@ -12,10 +12,6 @@ Test posix_kill() function : usage variations - second parameter type * Alias to functions: */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing posix_kill() : usage variations ***\n"; // Initialise function arguments not being substituted (if any) diff --git a/ext/posix/tests/posix_mknod.phpt b/ext/posix/tests/posix_mknod.phpt new file mode 100644 index 000000000..1063abe5d --- /dev/null +++ b/ext/posix/tests/posix_mknod.phpt @@ -0,0 +1,15 @@ +--TEST-- +posix_mknod(): Basic tests +--SKIP-- + +--FILE-- + +--EXPECT-- +bool(false) diff --git a/ext/posix/tests/posix_strerror_error.phpt b/ext/posix/tests/posix_strerror_error.phpt index 6fc17ec0c..d9b615963 100644 --- a/ext/posix/tests/posix_strerror_error.phpt +++ b/ext/posix/tests/posix_strerror_error.phpt @@ -24,7 +24,7 @@ var_dump( posix_strerror($errno, $extra_arg) ); echo "\n-- Testing posix_strerror() function with invalid error number --\n"; $errno = -999; -var_dump( posix_strerror($errno) ); +echo gettype(posix_strerror($errno))."\n"; echo "Done"; ?> @@ -42,5 +42,5 @@ Warning: posix_strerror() expects exactly 1 parameter, 2 given in %s on line %d bool(false) -- Testing posix_strerror() function with invalid error number -- -string(%d) "Unknown error %d" +string Done diff --git a/ext/posix/tests/posix_strerror_variation1.phpt b/ext/posix/tests/posix_strerror_variation1.phpt index 40cfab2aa..d49342b21 100644 --- a/ext/posix/tests/posix_strerror_variation1.phpt +++ b/ext/posix/tests/posix_strerror_variation1.phpt @@ -12,10 +12,6 @@ Test posix_strerror() function : usage variations * Alias to functions: */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing posix_strerror() : usage variations ***\n"; // Initialise function arguments not being substituted (if any) @@ -73,7 +69,7 @@ $values = array( foreach($values as $value) { echo "\nArg value $value \n"; - var_dump( posix_strerror($value) ); + echo gettype(posix_strerror($value))."\n"; }; echo "Done"; @@ -86,87 +82,87 @@ Notice: Undefined variable: undefined_var in %s on line %d Notice: Undefined variable: unset_var in %s on line %d Arg value 10.5 -string(18) "No child processes" +string Arg value -10.5 -string(%d) "Unknown error %d" +string Arg value 101234567000 -string(%d) "Unknown error %d" +string Arg value 1.07654321E-9 -string(7) "Success" +string Arg value 0.5 -string(7) "Success" +string Arg value Array Warning: posix_strerror() expects parameter 1 to be long, array given in %s on line %d -bool(false) +boolean Arg value Array Warning: posix_strerror() expects parameter 1 to be long, array given in %s on line %d -bool(false) +boolean Arg value Array Warning: posix_strerror() expects parameter 1 to be long, array given in %s on line %d -bool(false) +boolean Arg value Array Warning: posix_strerror() expects parameter 1 to be long, array given in %s on line %d -bool(false) +boolean Arg value Array Warning: posix_strerror() expects parameter 1 to be long, array given in %s on line %d -bool(false) +boolean Arg value -string(7) "Success" +string Arg value -string(7) "Success" +string Arg value 1 -string(23) "Operation not permitted" +string Arg value -string(7) "Success" +string Arg value 1 -string(23) "Operation not permitted" +string Arg value -string(7) "Success" +string Arg value Warning: posix_strerror() expects parameter 1 to be long, string given in %s on line %d -bool(false) +boolean Arg value Warning: posix_strerror() expects parameter 1 to be long, string given in %s on line %d -bool(false) +boolean Arg value string Warning: posix_strerror() expects parameter 1 to be long, string given in %s on line %d -bool(false) +boolean Arg value string Warning: posix_strerror() expects parameter 1 to be long, string given in %s on line %d -bool(false) +boolean Arg value -string(7) "Success" +string Arg value -string(7) "Success" +string Catchable fatal error: Object of class stdClass could not be converted to string in %s on line %d diff --git a/ext/pspell/php_pspell.h b/ext/pspell/php_pspell.h index 30fabb8d3..e8a508478 100644 --- a/ext/pspell/php_pspell.h +++ b/ext/pspell/php_pspell.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pspell.h,v 1.15.2.1.2.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_pspell.h,v 1.15.2.1.2.5 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef _PSPELL_H #define _PSPELL_H diff --git a/ext/pspell/pspell.c b/ext/pspell/pspell.c index 693e3919a..26bd46853 100644 --- a/ext/pspell/pspell.c +++ b/ext/pspell/pspell.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pspell.c,v 1.45.2.4.2.8 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: pspell.c,v 1.45.2.4.2.10 2008/12/31 11:17:42 sebastian Exp $ */ #define IS_EXT_MODULE @@ -251,7 +251,7 @@ static PHP_FUNCTION(pspell_new) if(pspell_error_number(ret) != 0){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PSPELL couldn't open the dictionary. reason: %s ", pspell_error_message(ret)); - delete_pspell_manager(ret); + delete_pspell_can_have_error(ret); RETURN_FALSE; } @@ -374,7 +374,7 @@ static PHP_FUNCTION(pspell_new_personal) if(pspell_error_number(ret) != 0){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PSPELL couldn't open the dictionary. reason: %s ", pspell_error_message(ret)); - delete_pspell_manager(ret); + delete_pspell_can_have_error(ret); RETURN_FALSE; } @@ -408,7 +408,7 @@ static PHP_FUNCTION(pspell_new_config) if(pspell_error_number(ret) != 0){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PSPELL couldn't open the dictionary. reason: %s ", pspell_error_message(ret)); - delete_pspell_manager(ret); + delete_pspell_can_have_error(ret); RETURN_FALSE; } diff --git a/ext/readline/php_readline.h b/ext/readline/php_readline.h index 726236187..63ec5fb6d 100644 --- a/ext/readline/php_readline.h +++ b/ext/readline/php_readline.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_readline.h,v 1.17.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_readline.h,v 1.17.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_READLINE_H #define PHP_READLINE_H diff --git a/ext/readline/readline.c b/ext/readline/readline.c index e2131f500..3b674957c 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: readline.c,v 1.42.2.3.2.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: readline.c,v 1.42.2.3.2.9 2008/12/31 11:17:42 sebastian Exp $ */ /* {{{ includes & prototypes */ @@ -115,12 +115,14 @@ PHP_MINIT_FUNCTION(readline) PHP_RSHUTDOWN_FUNCTION(readline) { - if (_readline_completion) + if (_readline_completion) { + zval_dtor(_readline_completion); FREE_ZVAL(_readline_completion); + } #if HAVE_RL_CALLBACK_READ_CHAR if (_prepped_callback) { rl_callback_handler_remove(); - FREE_ZVAL(_prepped_callback); + zval_ptr_dtor(&_prepped_callback); _prepped_callback = 0; } #endif @@ -456,9 +458,12 @@ PHP_FUNCTION(readline_completion_function) efree(name); RETURN_FALSE; } + efree(name); - if (_readline_completion) + if (_readline_completion) { + zval_dtor(_readline_completion); FREE_ZVAL(_readline_completion); + } MAKE_STD_ZVAL(_readline_completion); *_readline_completion = *arg; @@ -504,11 +509,14 @@ PHP_FUNCTION(readline_callback_handler_install) if (!zend_is_callable(callback, 0, &name)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s is not callable", name); + efree(name); RETURN_FALSE; } + efree(name); if (_prepped_callback) { rl_callback_handler_remove(); + zval_dtor(_prepped_callback); FREE_ZVAL(_prepped_callback); } @@ -538,6 +546,7 @@ PHP_FUNCTION(readline_callback_handler_remove) { if (_prepped_callback) { rl_callback_handler_remove(); + zval_dtor(_prepped_callback); FREE_ZVAL(_prepped_callback); _prepped_callback = 0; RETURN_TRUE; diff --git a/ext/readline/tests/readline_add_history_001.phpt b/ext/readline/tests/readline_add_history_001.phpt new file mode 100644 index 000000000..498db4027 --- /dev/null +++ b/ext/readline/tests/readline_add_history_001.phpt @@ -0,0 +1,32 @@ +--TEST-- +readline_add_history(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +array(1) { + [0]=> + string(3) "foo" +} +bool(true) +array(2) { + [0]=> + string(3) "foo" + [1]=> + string(0) "" +} +bool(true) + +Warning: Wrong parameter count for readline_add_history() in %s on line %d +NULL diff --git a/ext/readline/tests/readline_callback_handler_install_001.phpt b/ext/readline/tests/readline_callback_handler_install_001.phpt new file mode 100644 index 000000000..6df4429bd --- /dev/null +++ b/ext/readline/tests/readline_callback_handler_install_001.phpt @@ -0,0 +1,24 @@ +--TEST-- +readline_callback_handler_install(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +testing: bool(true) + +Warning: readline_callback_handler_install(): foobar! is not callable in %s on line %d +bool(false) + +Warning: readline_callback_handler_install() expects exactly 2 parameters, 1 given in %s on line %d +NULL diff --git a/ext/readline/tests/readline_callback_handler_remove_001.phpt b/ext/readline/tests/readline_callback_handler_remove_001.phpt new file mode 100644 index 000000000..6688f838f --- /dev/null +++ b/ext/readline/tests/readline_callback_handler_remove_001.phpt @@ -0,0 +1,20 @@ +--TEST-- +readline_callback_handler_remove(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(false) +testing: bool(true) +testing: bool(true) +bool(true) diff --git a/ext/readline/tests/readline_clear_history_001.phpt b/ext/readline/tests/readline_clear_history_001.phpt new file mode 100644 index 000000000..a85d54d20 --- /dev/null +++ b/ext/readline/tests/readline_clear_history_001.phpt @@ -0,0 +1,16 @@ +--TEST-- +readline_clear_history(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) + +Warning: Wrong parameter count for readline_clear_history() in %s on line %d +NULL diff --git a/ext/readline/tests/readline_completion_function_001.phpt b/ext/readline/tests/readline_completion_function_001.phpt new file mode 100644 index 000000000..828636cd8 --- /dev/null +++ b/ext/readline/tests/readline_completion_function_001.phpt @@ -0,0 +1,25 @@ +--TEST-- +readline_completion_function(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: readline_completion_function(): 1 is not callable in %s on line %d + +Warning: readline_completion_function(): 1.1231 is not callable in %s on line %d diff --git a/ext/readline/tests/readline_info_001.phpt b/ext/readline/tests/readline_info_001.phpt new file mode 100644 index 000000000..c7bc92a4d --- /dev/null +++ b/ext/readline/tests/readline_info_001.phpt @@ -0,0 +1,45 @@ +--TEST-- +readline_info(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(10) { + ["line_buffer"]=> + string(0) "" + ["point"]=> + int(0) + ["end"]=> + int(0) + ["mark"]=> + int(0) + ["done"]=> + int(0) + ["pending_input"]=> + int(0) + ["prompt"]=> + string(0) "" + ["terminal_name"]=> + string(0) "" + ["library_version"]=> + string(%d) "%s" + ["readline_name"]=> + string(5) "other" +} +NULL +NULL +string(0) "" +string(5) "other" +string(5) "other" +string(1) "1" diff --git a/ext/readline/tests/readline_list_history_001.phpt b/ext/readline/tests/readline_list_history_001.phpt new file mode 100644 index 000000000..8aa544842 --- /dev/null +++ b/ext/readline/tests/readline_list_history_001.phpt @@ -0,0 +1,17 @@ +--TEST-- +readline_list_history(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(0) { +} + +Warning: Wrong parameter count for readline_list_history() in %s on line %d +NULL diff --git a/ext/readline/tests/readline_read_history_001.phpt b/ext/readline/tests/readline_read_history_001.phpt new file mode 100644 index 000000000..2f7c889fa --- /dev/null +++ b/ext/readline/tests/readline_read_history_001.phpt @@ -0,0 +1,30 @@ +--TEST-- +readline_read_history(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +bool(true) +array(1) { + [0]=> + string(3) "foo" +} diff --git a/ext/readline/tests/readline_write_history_001.phpt b/ext/readline/tests/readline_write_history_001.phpt new file mode 100644 index 000000000..eca831ff8 --- /dev/null +++ b/ext/readline/tests/readline_write_history_001.phpt @@ -0,0 +1,26 @@ +--TEST-- +readline_write_history(): Basic test +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(8) "foo + +1 + +" diff --git a/ext/recode/php_recode.h b/ext/recode/php_recode.h index d1027882c..bfc95c6d8 100644 --- a/ext/recode/php_recode.h +++ b/ext/recode/php_recode.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_recode.h,v 1.17.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_recode.h,v 1.17.2.1.2.3 2008/12/31 11:17:42 sebastian Exp $ */ #ifndef PHP_RECODE_H #define PHP_RECODE_H diff --git a/ext/recode/recode.c b/ext/recode/recode.c index c6598e7c9..14d53f0f9 100644 --- a/ext/recode/recode.c +++ b/ext/recode/recode.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: recode.c,v 1.37.2.1.2.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: recode.c,v 1.37.2.1.2.5 2008/12/31 11:17:42 sebastian Exp $ */ /* {{{ includes & prototypes */ @@ -122,7 +122,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: 1.37.2.1.2.4 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.37.2.1.2.5 $"); php_info_print_table_end(); } diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 88791a3fe..0f53f6d09 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_reflection.c,v 1.164.2.33.2.50 2008/03/13 15:56:21 iliaa Exp $ */ +/* $Id: php_reflection.c,v 1.164.2.33.2.55 2008/12/31 11:17:42 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -634,7 +634,7 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg *zv = precv->op2.u.constant; zval_copy_ctor(zv); INIT_PZVAL(zv); - zval_update_constant(&zv, (void*)1 TSRMLS_CC); + zval_update_constant_ex(&zv, (void*)1, fptr->common.scope TSRMLS_CC); if (Z_TYPE_P(zv) == IS_BOOL) { if (Z_LVAL_P(zv)) { string_write(str, "true", sizeof("true")-1); @@ -1341,6 +1341,9 @@ ZEND_METHOD(reflection, getModifierNames) if (modifiers & (ZEND_ACC_FINAL | ZEND_ACC_FINAL_CLASS)) { add_next_index_stringl(return_value, "final", sizeof("final")-1, 1); } + if (modifiers & ZEND_ACC_IMPLICIT_PUBLIC) { + add_next_index_stringl(return_value, "public", sizeof("public")-1, 1); + } /* These are mutually exclusive */ switch (modifiers & ZEND_ACC_PPP_MASK) { @@ -1871,7 +1874,7 @@ ZEND_METHOD(reflection_parameter, __construct) if (zend_hash_find(&ce->function_table, lcname, lcname_len + 1, (void **) &fptr) == FAILURE) { efree(lcname); zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, - "Method %s::%s() does not exist", Z_STRVAL_PP(classref), Z_TYPE_PP(method), Z_STRVAL_PP(method)); + "Method %s::%s() does not exist", ce->name, Z_STRVAL_PP(method)); return; } efree(lcname); @@ -3136,9 +3139,25 @@ ZEND_METHOD(reflection_class, getProperty) } GET_REFLECTION_OBJECT_PTR(ce); - if (zend_hash_find(&ce->properties_info, name, name_len + 1, (void**) &property_info) == SUCCESS && (property_info->flags & ZEND_ACC_SHADOW) == 0) { - reflection_property_factory(ce, property_info, return_value TSRMLS_CC); - return; + if (zend_hash_find(&ce->properties_info, name, name_len + 1, (void**) &property_info) == SUCCESS) { + if ((property_info->flags & ZEND_ACC_SHADOW) == 0) { + reflection_property_factory(ce, property_info, return_value TSRMLS_CC); + return; + } + } else if (intern->obj) { + /* Check for dynamic properties */ + if (zend_hash_exists(Z_OBJ_HT_P(intern->obj)->get_properties(intern->obj TSRMLS_CC), name, name_len+1)) { + zend_property_info property_info_tmp; + property_info_tmp.flags = ZEND_ACC_IMPLICIT_PUBLIC; + property_info_tmp.name = name; + property_info_tmp.name_length = name_len; + property_info_tmp.h = zend_get_hash_value(name, name_len+1); + property_info_tmp.doc_comment = NULL; + property_info_tmp.ce = ce; + + reflection_property_factory(ce, &property_info_tmp, return_value TSRMLS_CC); + return; + } } if ((tmp = strstr(name, "::")) != NULL) { classname_len = tmp - name; @@ -3784,12 +3803,12 @@ ZEND_METHOD(reflection_property, __construct) { zval *propname, *classname; char *name_str, *class_name, *prop_name; - int name_len; + int name_len, dynam_prop = 0; zval *object; reflection_object *intern; zend_class_entry **pce; zend_class_entry *ce; - zend_property_info *property_info; + zend_property_info *property_info = NULL; property_reference *reference; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &classname, &name_str, &name_len) == FAILURE) { @@ -3823,12 +3842,19 @@ ZEND_METHOD(reflection_property, __construct) } if (zend_hash_find(&ce->properties_info, name_str, name_len + 1, (void **) &property_info) == FAILURE || (property_info->flags & ZEND_ACC_SHADOW)) { - zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, - "Property %s::$%s does not exist", ce->name, name_str); - return; + /* Check for dynamic properties */ + if (property_info == NULL && Z_TYPE_P(classname) == IS_OBJECT && Z_OBJ_HT_P(classname)->get_properties) { + if (zend_hash_exists(Z_OBJ_HT_P(classname)->get_properties(classname TSRMLS_CC), name_str, name_len+1)) { + dynam_prop = 1; + } + } + if (dynam_prop == 0) { + zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Property %s::$%s does not exist", ce->name, name_str); + return; + } } - if (!(property_info->flags & ZEND_ACC_PRIVATE)) { + if (dynam_prop == 0 && (property_info->flags & ZEND_ACC_PRIVATE) == 0) { /* we have to search the class hierarchy for this (implicit) public or protected property */ zend_class_entry *tmp_ce = ce; zend_property_info *tmp_info; @@ -3844,14 +3870,27 @@ ZEND_METHOD(reflection_property, __construct) ZVAL_STRINGL(classname, ce->name, ce->name_length, 1); zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL); - zend_unmangle_property_name(property_info->name, property_info->name_length, &class_name, &prop_name); MAKE_STD_ZVAL(propname); - ZVAL_STRING(propname, prop_name, 1); + if (dynam_prop == 0) { + zend_unmangle_property_name(property_info->name, property_info->name_length, &class_name, &prop_name); + ZVAL_STRING(propname, prop_name, 1); + } else { + ZVAL_STRINGL(propname, name_str, name_len, 1); + } zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &propname, sizeof(zval *), NULL); reference = (property_reference*) emalloc(sizeof(property_reference)); + if (dynam_prop) { + reference->prop.flags = ZEND_ACC_IMPLICIT_PUBLIC; + reference->prop.name = Z_STRVAL_P(propname); + reference->prop.name_length = Z_STRLEN_P(propname); + reference->prop.h = zend_get_hash_value(name_str, name_len+1); + reference->prop.doc_comment = NULL; + reference->prop.ce = ce; + } else { + reference->prop = *property_info; + } reference->ce = ce; - reference->prop = *property_info; intern->ptr = reference; intern->free_ptr = 1; intern->ce = ce; @@ -3897,7 +3936,7 @@ static void _property_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask) Returns whether this property is public */ ZEND_METHOD(reflection_property, isPublic) { - _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PUBLIC); + _property_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_PUBLIC | ZEND_ACC_IMPLICIT_PUBLIC); } /* }}} */ @@ -3959,7 +3998,7 @@ ZEND_METHOD(reflection_property, getValue) METHOD_NOTSTATIC(reflection_property_ptr); GET_REFLECTION_OBJECT_PTR(ref); - if (!(ref->prop.flags & ZEND_ACC_PUBLIC)) { + if (!(ref->prop.flags & (ZEND_ACC_PUBLIC | ZEND_ACC_IMPLICIT_PUBLIC))) { _default_get_entry(getThis(), "name", sizeof("name"), &name TSRMLS_CC); zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Cannot access non-public member %s::%s", intern->ce->name, Z_STRVAL(name)); @@ -4081,7 +4120,7 @@ ZEND_METHOD(reflection_property, getDeclaringClass) prop_name_len = strlen(prop_name); ce = tmp_ce = ref->ce; while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, prop_name, prop_name_len + 1, (void **) &tmp_info) == SUCCESS) { - if (tmp_info->flags & ZEND_ACC_PRIVATE) { + if (tmp_info->flags & ZEND_ACC_PRIVATE || tmp_info->flags & ZEND_ACC_SHADOW) { /* it's a private property, so it can't be inherited */ break; } @@ -4908,7 +4947,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", "$Id: php_reflection.c,v 1.164.2.33.2.50 2008/03/13 15:56:21 iliaa Exp $"); + php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.164.2.33.2.55 2008/12/31 11:17:42 sebastian Exp $"); php_info_print_table_end(); } /* }}} */ diff --git a/ext/reflection/php_reflection.h b/ext/reflection/php_reflection.h index f7ff5fe4c..147054be6 100644 --- a/ext/reflection/php_reflection.h +++ b/ext/reflection/php_reflection.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_reflection.h,v 1.4.2.3.2.3 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_reflection.h,v 1.4.2.3.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_REFLECTION_H #define PHP_REFLECTION_H diff --git a/ext/reflection/tests/001.phpt b/ext/reflection/tests/001.phpt index 55458885c..8e4a48729 100755 --- a/ext/reflection/tests/001.phpt +++ b/ext/reflection/tests/001.phpt @@ -1,91 +1,91 @@ ---TEST-- -Reflection inheritance ---SKIPIF-- - ---FILE-- -getMethods() as $m) - { - $res[] = $m->class . '::' . $m->name; - } - return $res; - } -} - -$r = new ReflectionClassEx('ReflectionClassEx'); - -$exp = array ( - 'UMLClass::__clone', - 'UMLClass::export', - 'UMLClass::__construct', - 'UMLClass::__toString', - 'UMLClass::getName', - 'UMLClass::isInternal', - 'UMLClass::isUserDefined', - 'UMLClass::isInstantiable', - 'UMLClass::getFileName', - 'UMLClass::getStartLine', - 'UMLClass::getEndLine', - 'UMLClass::getDocComment', - 'UMLClass::getConstructor', - 'UMLClass::getMethod', - 'UMLClass::getMethods', - 'UMLClass::getProperty', - 'UMLClass::getProperties', - 'UMLClass::getConstants', - 'UMLClass::getConstant', - 'UMLClass::getInterfaces', - 'UMLClass::isInterface', - 'UMLClass::isAbstract', - 'UMLClass::isFinal', - 'UMLClass::getModifiers', - 'UMLClass::isInstance', - 'UMLClass::newInstance', - 'UMLClass::getParentClass', - 'UMLClass::isSubclassOf', - 'UMLClass::getStaticProperties', - 'UMLClass::getDefaultProperties', - 'UMLClass::isIterateable', - 'UMLClass::implementsInterface', - 'UMLClass::getExtension', - 'UMLClass::getExtensionName'); - -$miss = array(); - -$res = $r->getMethodNames(); - -foreach($exp as $m) -{ - if (!in_array($m, $exp)) - { - $miss[] = $m; - } -} - -var_dump($miss); - -$props = array_keys(get_class_vars('ReflectionClassEx')); -sort($props); -var_dump($props); -var_dump($r->name); -?> -===DONE=== ---EXPECT-- -array(0) { -} -array(2) { - [0]=> - string(3) "bla" - [1]=> - string(4) "name" -} -string(17) "ReflectionClassEx" -===DONE=== +--TEST-- +Reflection inheritance +--SKIPIF-- + +--FILE-- +getMethods() as $m) + { + $res[] = $m->class . '::' . $m->name; + } + return $res; + } +} + +$r = new ReflectionClassEx('ReflectionClassEx'); + +$exp = array ( + 'UMLClass::__clone', + 'UMLClass::export', + 'UMLClass::__construct', + 'UMLClass::__toString', + 'UMLClass::getName', + 'UMLClass::isInternal', + 'UMLClass::isUserDefined', + 'UMLClass::isInstantiable', + 'UMLClass::getFileName', + 'UMLClass::getStartLine', + 'UMLClass::getEndLine', + 'UMLClass::getDocComment', + 'UMLClass::getConstructor', + 'UMLClass::getMethod', + 'UMLClass::getMethods', + 'UMLClass::getProperty', + 'UMLClass::getProperties', + 'UMLClass::getConstants', + 'UMLClass::getConstant', + 'UMLClass::getInterfaces', + 'UMLClass::isInterface', + 'UMLClass::isAbstract', + 'UMLClass::isFinal', + 'UMLClass::getModifiers', + 'UMLClass::isInstance', + 'UMLClass::newInstance', + 'UMLClass::getParentClass', + 'UMLClass::isSubclassOf', + 'UMLClass::getStaticProperties', + 'UMLClass::getDefaultProperties', + 'UMLClass::isIterateable', + 'UMLClass::implementsInterface', + 'UMLClass::getExtension', + 'UMLClass::getExtensionName'); + +$miss = array(); + +$res = $r->getMethodNames(); + +foreach($exp as $m) +{ + if (!in_array($m, $exp)) + { + $miss[] = $m; + } +} + +var_dump($miss); + +$props = array_keys(get_class_vars('ReflectionClassEx')); +sort($props); +var_dump($props); +var_dump($r->name); +?> +===DONE=== +--EXPECT-- +array(0) { +} +array(2) { + [0]=> + string(3) "bla" + [1]=> + string(4) "name" +} +string(17) "ReflectionClassEx" +===DONE=== diff --git a/ext/reflection/tests/002.phpt b/ext/reflection/tests/002.phpt index 9b233d372..e522ac807 100755 --- a/ext/reflection/tests/002.phpt +++ b/ext/reflection/tests/002.phpt @@ -1,65 +1,65 @@ ---TEST-- -Reflection properties are read only ---SKIPIF-- - ---FILE-- -class); -var_dump($r->name); -var_dump($r->foo); -@var_dump($r->bar); - -try -{ - $r->class = 'bullshit'; -} -catch(ReflectionException $e) -{ - echo $e->getMessage() . "\n"; -} -try -{ -$r->name = 'bullshit'; -} -catch(ReflectionException $e) -{ - echo $e->getMessage() . "\n"; -} - -$r->foo = 'bar'; -$r->bar = 'baz'; - -var_dump($r->class); -var_dump($r->name); -var_dump($r->foo); -var_dump($r->bar); - -?> -===DONE=== ---EXPECTF-- -ReflectionMethodEx::__construct -string(18) "ReflectionMethodEx" -string(7) "getName" -string(3) "xyz" -NULL -Cannot set read-only property ReflectionMethodEx::$class -Cannot set read-only property ReflectionMethodEx::$name -string(18) "ReflectionMethodEx" -string(7) "getName" -string(3) "bar" -string(3) "baz" -===DONE=== +--TEST-- +Reflection properties are read only +--SKIPIF-- + +--FILE-- +class); +var_dump($r->name); +var_dump($r->foo); +@var_dump($r->bar); + +try +{ + $r->class = 'bullshit'; +} +catch(ReflectionException $e) +{ + echo $e->getMessage() . "\n"; +} +try +{ +$r->name = 'bullshit'; +} +catch(ReflectionException $e) +{ + echo $e->getMessage() . "\n"; +} + +$r->foo = 'bar'; +$r->bar = 'baz'; + +var_dump($r->class); +var_dump($r->name); +var_dump($r->foo); +var_dump($r->bar); + +?> +===DONE=== +--EXPECTF-- +ReflectionMethodEx::__construct +string(18) "ReflectionMethodEx" +string(7) "getName" +string(3) "xyz" +NULL +Cannot set read-only property ReflectionMethodEx::$class +Cannot set read-only property ReflectionMethodEx::$name +string(18) "ReflectionMethodEx" +string(7) "getName" +string(3) "bar" +string(3) "baz" +===DONE=== diff --git a/ext/reflection/tests/004.phpt b/ext/reflection/tests/004.phpt index 912d52654..362cbcecd 100755 --- a/ext/reflection/tests/004.phpt +++ b/ext/reflection/tests/004.phpt @@ -1,44 +1,44 @@ ---TEST-- -ReflectionMethod::invoke() with non object or null value ---SKIPIF-- - ---FILE-- -getMethod("a"); - -try { - $m->invoke(null); -} catch (ReflectionException $E) { - echo $E->getMessage()."\n"; -} - - -try { - $m->invoke($b); -} catch (ReflectionException $E) { - echo $E->getMessage()."\n"; -} - -$b = new a(); -try { - $m->invoke($b); -} catch (ReflectionException $E) { - echo $E->getMessage()."\n"; -} - -echo "===DONE===\n";?> ---EXPECT-- -Non-object passed to Invoke() -Given object is not an instance of the class this method was declared in -===DONE=== +--TEST-- +ReflectionMethod::invoke() with non object or null value +--SKIPIF-- + +--FILE-- +getMethod("a"); + +try { + $m->invoke(null); +} catch (ReflectionException $E) { + echo $E->getMessage()."\n"; +} + + +try { + $m->invoke($b); +} catch (ReflectionException $E) { + echo $E->getMessage()."\n"; +} + +$b = new a(); +try { + $m->invoke($b); +} catch (ReflectionException $E) { + echo $E->getMessage()."\n"; +} + +echo "===DONE===\n";?> +--EXPECT-- +Non-object passed to Invoke() +Given object is not an instance of the class this method was declared in +===DONE=== diff --git a/ext/reflection/tests/ReflectionClass_getDefaultProperties_001.phpt b/ext/reflection/tests/ReflectionClass_getDefaultProperties_001.phpt new file mode 100644 index 000000000..3bf8f77ec --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getDefaultProperties_001.phpt @@ -0,0 +1,198 @@ +--TEST-- +ReflectionClass::getDefaultProperties(), ReflectionClass::getStaticProperties() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getStaticProperties()); + echo "\n\n---- Default properties in $class ----\n"; + print_r($rc->getDefaultProperties()); +} + +?> +--EXPECTF-- +---- Static properties in A ---- +Array +( + [statPubC] => stat pubC in A + [statProtC] => stat protC in A + [statPrivC] => stat privC in A + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [statPrivA] => stat privA in A +) + + +---- Default properties in A ---- +Array +( + [statPubC] => stat pubC in A + [statProtC] => stat protC in A + [statPrivC] => stat privC in A + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [statPrivA] => stat privA in A + [pubC] => pubC in A + [protC] => protC in A + [privC] => privC in A + [pubA] => pubA in A + [protA] => protA in A + [privA] => privA in A +) + + +---- Static properties in B ---- +Array +( + [statPubC] => stat pubC in B + [statProtC] => stat protC in B + [statPrivC] => stat privC in A + [statPubB] => stat pubB in B + [statProtB] => stat protB in B + [statPrivB] => stat privB in B + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [statPrivA] => stat privA in A +) + + +---- Default properties in B ---- +Array +( + [statPubC] => stat pubC in B + [statProtC] => stat protC in B + [statPrivC] => stat privC in B + [statPubB] => stat pubB in B + [statProtB] => stat protB in B + [statPrivB] => stat privB in B + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [pubC] => pubC in B + [protC] => protC in B + [privC] => privC in B + [pubB] => pubB in B + [protB] => protB in B + [privB] => privB in B + [pubA] => pubA in A + [protA] => protA in A +) + + +---- Static properties in C ---- +Array +( + [statPubC] => stat pubC in C + [statProtC] => stat protC in C + [statPrivC] => stat privC in A + [statPubB] => stat pubB in B + [statProtB] => stat protB in B + [statPrivB] => stat privB in B + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [statPrivA] => stat privA in A +) + + +---- Default properties in C ---- +Array +( + [statPubC] => stat pubC in C + [statProtC] => stat protC in C + [statPrivC] => stat privC in C + [statPubB] => stat pubB in B + [statProtB] => stat protB in B + [statPubA] => stat pubA in A + [statProtA] => stat protA in A + [pubC] => pubC in C + [protC] => protC in C + [privC] => privC in C + [pubB] => pubB in B + [protB] => protB in B + [pubA] => pubA in A + [protA] => protA in A +) + + +---- Static properties in X ---- +Array +( + [statPubC] => stat pubC in X + [statProtC] => stat protC in X + [statPrivC] => stat privC in X +) + + +---- Default properties in X ---- +Array +( + [statPubC] => stat pubC in X + [statProtC] => stat protC in X + [statPrivC] => stat privC in X + [pubC] => pubC in X + [protC] => protC in X + [privC] => privC in X +) + diff --git a/ext/reflection/tests/ReflectionClass_getDefaultProperties_002.phpt b/ext/reflection/tests/ReflectionClass_getDefaultProperties_002.phpt new file mode 100644 index 000000000..6012f0855 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getDefaultProperties_002.phpt @@ -0,0 +1,45 @@ +--TEST-- +ReflectionClass::getDefaultProperties(), ReflectionClass::getStaticProperties() - wrong param count +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getDefaultProperties(null)); +var_dump($rc->getDefaultProperties('X')); +var_dump($rc->getDefaultProperties(true)); +var_dump($rc->getDefaultProperties(array(1,2,3))); +var_dump($rc->getStaticProperties(null)); +var_dump($rc->getStaticProperties('X')); +var_dump($rc->getStaticProperties(true)); +var_dump($rc->getStaticProperties(array(1,2,3))); + +?> +--EXPECTF-- + +Warning: Wrong parameter count for ReflectionClass::getDefaultProperties() in %s on line 5 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDefaultProperties() in %s on line 6 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDefaultProperties() in %s on line 7 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDefaultProperties() in %s on line 8 +NULL + +Warning: Wrong parameter count for ReflectionClass::getStaticProperties() in %s on line 9 +NULL + +Warning: Wrong parameter count for ReflectionClass::getStaticProperties() in %s on line 10 +NULL + +Warning: Wrong parameter count for ReflectionClass::getStaticProperties() in %s on line 11 +NULL + +Warning: Wrong parameter count for ReflectionClass::getStaticProperties() in %s on line 12 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getDocComment_001.phpt b/ext/reflection/tests/ReflectionClass_getDocComment_001.phpt new file mode 100644 index 000000000..5feb560ae --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getDocComment_001.phpt @@ -0,0 +1,98 @@ +--TEST-- +ReflectionClass::getDocComment() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + Doc comment for class $class:\n"; + $rc = new ReflectionClass($class); + var_dump($rc->getDocComment()); +} + + +?> +--EXPECTF-- + + +---> Doc comment for class A: +string(%d) "/** + + + My +Doc + * Comment +for A + +* */" + + +---> Doc comment for class B: +string(26) "/** My DocComment for B */" + + +---> Doc comment for class C: +bool(false) + + +---> Doc comment for class D: +bool(false) + + +---> Doc comment for class E: +bool(false) + + +---> Doc comment for class F: +bool(false) + + +---> Doc comment for class G: +string(27) "/** ** Doc comment for G */" + + +---> Doc comment for class I: +string(%d) "/** + * Interface doc comment + */" \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getDocComment_002.phpt b/ext/reflection/tests/ReflectionClass_getDocComment_002.phpt new file mode 100644 index 000000000..6668a8b65 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getDocComment_002.phpt @@ -0,0 +1,27 @@ +--TEST-- +ReflectionClass::getDocComment() - bad params +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getDocComment(null)); +var_dump($rc->getDocComment('X')); +var_dump($rc->getDocComment(true)); +var_dump($rc->getDocComment(array(1,2,3))); +?> +--EXPECTF-- + +Warning: Wrong parameter count for ReflectionClass::getDocComment() in %s on line 4 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDocComment() in %s on line 5 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDocComment() in %s on line 6 +NULL + +Warning: Wrong parameter count for ReflectionClass::getDocComment() in %s on line 7 +NULL diff --git a/ext/reflection/tests/ReflectionClass_getInterfaces_001.phpt b/ext/reflection/tests/ReflectionClass_getInterfaces_001.phpt new file mode 100644 index 000000000..42136003e --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getInterfaces_001.phpt @@ -0,0 +1,311 @@ +--TEST-- +ReflectionClass::getInterfaces() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getInterfaces(); + // Sort interfaces so that tests do not fail because of wrong order. + ksort($interfaces); + print_r($interfaces); +} + +?> +--EXPECTF-- +---( Interfaces implemented by A0 )--- + Array +( +) +---( Interfaces implemented by A1 )--- + Array +( +) +---( Interfaces implemented by B0 )--- + Array +( +) +---( Interfaces implemented by B1 )--- + Array +( +) +---( Interfaces implemented by I0 )--- + Array +( +) +---( Interfaces implemented by I1 )--- + Array +( +) +---( Interfaces implemented by I2 )--- + Array +( +) +---( Interfaces implemented by I3 )--- + Array +( +) +---( Interfaces implemented by I4 )--- + Array +( + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + +) +---( Interfaces implemented by I5 )--- + Array +( + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + +) +---( Interfaces implemented by I6 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + + [I5] => ReflectionClass Object + ( + [name] => I5 + ) + +) +---( Interfaces implemented by I7 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + + [I5] => ReflectionClass Object + ( + [name] => I5 + ) + + [I6] => ReflectionClass Object + ( + [name] => I6 + ) + +) +---( Interfaces implemented by C0 )--- + Array +( + [I0] => ReflectionClass Object + ( + [name] => I0 + ) + +) +---( Interfaces implemented by C1 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + +) +---( Interfaces implemented by C2 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + +) +---( Interfaces implemented by C3 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + +) +---( Interfaces implemented by C4 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + +) +---( Interfaces implemented by C5 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + + [I5] => ReflectionClass Object + ( + [name] => I5 + ) + + [I6] => ReflectionClass Object + ( + [name] => I6 + ) + + [I7] => ReflectionClass Object + ( + [name] => I7 + ) + +) +---( Interfaces implemented by C6 )--- + Array +( + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + + [I5] => ReflectionClass Object + ( + [name] => I5 + ) + + [I6] => ReflectionClass Object + ( + [name] => I6 + ) + + [I7] => ReflectionClass Object + ( + [name] => I7 + ) + +) diff --git a/ext/reflection/tests/ReflectionClass_getInterfaces_002.phpt b/ext/reflection/tests/ReflectionClass_getInterfaces_002.phpt new file mode 100644 index 000000000..328a7c3e6 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getInterfaces_002.phpt @@ -0,0 +1,53 @@ +--TEST-- +ReflectionClass::getInterfaces() - interface ordering. +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getInterfaces(); +print_r($interfaces); +?> +--EXPECTF-- +Array +( + [I6] => ReflectionClass Object + ( + [name] => I6 + ) + + [I2] => ReflectionClass Object + ( + [name] => I2 + ) + + [I1] => ReflectionClass Object + ( + [name] => I1 + ) + + [I4] => ReflectionClass Object + ( + [name] => I4 + ) + + [I3] => ReflectionClass Object + ( + [name] => I3 + ) + + [I5] => ReflectionClass Object + ( + [name] => I5 + ) + +) \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getInterfaces_003.phpt b/ext/reflection/tests/ReflectionClass_getInterfaces_003.phpt new file mode 100644 index 000000000..74044f753 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getInterfaces_003.phpt @@ -0,0 +1,69 @@ +--TEST-- +ReflectionClass::getInterfaces() - odd ampersand behaviour. +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +x = 1; +var_dump($a); + + +echo "\n\nObtain the array of interfaces implemented by C.\n"; +interface I {} +class C implements I {} +$rc = new ReflectionClass('C'); +$a = $rc->getInterfaces(); +echo "The result is an array in which each element is an object (an instance of ReflectionClass)\n"; +echo "Var_dumping this array shows that the elements are referenced. By what?\n"; +var_dump($a); + +echo "Modify the object, and it is apparently no longer referenced.\n"; +$a['I']->x = 1; +var_dump($a); + +?> +--EXPECTF-- +An object is in an array and is referenced. As expected, var_dumping the array shows '&': +array(1) { + [0]=> + &object(stdClass)#%d (0) { + } +} +Naturally, this remains true if we modify the object: +array(1) { + [0]=> + &object(stdClass)#%d (1) { + ["x"]=> + int(1) + } +} + + +Obtain the array of interfaces implemented by C. +The result is an array in which each element is an object (an instance of ReflectionClass) +Var_dumping this array shows that the elements are referenced. By what? +array(1) { + ["I"]=> + &object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "I" + } +} +Modify the object, and it is apparently no longer referenced. +array(1) { + ["I"]=> + object(ReflectionClass)#%d (2) { + ["name"]=> + string(1) "I" + ["x"]=> + int(1) + } +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getInterfaces_004.phpt b/ext/reflection/tests/ReflectionClass_getInterfaces_004.phpt new file mode 100644 index 000000000..5f42e4736 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getInterfaces_004.phpt @@ -0,0 +1,28 @@ +--TEST-- +ReflectionClass::getInterfaces() - wrong param count +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getInterfaces(null)); +var_dump($rc->getInterfaces('X')); +var_dump($rc->getInterfaces(true)); +var_dump($rc->getInterfaces(array(1,2,3))); +?> +--EXPECTF-- + +Warning: Wrong parameter count for ReflectionClass::getInterfaces() in %s on line 5 +NULL + +Warning: Wrong parameter count for ReflectionClass::getInterfaces() in %s on line 6 +NULL + +Warning: Wrong parameter count for ReflectionClass::getInterfaces() in %s on line 7 +NULL + +Warning: Wrong parameter count for ReflectionClass::getInterfaces() in %s on line 8 +NULL diff --git a/ext/reflection/tests/ReflectionClass_getMethod_001.phpt b/ext/reflection/tests/ReflectionClass_getMethod_001.phpt new file mode 100644 index 000000000..5821ebad0 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getMethod_001.phpt @@ -0,0 +1,168 @@ +--TEST-- +ReflectionClass::getMethod() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + Check for f(): "; + var_dump($rc->getMethod("f")); + echo " --> Check for s(): "; + var_dump($rc->getMethod("s")); + echo " --> Check for F(): "; + var_dump($rc->getMethod("F")); + echo " --> Check for doesntExist(): "; + try { + var_dump($rc->getMethod("doesntExist")); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + } +} +?> +--EXPECTF-- +Reflecting on class pubf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(4) "pubf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(4) "pubf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(4) "pubf" +} + --> Check for doesntExist(): Method doesntExist does not exist +Reflecting on class subpubf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(7) "subpubf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(7) "subpubf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(7) "subpubf" +} + --> Check for doesntExist(): Method doesntExist does not exist +Reflecting on class protf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "protf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "protf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "protf" +} + --> Check for doesntExist(): Method doesntExist does not exist +Reflecting on class subprotf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprotf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprotf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprotf" +} + --> Check for doesntExist(): Method doesntExist does not exist +Reflecting on class privf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "privf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "privf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "privf" +} + --> Check for doesntExist(): Method doesntExist does not exist +Reflecting on class subprivf: + --> Check for f(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprivf" +} + --> Check for s(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprivf" +} + --> Check for F(): object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprivf" +} + --> Check for doesntExist(): Method doesntExist does not exist \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getMethod_002.phpt b/ext/reflection/tests/ReflectionClass_getMethod_002.phpt new file mode 100644 index 000000000..2baabdeda --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getMethod_002.phpt @@ -0,0 +1,74 @@ +--TEST-- +ReflectionClass::getMethod() - error cases +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getMethod()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod("f", "f")); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(1)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(1.5)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(true)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(array(1,2,3))); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getMethod(new C)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + + +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::getMethod() expects exactly 1 parameter, 0 given in %s on line 9 +NULL + +Warning: ReflectionClass::getMethod() expects exactly 1 parameter, 2 given in %s on line 14 +NULL +Method does not exist +Method 1 does not exist +Method 1.5 does not exist +Method 1 does not exist + +Warning: ReflectionClass::getMethod() expects parameter 1 to be string, array given in %s on line 39 +NULL + +Warning: ReflectionClass::getMethod() expects parameter 1 to be string, object given in %s on line 44 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getMethods_001.phpt b/ext/reflection/tests/ReflectionClass_getMethods_001.phpt new file mode 100644 index 000000000..867d669ad --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getMethods_001.phpt @@ -0,0 +1,140 @@ +--TEST-- +ReflectionClass::getMethods() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getMethods()); +} + +?> +--EXPECTF-- +Reflecting on class pubf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(4) "pubf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(4) "pubf" + } +} +Reflecting on class subpubf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(7) "subpubf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(7) "subpubf" + } +} +Reflecting on class protf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "protf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "protf" + } +} +Reflecting on class subprotf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprotf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprotf" + } +} +Reflecting on class privf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(5) "privf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "privf" + } +} +Reflecting on class subprivf: +array(2) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "f" + ["class"]=> + string(8) "subprivf" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprivf" + } +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getMethods_002.phpt b/ext/reflection/tests/ReflectionClass_getMethods_002.phpt new file mode 100644 index 000000000..b25222563 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getMethods_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +ReflectionClass::getMethods() - invalid arguments +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getMethods('X'); +$rc->getMethods('X', true); + +?> +--EXPECTF-- +Test invalid arguments: +Warning: ReflectionClass::getMethods() expects parameter 1 to be long, string given in %s on line 4 + +Warning: ReflectionClass::getMethods() expects at most 1 parameter, 2 given in %s on line 5 diff --git a/ext/reflection/tests/ReflectionClass_getMethods_003.phpt b/ext/reflection/tests/ReflectionClass_getMethods_003.phpt new file mode 100644 index 000000000..435f5d2d8 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getMethods_003.phpt @@ -0,0 +1,191 @@ +--TEST-- +ReflectionClass::getMethods() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getMethods(0)); + +echo "Public methods:"; +var_dump($rc->getMethods($pubFlag)); + +echo "Private methods:"; +var_dump($rc->getMethods($privFlag)); + +echo "Public or static methods:"; +var_dump($rc->getMethods($StaticFlag | $pubFlag)); + +echo "Private or static methods:"; +var_dump($rc->getMethods($StaticFlag | $privFlag)); + + +?> +--EXPECTF-- +No methods:array(0) { +} +Public methods:array(4) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(5) "pubf1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(5) "pubf2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf1" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf2" + ["class"]=> + string(1) "C" + } +} +Private methods:array(4) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "privf1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "privf2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf1" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf2" + ["class"]=> + string(1) "C" + } +} +Public or static methods:array(6) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(5) "pubf1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(5) "pubf2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf1" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf2" + ["class"]=> + string(1) "C" + } + [4]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf1" + ["class"]=> + string(1) "C" + } + [5]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf2" + ["class"]=> + string(1) "C" + } +} +Private or static methods:array(6) { + [0]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "privf1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "privf2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf1" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(6) "pubsf2" + ["class"]=> + string(1) "C" + } + [4]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf1" + ["class"]=> + string(1) "C" + } + [5]=> + &object(ReflectionMethod)#%d (2) { + ["name"]=> + string(7) "privsf2" + ["class"]=> + string(1) "C" + } +} diff --git a/ext/reflection/tests/ReflectionClass_getParentClass_001.phpt b/ext/reflection/tests/ReflectionClass_getParentClass_001.phpt new file mode 100644 index 000000000..e26595a87 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getParentClass_001.phpt @@ -0,0 +1,38 @@ +--TEST-- +ReflectionClass::getParentClass() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getParentClass(); +$grandParent = $parent->getParentClass(); +var_dump($parent, $grandParent); + +echo "\nTest bad params:\n"; +var_dump($rc->getParentClass(null)); +var_dump($rc->getParentClass('x')); +var_dump($rc->getParentClass('x', 123)); + +?> +--EXPECTF-- +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "A" +} +bool(false) + +Test bad params: + +Warning: Wrong parameter count for ReflectionClass::getParentClass() in %s on line 11 +NULL + +Warning: Wrong parameter count for ReflectionClass::getParentClass() in %s on line 12 +NULL + +Warning: Wrong parameter count for ReflectionClass::getParentClass() in %s on line 13 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperties_001.phpt b/ext/reflection/tests/ReflectionClass_getProperties_001.phpt new file mode 100644 index 000000000..5eecc5dee --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperties_001.phpt @@ -0,0 +1,126 @@ +--TEST-- +ReflectionClass::getProperties() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperties()); +} + +?> +--EXPECTF-- +Reflecting on class pubf: +array(2) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "pubf" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(4) "pubf" + } +} +Reflecting on class subpubf: +array(2) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(7) "subpubf" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(7) "subpubf" + } +} +Reflecting on class protf: +array(2) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(5) "protf" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "protf" + } +} +Reflecting on class subprotf: +array(2) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(8) "subprotf" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprotf" + } +} +Reflecting on class privf: +array(2) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(5) "privf" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "privf" + } +} +Reflecting on class subprivf: +array(0) { +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperties_002.phpt b/ext/reflection/tests/ReflectionClass_getProperties_002.phpt new file mode 100644 index 000000000..c21cff24f --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperties_002.phpt @@ -0,0 +1,17 @@ +--TEST-- +ReflectionClass::getProperties() - invalid arguments +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperties('X'); +$rc->getProperties('X', true); +?> +--EXPECTF-- +Test invalid arguments: +Warning: ReflectionClass::getProperties() expects parameter 1 to be long, string given in %s on line 4 + +Warning: ReflectionClass::getProperties() expects at most 1 parameter, 2 given in %s on line 5 diff --git a/ext/reflection/tests/ReflectionClass_getProperties_003.phpt b/ext/reflection/tests/ReflectionClass_getProperties_003.phpt new file mode 100644 index 000000000..b4f9a774d --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperties_003.phpt @@ -0,0 +1,189 @@ +--TEST-- +ReflectionClass::getProperties() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperties(0)); + +echo "Public properties:"; +var_dump($rc->getProperties($pubFlag)); + +echo "Private properties:"; +var_dump($rc->getProperties($privFlag)); + +echo "Public or static properties:"; +var_dump($rc->getProperties($StaticFlag | $pubFlag)); + +echo "Private or static properties:"; +var_dump($rc->getProperties($StaticFlag | $privFlag)); +?> +--EXPECTF-- +No properties:array(0) { +} +Public properties:array(4) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pub1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pub2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubs" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "pubs2" + ["class"]=> + string(1) "C" + } +} +Private properties:array(4) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "priv1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "priv2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs1" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs2" + ["class"]=> + string(1) "C" + } +} +Public or static properties:array(6) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pub1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pub2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubs" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "pubs2" + ["class"]=> + string(1) "C" + } + [4]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs1" + ["class"]=> + string(1) "C" + } + [5]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs2" + ["class"]=> + string(1) "C" + } +} +Private or static properties:array(6) { + [0]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "priv1" + ["class"]=> + string(1) "C" + } + [1]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "priv2" + ["class"]=> + string(1) "C" + } + [2]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubs" + ["class"]=> + string(1) "C" + } + [3]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "pubs2" + ["class"]=> + string(1) "C" + } + [4]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs1" + ["class"]=> + string(1) "C" + } + [5]=> + &object(ReflectionProperty)#%d (2) { + ["name"]=> + string(6) "privs2" + ["class"]=> + string(1) "C" + } +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperty_001.phpt b/ext/reflection/tests/ReflectionClass_getProperty_001.phpt new file mode 100644 index 000000000..fa5deaa67 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperty_001.phpt @@ -0,0 +1,146 @@ +--TEST-- +ReflectionClass::getProperty() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + Check for s: "; + var_dump($rc->getProperty("s")); + } catch (exception $e) { + echo $e->getMessage() . "\n"; + } + try { + echo " --> Check for a: "; + var_dump($rc->getProperty("a")); + } catch (exception $e) { + echo $e->getMessage() . "\n"; + } + try { + echo " --> Check for A: "; + var_dump($rc->getProperty("A")); + } catch (exception $e) { + echo $e->getMessage() . "\n"; + } + try { + echo " --> Check for doesntExist: "; + var_dump($rc->getProperty("doesntExist")); + } catch (exception $e) { + echo $e->getMessage() . "\n"; + } + +} +?> +--EXPECTF-- +Reflecting on class pubf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(4) "pubf" +} + --> Check for a: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "pubf" +} + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist +Reflecting on class subpubf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(7) "subpubf" +} + --> Check for a: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(7) "subpubf" +} + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist +Reflecting on class protf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "protf" +} + --> Check for a: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(5) "protf" +} + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist +Reflecting on class subprotf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprotf" +} + --> Check for a: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(8) "subprotf" +} + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist +Reflecting on class privf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(5) "privf" +} + --> Check for a: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(5) "privf" +} + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist +Reflecting on class subprivf: + --> Check for s: object(ReflectionProperty)#%d (2) { + ["name"]=> + string(1) "s" + ["class"]=> + string(8) "subprivf" +} + --> Check for a: Property a does not exist + --> Check for A: Property A does not exist + --> Check for doesntExist: Property doesntExist does not exist \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperty_002.phpt b/ext/reflection/tests/ReflectionClass_getProperty_002.phpt new file mode 100644 index 000000000..be7bb53bc --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperty_002.phpt @@ -0,0 +1,72 @@ +--TEST-- +ReflectionClass::getProperty() - error cases +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperty()); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty("a", "a")); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(null)); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(1)); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(1.5)); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(true)); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(array(1,2,3))); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getProperty(new C)); +} catch (exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::getProperty() expects exactly 1 parameter, 0 given in %s on line 9 +NULL + +Warning: ReflectionClass::getProperty() expects exactly 1 parameter, 2 given in %s on line 14 +NULL +Property does not exist +Property 1 does not exist +Property 1.5 does not exist +Property 1 does not exist + +Warning: ReflectionClass::getProperty() expects parameter 1 to be string, array given in %s on line 39 +NULL + +Warning: ReflectionClass::getProperty() expects parameter 1 to be string, object given in %s on line 44 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperty_003.phpt b/ext/reflection/tests/ReflectionClass_getProperty_003.phpt new file mode 100644 index 000000000..dddd2260f --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperty_003.phpt @@ -0,0 +1,251 @@ +--TEST-- +ReflectionClass::getProperty() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperty($name); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + return; + } + try { + var_dump($rp); + var_dump($rp->getValue($myC)); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + return; + } +} + + +showInfo("pubA"); +showInfo("protA"); +showInfo("privA"); + +showInfo("pubB"); +showInfo("protB"); +showInfo("privB"); + +showInfo("pubC"); +showInfo("protC"); +showInfo("privC"); +showInfo("doesntExist"); + +showInfo("A::pubC"); +showInfo("A::protC"); +showInfo("A::privC"); + +showInfo("B::pubC"); +showInfo("B::protC"); +showInfo("B::privC"); + +showInfo("c::pubC"); +showInfo("c::PUBC"); +showInfo("C::pubC"); +showInfo("C::protC"); +showInfo("C::privC"); + +showInfo("X::pubC"); +showInfo("X::protC"); +showInfo("X::privC"); +showInfo("X::doesntExist"); + +showInfo("doesntexist::doesntExist"); + +?> +--EXPECTF-- +--- (Reflecting on pubA) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubA" + ["class"]=> + string(1) "C" +} +string(9) "pubA in A" +--- (Reflecting on protA) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protA" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protA +--- (Reflecting on privA) --- +Property privA does not exist +--- (Reflecting on pubB) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubB" + ["class"]=> + string(1) "C" +} +string(9) "pubB in B" +--- (Reflecting on protB) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protB" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protB +--- (Reflecting on privB) --- +Property privB does not exist +--- (Reflecting on pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protC +--- (Reflecting on privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::privC +--- (Reflecting on doesntExist) --- +Property doesntExist does not exist +--- (Reflecting on A::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "A" +} +string(9) "pubC in A" +--- (Reflecting on A::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "A" +} +Cannot access non-public member A::protC +--- (Reflecting on A::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "A" +} +Cannot access non-public member A::privC +--- (Reflecting on B::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "B" +} +string(9) "pubC in B" +--- (Reflecting on B::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "B" +} +Cannot access non-public member B::protC +--- (Reflecting on B::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "B" +} +Cannot access non-public member B::privC +--- (Reflecting on c::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on c::PUBC) --- +Property PUBC does not exist +--- (Reflecting on C::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on C::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protC +--- (Reflecting on C::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::privC +--- (Reflecting on X::pubC) --- +Fully qualified property name X::pubC does not specify a base class of C +--- (Reflecting on X::protC) --- +Fully qualified property name X::protC does not specify a base class of C +--- (Reflecting on X::privC) --- +Fully qualified property name X::privC does not specify a base class of C +--- (Reflecting on X::doesntExist) --- +Fully qualified property name X::doesntExist does not specify a base class of C +--- (Reflecting on doesntexist::doesntExist) --- +Class doesntexist does not exist \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getProperty_004.phpt b/ext/reflection/tests/ReflectionClass_getProperty_004.phpt new file mode 100644 index 000000000..791f5e1fa --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getProperty_004.phpt @@ -0,0 +1,251 @@ +--TEST-- +ReflectionClass::getProperty() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getProperty($name); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + return; + } + try { + var_dump($rp); + var_dump($rp->getValue($myC)); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + return; + } +} + + +showInfo("pubA"); +showInfo("protA"); +showInfo("privA"); + +showInfo("pubB"); +showInfo("protB"); +showInfo("privB"); + +showInfo("pubC"); +showInfo("protC"); +showInfo("privC"); +showInfo("doesntExist"); + +showInfo("A::pubC"); +showInfo("A::protC"); +showInfo("A::privC"); + +showInfo("B::pubC"); +showInfo("B::protC"); +showInfo("B::privC"); + +showInfo("c::pubC"); +showInfo("c::PUBC"); +showInfo("C::pubC"); +showInfo("C::protC"); +showInfo("C::privC"); + +showInfo("X::pubC"); +showInfo("X::protC"); +showInfo("X::privC"); +showInfo("X::doesntExist"); + +showInfo("doesntexist::doesntExist"); + +?> +--EXPECTF-- +--- (Reflecting on pubA) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubA" + ["class"]=> + string(1) "C" +} +string(9) "pubA in A" +--- (Reflecting on protA) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protA" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protA +--- (Reflecting on privA) --- +Property privA does not exist +--- (Reflecting on pubB) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubB" + ["class"]=> + string(1) "C" +} +string(9) "pubB in B" +--- (Reflecting on protB) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protB" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protB +--- (Reflecting on privB) --- +Property privB does not exist +--- (Reflecting on pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protC +--- (Reflecting on privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::privC +--- (Reflecting on doesntExist) --- +Property doesntExist does not exist +--- (Reflecting on A::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "A" +} +string(9) "pubC in C" +--- (Reflecting on A::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "A" +} +Cannot access non-public member A::protC +--- (Reflecting on A::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "A" +} +Cannot access non-public member A::privC +--- (Reflecting on B::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "B" +} +string(9) "pubC in C" +--- (Reflecting on B::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "B" +} +Cannot access non-public member B::protC +--- (Reflecting on B::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "B" +} +Cannot access non-public member B::privC +--- (Reflecting on c::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on c::PUBC) --- +Property PUBC does not exist +--- (Reflecting on C::pubC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(4) "pubC" + ["class"]=> + string(1) "C" +} +string(9) "pubC in C" +--- (Reflecting on C::protC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "protC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::protC +--- (Reflecting on C::privC) --- +object(ReflectionProperty)#%d (2) { + ["name"]=> + string(5) "privC" + ["class"]=> + string(1) "C" +} +Cannot access non-public member C::privC +--- (Reflecting on X::pubC) --- +Fully qualified property name X::pubC does not specify a base class of C +--- (Reflecting on X::protC) --- +Fully qualified property name X::protC does not specify a base class of C +--- (Reflecting on X::privC) --- +Fully qualified property name X::privC does not specify a base class of C +--- (Reflecting on X::doesntExist) --- +Fully qualified property name X::doesntExist does not specify a base class of C +--- (Reflecting on doesntexist::doesntExist) --- +Class doesntexist does not exist \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001.phpt b/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001.phpt new file mode 100644 index 000000000..733c4c7e4 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_001.phpt @@ -0,0 +1,67 @@ +--TEST-- +ReflectionClass::getStaticPropertyValue() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getStaticPropertyValue("privateOverridden", "default value")); +var_dump($rcA->getStaticPropertyValue("\0A\0privateOverridden")); +var_dump($rcA->getStaticPropertyValue("protectedOverridden", "default value")); +var_dump($rcA->getStaticPropertyValue("\0*\0protectedOverridden")); +var_dump($rcA->getStaticPropertyValue("publicOverridden")); + +echo "\nRetrieving static values from B:\n"; +$rcB = new ReflectionClass('B'); +var_dump($rcB->getStaticPropertyValue("\0A\0privateOverridden")); +var_dump($rcB->getStaticPropertyValue("\0B\0privateOverridden")); +var_dump($rcB->getStaticPropertyValue("\0*\0protectedOverridden")); +var_dump($rcB->getStaticPropertyValue("publicOverridden")); + +echo "\nRetrieving non-existent values from A with no default value:\n"; +try { + var_dump($rcA->getStaticPropertyValue("protectedOverridden")); + echo "you should not see this"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump($rcA->getStaticPropertyValue("privateOverridden")); + echo "you should not see this"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +?> +--EXPECTF-- +Retrieving static values from A: +string(13) "default value" +string(16) "original private" +string(13) "default value" +string(18) "original protected" +string(15) "original public" + +Retrieving static values from B: +string(16) "original private" +string(15) "changed private" +string(17) "changed protected" +string(14) "changed public" + +Retrieving non-existent values from A with no default value: +Class A does not have a property named protectedOverridden +Class A does not have a property named privateOverridden diff --git a/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_002.phpt b/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_002.phpt new file mode 100644 index 000000000..36b4744d8 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_getStaticPropertyValue_002.phpt @@ -0,0 +1,52 @@ +--TEST-- +ReflectionClass::getStaticPropertyValue() - bad params +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getStaticPropertyValue("x", "default value", 'blah')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getStaticPropertyValue()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getStaticPropertyValue(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getStaticPropertyValue(1.5, 'def')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->getStaticPropertyValue(array(1,2,3))); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + + +?> +--EXPECTF-- + +Warning: ReflectionClass::getStaticPropertyValue() expects at most 2 parameters, 3 given in %s on line 8 +NULL + +Warning: ReflectionClass::getStaticPropertyValue() expects at least 1 parameter, 0 given in %s on line 13 +NULL +Class C does not have a property named +string(3) "def" + +Warning: ReflectionClass::getStaticPropertyValue() expects parameter 1 to be string, array given in %s on line 28 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_hasConstant_001.phpt b/ext/reflection/tests/ReflectionClass_hasConstant_001.phpt new file mode 100644 index 000000000..6e6d4341c --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasConstant_001.phpt @@ -0,0 +1,36 @@ +--TEST-- +ReflectionClass::hasConstant() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +hasConstant("myConst")); +echo "Check existing constant, different case: "; +var_dump($rc->hasConstant("MyCoNsT")); +echo "Check absent constant: "; +var_dump($rc->hasConstant("doesntExist")); + + +$rd = new ReflectionClass("D"); +echo "Check inherited constant: "; +var_dump($rd->hasConstant("myConst")); +echo "Check absent constant: "; +var_dump($rd->hasConstant("doesntExist")); +?> +--EXPECTF-- +Check existing constant: bool(true) +Check existing constant, different case: bool(false) +Check absent constant: bool(false) +Check inherited constant: bool(true) +Check absent constant: bool(false) \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_hasConstant_002.phpt b/ext/reflection/tests/ReflectionClass_hasConstant_002.phpt new file mode 100644 index 000000000..a0a76f024 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasConstant_002.phpt @@ -0,0 +1,40 @@ +--TEST-- +ReflectionClass::hasConstant() - error cases +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +hasConstant()); +var_dump($rc->hasConstant("myConst", "myConst")); +var_dump($rc->hasConstant(null)); +var_dump($rc->hasConstant(1)); +var_dump($rc->hasConstant(1.5)); +var_dump($rc->hasConstant(true)); +var_dump($rc->hasConstant(array(1,2,3))); +var_dump($rc->hasConstant(new C)); +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::hasConstant() expects exactly 1 parameter, 0 given in %s on line 8 +NULL + +Warning: ReflectionClass::hasConstant() expects exactly 1 parameter, 2 given in %s on line 9 +NULL +bool(false) +bool(false) +bool(false) +bool(false) + +Warning: ReflectionClass::hasConstant() expects parameter 1 to be string, array given in %s on line 14 +NULL + +Warning: ReflectionClass::hasConstant() expects parameter 1 to be string, object given in %s on line 15 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_hasMethod_001.phpt b/ext/reflection/tests/ReflectionClass_hasMethod_001.phpt new file mode 100644 index 000000000..81614bd9f --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasMethod_001.phpt @@ -0,0 +1,75 @@ +--TEST-- +ReflectionClass::hasMethod() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + Check for f(): "; + var_dump($rc->hasMethod("f")); + echo " --> Check for s(): "; + var_dump($rc->hasMethod("s")); + echo " --> Check for F(): "; + var_dump($rc->hasMethod("F")); + echo " --> Check for doesntExist(): "; + var_dump($rc->hasMethod("doesntExist")); +} +?> +--EXPECTF-- +Reflecting on class pubf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) +Reflecting on class subpubf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) +Reflecting on class protf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) +Reflecting on class subprotf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) +Reflecting on class privf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) +Reflecting on class subprivf: + --> Check for f(): bool(true) + --> Check for s(): bool(true) + --> Check for F(): bool(true) + --> Check for doesntExist(): bool(false) + \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_hasMethod_002.phpt b/ext/reflection/tests/ReflectionClass_hasMethod_002.phpt new file mode 100644 index 000000000..63fe8791f --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasMethod_002.phpt @@ -0,0 +1,40 @@ +--TEST-- +ReflectionClass::hasMethod() - error cases +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +hasMethod()); +var_dump($rc->hasMethod("f", "f")); +var_dump($rc->hasMethod(null)); +var_dump($rc->hasMethod(1)); +var_dump($rc->hasMethod(1.5)); +var_dump($rc->hasMethod(true)); +var_dump($rc->hasMethod(array(1,2,3))); +var_dump($rc->hasMethod(new C)); +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::hasMethod() expects exactly 1 parameter, 0 given in %s on line 8 +NULL + +Warning: ReflectionClass::hasMethod() expects exactly 1 parameter, 2 given in %s on line 9 +NULL +bool(false) +bool(false) +bool(false) +bool(false) + +Warning: ReflectionClass::hasMethod() expects parameter 1 to be string, array given in %s on line 14 +NULL + +Warning: ReflectionClass::hasMethod() expects parameter 1 to be string, object given in %s on line 15 +NULL diff --git a/ext/reflection/tests/ReflectionClass_hasProperty_001.phpt b/ext/reflection/tests/ReflectionClass_hasProperty_001.phpt new file mode 100644 index 000000000..94f739c33 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasProperty_001.phpt @@ -0,0 +1,75 @@ +--TEST-- +ReflectionClass::hasProperty() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + Check for s: "; + var_dump($rc->hasProperty("s")); + echo " --> Check for a: "; + var_dump($rc->hasProperty("a")); + echo " --> Check for A: "; + var_dump($rc->hasProperty("A")); + echo " --> Check for doesntExist: "; + var_dump($rc->hasProperty("doesntExist")); +} +?> +--EXPECTF-- +Reflecting on class pubf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) +Reflecting on class subpubf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) +Reflecting on class protf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) +Reflecting on class subprotf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) +Reflecting on class privf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) +Reflecting on class subprivf: + --> Check for s: bool(true) + --> Check for a: bool(true) + --> Check for A: bool(false) + --> Check for doesntExist: bool(false) + diff --git a/ext/reflection/tests/ReflectionClass_hasProperty_002.phpt b/ext/reflection/tests/ReflectionClass_hasProperty_002.phpt new file mode 100644 index 000000000..753890394 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_hasProperty_002.phpt @@ -0,0 +1,40 @@ +--TEST-- +ReflectionClass::hasProperty() - error cases +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +hasProperty()); +var_dump($rc->hasProperty("a", "a")); +var_dump($rc->hasProperty(null)); +var_dump($rc->hasProperty(1)); +var_dump($rc->hasProperty(1.5)); +var_dump($rc->hasProperty(true)); +var_dump($rc->hasProperty(array(1,2,3))); +var_dump($rc->hasProperty(new C)); +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::hasProperty() expects exactly 1 parameter, 0 given in %s on line 8 +NULL + +Warning: ReflectionClass::hasProperty() expects exactly 1 parameter, 2 given in %s on line 9 +NULL +bool(false) +bool(false) +bool(false) +bool(false) + +Warning: ReflectionClass::hasProperty() expects parameter 1 to be string, array given in %s on line 14 +NULL + +Warning: ReflectionClass::hasProperty() expects parameter 1 to be string, object given in %s on line 15 +NULL diff --git a/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt b/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt new file mode 100644 index 000000000..9c2fdeddd --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt @@ -0,0 +1,155 @@ +--TEST-- +ReflectionClass::implementsInterface() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + $child) { + foreach ($rcs as $parentName => $parent) { + echo "Does " . $childName . " implement " . $parentName . "? \n"; + echo " - Using object argument: "; + try { + var_dump($child->implementsInterface($parent)); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + } + echo " - Using string argument: "; + try { + var_dump($child->implementsInterface($parentName)); + } catch (Exception $e) { + echo $e->getMessage() . "\n"; + } + } +} + + + +echo "\n\nTest bad arguments:\n"; +try { + var_dump($rcs['A']->implementsInterface()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rcs['A']->implementsInterface('C', 'C')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rcs['A']->implementsInterface(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rcs['A']->implementsInterface('ThisClassDoesNotExist')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rcs['A']->implementsInterface(2)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +Does A implement A? + - Using object argument: Interface A is a Class + - Using string argument: Interface A is a Class +Does A implement B? + - Using object argument: Interface B is a Class + - Using string argument: Interface B is a Class +Does A implement C? + - Using object argument: Interface C is a Class + - Using string argument: Interface C is a Class +Does A implement I1? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does A implement I2? + - Using object argument: bool(false) + - Using string argument: bool(false) +Does B implement A? + - Using object argument: Interface A is a Class + - Using string argument: Interface A is a Class +Does B implement B? + - Using object argument: Interface B is a Class + - Using string argument: Interface B is a Class +Does B implement C? + - Using object argument: Interface C is a Class + - Using string argument: Interface C is a Class +Does B implement I1? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does B implement I2? + - Using object argument: bool(false) + - Using string argument: bool(false) +Does C implement A? + - Using object argument: Interface A is a Class + - Using string argument: Interface A is a Class +Does C implement B? + - Using object argument: Interface B is a Class + - Using string argument: Interface B is a Class +Does C implement C? + - Using object argument: Interface C is a Class + - Using string argument: Interface C is a Class +Does C implement I1? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does C implement I2? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does I1 implement A? + - Using object argument: Interface A is a Class + - Using string argument: Interface A is a Class +Does I1 implement B? + - Using object argument: Interface B is a Class + - Using string argument: Interface B is a Class +Does I1 implement C? + - Using object argument: Interface C is a Class + - Using string argument: Interface C is a Class +Does I1 implement I1? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does I1 implement I2? + - Using object argument: bool(false) + - Using string argument: bool(false) +Does I2 implement A? + - Using object argument: Interface A is a Class + - Using string argument: Interface A is a Class +Does I2 implement B? + - Using object argument: Interface B is a Class + - Using string argument: Interface B is a Class +Does I2 implement C? + - Using object argument: Interface C is a Class + - Using string argument: Interface C is a Class +Does I2 implement I1? + - Using object argument: bool(true) + - Using string argument: bool(true) +Does I2 implement I2? + - Using object argument: bool(true) + - Using string argument: bool(true) + + +Test bad arguments: + +Warning: ReflectionClass::implementsInterface() expects exactly 1 parameter, 0 given in %s on line 37 +NULL + +Warning: ReflectionClass::implementsInterface() expects exactly 1 parameter, 2 given in %s on line 42 +NULL +Parameter one must either be a string or a ReflectionClass object +Interface ThisClassDoesNotExist does not exist +Parameter one must either be a string or a ReflectionClass object diff --git a/ext/reflection/tests/ReflectionClass_isIterateable_001.phpt b/ext/reflection/tests/ReflectionClass_isIterateable_001.phpt new file mode 100644 index 000000000..3ece91542 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_isIterateable_001.phpt @@ -0,0 +1,75 @@ +--TEST-- +ReflectionClass::isIterateable() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isIterateable()); +} + +echo "\nTest invalid params:\n"; +$rc = new ReflectionClass('IteratorImpl'); +var_dump($rc->isIterateable(null)); +var_dump($rc->isIterateable(null, null)); +var_dump($rc->isIterateable(1)); +var_dump($rc->isIterateable(1.5)); +var_dump($rc->isIterateable(true)); +var_dump($rc->isIterateable('X')); +var_dump($rc->isIterateable(null)); + +echo "\nTest static invocation:\n"; +ReflectionClass::isIterateable(); + +?> +--EXPECTF-- +Is Traversable iterable? bool(false) +Is Iterator iterable? bool(false) +Is IteratorAggregate iterable? bool(false) +Is ExtendsIterator iterable? bool(false) +Is ExtendsIteratorAggregate iterable? bool(false) +Is IteratorImpl iterable? bool(true) +Is IterarorAggregateImpl iterable? bool(true) +Is ExtendsIteratorImpl iterable? bool(true) +Is ExtendsIteratorAggregateImpl iterable? bool(true) +Is A iterable? bool(false) + +Test invalid params: +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) + +Test static invocation: + +Fatal error: Non-static method ReflectionClass::isIterateable() cannot be called statically in %s on line 43 \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_isSubclassOf_002.phpt b/ext/reflection/tests/ReflectionClass_isSubclassOf_002.phpt new file mode 100644 index 000000000..083b27713 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_isSubclassOf_002.phpt @@ -0,0 +1,49 @@ +--TEST-- +ReflectionObject::isSubclassOf() - bad arguments +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isSubclassOf()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->isSubclassOf('C', 'C')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->isSubclassOf(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->isSubclassOf('ThisClassDoesNotExist')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->isSubclassOf(2)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- + +Test bad arguments: + +Warning: ReflectionClass::isSubclassOf() expects exactly 1 parameter, 0 given in %s on line 7 +NULL + +Warning: ReflectionClass::isSubclassOf() expects exactly 1 parameter, 2 given in %s on line 12 +NULL +Parameter one must either be a string or a ReflectionClass object +Class ThisClassDoesNotExist does not exist +Parameter one must either be a string or a ReflectionClass object \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_modifiers_001.phpt b/ext/reflection/tests/ReflectionClass_modifiers_001.phpt new file mode 100644 index 000000000..941bfe5f2 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_modifiers_001.phpt @@ -0,0 +1,44 @@ +--TEST-- +Modifiers +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isFinal()); + var_dump($rc->isInterface()); + var_dump($rc->isAbstract()); + var_dump($rc->getModifiers()); +} +?> +--EXPECTF-- +bool(false) +bool(false) +bool(true) +int(32) +bool(false) +bool(false) +bool(false) +int(0) +bool(false) +bool(false) +bool(false) +int(0) +bool(true) +bool(false) +bool(false) +int(64) +bool(false) +bool(true) +bool(false) +int(128) \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_modifiers_002.phpt b/ext/reflection/tests/ReflectionClass_modifiers_002.phpt new file mode 100644 index 000000000..3fa247454 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_modifiers_002.phpt @@ -0,0 +1,28 @@ +--TEST-- +Modifiers - wrong param count +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isFinal('X')); +var_dump($rc->isInterface(null)); +var_dump($rc->isAbstract(true)); +var_dump($rc->getModifiers(array(1,2,3))); + +?> +--EXPECTF-- + +Warning: Wrong parameter count for ReflectionClass::isFinal() in %s on line 4 +NULL + +Warning: Wrong parameter count for ReflectionClass::isInterface() in %s on line 5 +NULL + +Warning: Wrong parameter count for ReflectionClass::isAbstract() in %s on line 6 +NULL + +Warning: Wrong parameter count for ReflectionClass::getModifiers() in %s on line 7 +NULL diff --git a/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt b/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt new file mode 100644 index 000000000..981d67519 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_newInstanceArgs_001.phpt @@ -0,0 +1,98 @@ +--TEST-- +ReflectionClass::newInstanceArgs +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +newInstanceArgs(); +$a2 = $rcA->newInstanceArgs(array('x')); +var_dump($a1, $a2); + +$b1 = $rcB->newInstanceArgs(); +$b2 = $rcB->newInstanceArgs(array('x', 123)); +var_dump($b1, $b2); + +try { + $rcC->newInstanceArgs(); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + $rcD->newInstanceArgs(); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +$e1 = $rcE->newInstanceArgs(); +var_dump($e1); + +try { + $e2 = $rcE->newInstanceArgs(array('x')); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +In constructor of class A +In constructor of class A +object(A)#%d (0) { +} +object(A)#%d (0) { +} + +Warning: Missing argument 1 for B::__construct() in %s on line 9 + +Warning: Missing argument 2 for B::__construct() in %s on line 9 + +Notice: Undefined variable: a in %s on line 10 + +Notice: Undefined variable: b in %s on line 10 +In constructor of class B with args , +In constructor of class B with args x, 123 +object(B)#%d (0) { +} +object(B)#%d (0) { +} +Access to non-public constructor of class C +Access to non-public constructor of class D +object(E)#%d (0) { +} +Class E does not have a constructor, so you cannot pass any constructor arguments \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_newInstanceArgs_002.phpt b/ext/reflection/tests/ReflectionClass_newInstanceArgs_002.phpt new file mode 100644 index 000000000..af5aeff2d --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_newInstanceArgs_002.phpt @@ -0,0 +1,20 @@ +--TEST-- +ReflectionClass::newInstanceArgs() - wrong arg type +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +newInstanceArgs('x'); +var_dump($a); + +?> +--EXPECTF-- + +Catchable fatal error: Argument 1 passed to ReflectionClass::newInstanceArgs() must be an array, string given in %s on line 8 diff --git a/ext/reflection/tests/ReflectionClass_newInstance_001.phpt b/ext/reflection/tests/ReflectionClass_newInstance_001.phpt new file mode 100644 index 000000000..3cdb5d76b --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_newInstance_001.phpt @@ -0,0 +1,98 @@ +--TEST-- +ReflectionClass::newInstance() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +newInstance(); +$a2 = $rcA->newInstance('x'); +var_dump($a1, $a2); + +$b1 = $rcB->newInstance(); +$b2 = $rcB->newInstance('x', 123); +var_dump($b1, $b2); + +try { + $rcC->newInstance(); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + $rcD->newInstance(); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +$e1 = $rcE->newInstance(); +var_dump($e1); + +try { + $e2 = $rcE->newInstance('x'); + echo "you should not see this\n"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +In constructor of class A +In constructor of class A +object(A)#%d (0) { +} +object(A)#%d (0) { +} + +Warning: Missing argument 1 for B::__construct() in %s on line 9 + +Warning: Missing argument 2 for B::__construct() in %s on line 9 + +Notice: Undefined variable: a in %s on line 10 + +Notice: Undefined variable: b in %s on line 10 +In constructor of class B with args , +In constructor of class B with args x, 123 +object(B)#%d (0) { +} +object(B)#%d (0) { +} +Access to non-public constructor of class C +Access to non-public constructor of class D +object(E)#%d (0) { +} +Class E does not have a constructor, so you cannot pass any constructor arguments \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt b/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt new file mode 100644 index 000000000..70a3bab9c --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_001.phpt @@ -0,0 +1,77 @@ +--TEST-- +ReflectionClass::setStaticPropertyValue() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +setStaticPropertyValue("\0A\0privateOverridden", "new value 1"); +$rcA->setStaticPropertyValue("\0*\0protectedOverridden", "new value 2"); +$rcA->setStaticPropertyValue("publicOverridden", "new value 3"); +print_r($rcA->getStaticProperties()); + +echo "\nSet static values in B:\n"; +$rcB = new ReflectionClass('B'); +$rcB->setStaticPropertyValue("\0A\0privateOverridden", "new value 4"); +$rcB->setStaticPropertyValue("\0B\0privateOverridden", "new value 5"); +$rcB->setStaticPropertyValue("\0*\0protectedOverridden", "new value 6"); +$rcB->setStaticPropertyValue("publicOverridden", "new value 7"); +print_r($rcA->getStaticProperties()); +print_r($rcB->getStaticProperties()); + +echo "\nSet non-existent values from A with no default value:\n"; +try { + var_dump($rcA->setStaticPropertyValue("protectedOverridden", "new value 8")); + echo "you should not see this"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump($rcA->setStaticPropertyValue("privateOverridden", "new value 9")); + echo "you should not see this"; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +?> +--EXPECTF-- +Set static values in A: +Array +( + [privateOverridden] => new value 1 + [protectedOverridden] => new value 2 + [publicOverridden] => new value 3 +) + +Set static values in B: +Array +( + [privateOverridden] => new value 4 + [protectedOverridden] => new value 2 + [publicOverridden] => new value 3 +) +Array +( + [privateOverridden] => new value 4 + [protectedOverridden] => new value 6 + [publicOverridden] => new value 7 +) + +Set non-existent values from A with no default value: +Class A does not have a property named protectedOverridden +Class A does not have a property named privateOverridden \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_002.phpt b/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_002.phpt new file mode 100644 index 000000000..3244ec30b --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_setStaticPropertyValue_002.phpt @@ -0,0 +1,60 @@ +--TEST-- +ReflectionClass::getStaticPropertyValue() - bad params +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +setStaticPropertyValue("x", "default value", 'blah')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->setStaticPropertyValue()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->setStaticPropertyValue(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->setStaticPropertyValue(null,null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->setStaticPropertyValue(1.5, 'def')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($rc->setStaticPropertyValue(array(1,2,3), 'blah')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + + +?> +--EXPECTF-- + +Warning: ReflectionClass::setStaticPropertyValue() expects exactly 2 parameters, 3 given in %s on line 8 +NULL + +Warning: ReflectionClass::setStaticPropertyValue() expects exactly 2 parameters, 0 given in %s on line 13 +NULL + +Warning: ReflectionClass::setStaticPropertyValue() expects exactly 2 parameters, 1 given in %s on line 18 +NULL +Class C does not have a property named +Class C does not have a property named 1.5 + +Warning: ReflectionClass::setStaticPropertyValue() expects parameter 1 to be string, array given in %s on line 33 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_toString_001.phpt b/ext/reflection/tests/ReflectionClass_toString_001.phpt new file mode 100644 index 000000000..8f567f478 --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_toString_001.phpt @@ -0,0 +1,224 @@ +--TEST-- +ReflectionClass::__toString() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + +--EXPECTF-- +Class [ class ReflectionClass implements Reflector ] { + + - Constants [3] { + Constant [ integer IS_IMPLICIT_ABSTRACT ] { 16 } + Constant [ integer IS_EXPLICIT_ABSTRACT ] { 32 } + Constant [ integer IS_FINAL ] { 64 } + } + + - Static properties [0] { + } + + - Static methods [1] { + Method [ static public method export ] { + + - Parameters [2] { + Parameter #0 [ $argument ] + Parameter #1 [ $return ] + } + } + } + + - Properties [1] { + Property [ public $name ] + } + + - Methods [40] { + Method [ final private method __clone ] { + } + + Method [ public method __construct ] { + + - Parameters [1] { + Parameter #0 [ $argument ] + } + } + + Method [ public method __toString ] { + } + + Method [ public method getName ] { + } + + Method [ public method isInternal ] { + } + + Method [ public method isUserDefined ] { + } + + Method [ public method isInstantiable ] { + } + + Method [ public method getFileName ] { + } + + Method [ public method getStartLine ] { + } + + Method [ public method getEndLine ] { + } + + Method [ public method getDocComment ] { + } + + Method [ public method getConstructor ] { + } + + Method [ public method hasMethod ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getMethod ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getMethods ] { + + - Parameters [1] { + Parameter #0 [ $filter ] + } + } + + Method [ public method hasProperty ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getProperty ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getProperties ] { + + - Parameters [1] { + Parameter #0 [ $filter ] + } + } + + Method [ public method hasConstant ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getConstants ] { + } + + Method [ public method getConstant ] { + + - Parameters [1] { + Parameter #0 [ $name ] + } + } + + Method [ public method getInterfaces ] { + } + + Method [ public method getInterfaceNames ] { + } + + Method [ public method isInterface ] { + } + + Method [ public method isAbstract ] { + } + + Method [ public method isFinal ] { + } + + Method [ public method getModifiers ] { + } + + Method [ public method isInstance ] { + + - Parameters [1] { + Parameter #0 [ $object ] + } + } + + Method [ public method newInstance ] { + + - Parameters [1] { + Parameter #0 [ $args ] + } + } + + Method [ public method newInstanceArgs ] { + + - Parameters [1] { + Parameter #0 [ array $args ] + } + } + + Method [ public method getParentClass ] { + } + + Method [ public method isSubclassOf ] { + + - Parameters [1] { + Parameter #0 [ $class ] + } + } + + Method [ public method getStaticProperties ] { + } + + Method [ public method getStaticPropertyValue ] { + + - Parameters [2] { + Parameter #0 [ $name ] + Parameter #1 [ $default ] + } + } + + Method [ public method setStaticPropertyValue ] { + + - Parameters [2] { + Parameter #0 [ $name ] + Parameter #1 [ $value ] + } + } + + Method [ public method getDefaultProperties ] { + } + + Method [ public method isIterateable ] { + } + + Method [ public method implementsInterface ] { + + - Parameters [1] { + Parameter #0 [ $interface ] + } + } + + Method [ public method getExtension ] { + } + + Method [ public method getExtensionName ] { + } + } +} diff --git a/ext/reflection/tests/ReflectionClass_toString_002.phpt b/ext/reflection/tests/ReflectionClass_toString_002.phpt new file mode 100644 index 000000000..e9aaa502c --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_toString_002.phpt @@ -0,0 +1,123 @@ +--TEST-- +ReflectionClass::__toString() - verify 'inherits', 'overwrites' and 'prototype' parts of method representation +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + +--EXPECTF-- + + +----( Reflection class A: )---- +Class [ class A ] { + @@ %s 2-4 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ public method f ] { + @@ %s 3 - 3 + } + } +} + + +----( Reflection class B: )---- +Class [ class B extends A ] { + @@ %s 5-7 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ public method f ] { + @@ %s 6 - 6 + } + } +} + + +----( Reflection class C: )---- +Class [ class C extends B ] { + @@ %s 8-10 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ public method f ] { + @@ %s 6 - 6 + } + } +} + + +----( Reflection class D: )---- +Class [ class D extends C ] { + @@ %s 11-13 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ public method f ] { + @@ %s 12 - 12 + } + } +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionClass_toString_003.phpt b/ext/reflection/tests/ReflectionClass_toString_003.phpt new file mode 100644 index 000000000..cf926395a --- /dev/null +++ b/ext/reflection/tests/ReflectionClass_toString_003.phpt @@ -0,0 +1,123 @@ +--TEST-- +ReflectionClass::__toString() - verify 'inherits', 'overwrites' and 'prototype' parts of method representation with private methods +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- + +--EXPECTF-- + + +----( Reflection class A: )---- +Class [ class A ] { + @@ %s 2-4 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ private method f ] { + @@ %s 3 - 3 + } + } +} + + +----( Reflection class B: )---- +Class [ class B extends A ] { + @@ %s 5-7 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ private method f ] { + @@ %s 6 - 6 + } + } +} + + +----( Reflection class C: )---- +Class [ class C extends B ] { + @@ %s 8-10 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ private method f ] { + @@ %s 6 - 6 + } + } +} + + +----( Reflection class D: )---- +Class [ class D extends C ] { + @@ %s 11-13 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ private method f ] { + @@ %s 12 - 12 + } + } +} diff --git a/ext/reflection/tests/ReflectionFunction_001.phpt b/ext/reflection/tests/ReflectionFunction_001.phpt new file mode 100644 index 000000000..7c592dc61 --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_001.phpt @@ -0,0 +1,67 @@ +--TEST-- +ReflectionFunction methods +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getName()); + var_dump($funcInfo->isInternal()); + var_dump($funcInfo->isUserDefined()); + var_dump($funcInfo->getStartLine()); + var_dump($funcInfo->getEndLine()); + var_dump($funcInfo->getStaticVariables()); +} + +dumpFuncInfo('foo'); +dumpFuncInfo('bar'); +dumpFuncInfo('extract'); + +?> +--EXPECT-- +string(3) "foo" +bool(false) +bool(true) +int(6) +int(11) +array(3) { + ["c"]=> + NULL + ["a"]=> + int(1) + ["b"]=> + string(5) "hello" +} +string(3) "bar" +bool(false) +bool(true) +int(16) +int(16) +array(0) { +} +string(7) "extract" +bool(true) +bool(false) +bool(false) +bool(false) +array(0) { +} \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionFunction_construct.001.phpt b/ext/reflection/tests/ReflectionFunction_construct.001.phpt new file mode 100644 index 000000000..c8e0a17a9 --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_construct.001.phpt @@ -0,0 +1,23 @@ +--TEST-- +ReflectionFunction constructor errors +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getMessage(); +} +$a = new ReflectionFunction(); +$a = new ReflectionFunction(1, 2); +?> +--EXPECTF-- +Warning: ReflectionFunction::__construct() expects parameter 1 to be string, array given in %s on line %d +Function nonExistentFunction() does not exist +Warning: ReflectionFunction::__construct() expects exactly 1 parameter, 0 given in %s on line %d + +Warning: ReflectionFunction::__construct() expects exactly 1 parameter, 2 given in %s on line %d diff --git a/ext/reflection/tests/ReflectionFunction_getDocComment.001.phpt b/ext/reflection/tests/ReflectionFunction_getDocComment.001.phpt new file mode 100644 index 000000000..38c278d8a --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getDocComment.001.phpt @@ -0,0 +1,41 @@ +--TEST-- +ReflectionFunction::getDocComment() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getDocComment()); +} + +dumpFuncInfo('foo'); +dumpFuncInfo('bar'); +dumpFuncInfo('extract'); + +?> +--EXPECTF-- +string(%d) "/** + * my doc comment + */" +bool(false) +bool(false) + diff --git a/ext/reflection/tests/ReflectionFunction_getExtension.phpt b/ext/reflection/tests/ReflectionFunction_getExtension.phpt new file mode 100644 index 000000000..18345892c --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getExtension.phpt @@ -0,0 +1,19 @@ +--TEST-- +ReflectionFunction::getExtension() +--FILE-- +getExtension()); + +$function = new ReflectionFunction('foo'); +var_dump($function->getExtension()); +?> +--EXPECTF-- +object(ReflectionExtension)#%i (1) { + ["name"]=> + string(8) "standard" +} +NULL + diff --git a/ext/reflection/tests/ReflectionFunction_getExtensionName.phpt b/ext/reflection/tests/ReflectionFunction_getExtensionName.phpt new file mode 100644 index 000000000..7553a50b3 --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getExtensionName.phpt @@ -0,0 +1,16 @@ +--TEST-- +ReflectionFunction::getExtensionName() +--FILE-- +getExtensionName()); + +$function = new ReflectionFunction('foo'); +var_dump($function->getExtensionName()); +?> +--EXPECT-- +string(8) "standard" +bool(false) + diff --git a/ext/reflection/tests/ReflectionFunction_getFileName.001.phpt b/ext/reflection/tests/ReflectionFunction_getFileName.001.phpt new file mode 100644 index 000000000..5dbe7b54b --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getFileName.001.phpt @@ -0,0 +1,18 @@ +--TEST-- +ReflectionFunction::getFileName() with function in an included file +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getFileName()); + +?> +--EXPECTF-- +%sincluded4.inc +%d +string(%d) "%sincluded4.inc" \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionFunction_getFileName.002.phpt b/ext/reflection/tests/ReflectionFunction_getFileName.002.phpt new file mode 100644 index 000000000..455935e38 --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getFileName.002.phpt @@ -0,0 +1,39 @@ +--TEST-- +ReflectionFunction::getFileName() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getFileName()); +} + +dumpFuncInfo('foo'); +dumpFuncInfo('bar'); +dumpFuncInfo('extract'); + +?> +--EXPECTF-- +string(%d) "%sReflectionFunction_getFileName.002.php" +string(%d) "%sReflectionFunction_getFileName.002.php" +bool(false) + diff --git a/ext/reflection/tests/ReflectionMethod_006.phpt b/ext/reflection/tests/ReflectionMethod_006.phpt new file mode 100644 index 000000000..4a8192b9e --- /dev/null +++ b/ext/reflection/tests/ReflectionMethod_006.phpt @@ -0,0 +1,100 @@ +--TEST-- +ReflectionMethod methods - wrong num args +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isFinal(1)); +var_dump($rm->isAbstract(1)); +var_dump($rm->isPrivate(1)); +var_dump($rm->isProtected(1)); +var_dump($rm->isPublic(1)); +var_dump($rm->isStatic(1)); +var_dump($rm->isConstructor(1)); +var_dump($rm->isDestructor(1)); +var_dump($rm->getModifiers(1)); +var_dump($rm->isInternal(1)); +var_dump($rm->isUserDefined(1)); +var_dump($rm->getFileName(1)); +var_dump($rm->getStartLine(1)); +var_dump($rm->getEndLine(1)); +var_dump($rm->getStaticVariables(1)); +var_dump($rm->getName(1)); + + +?> +--EXPECTF-- +Warning: ReflectionMethod::__construct() expects %s on line 3 +object(ReflectionMethod)#%d (2) { + ["name"]=> + string(0) "" + ["class"]=> + string(0) "" +} + +Warning: ReflectionMethod::__construct() expects %s on line 4 +object(ReflectionMethod)#%d (2) { + ["name"]=> + string(0) "" + ["class"]=> + string(0) "" +} + +Warning: Wrong parameter count for ReflectionMethod::isFinal() in %s on line 12 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isAbstract() in %s on line 13 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isPrivate() in %s on line 14 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isProtected() in %s on line 15 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isPublic() in %s on line 16 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isStatic() in %s on line 17 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isConstructor() in %s on line 18 +NULL + +Warning: Wrong parameter count for ReflectionMethod::isDestructor() in %s on line 19 +NULL + +Warning: Wrong parameter count for ReflectionMethod::getModifiers() in %s on line 20 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::isInternal() in %s on line 21 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::isUserDefined() in %s on line 22 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::getFileName() in %s on line 23 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::getStartLine() in %s on line 24 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::getEndLine() in %s on line 25 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::getStaticVariables() in %s on line 26 +NULL + +Warning: Wrong parameter count for ReflectionFunctionAbstract::getName() in %s on line 27 +NULL \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionMethod_constructor_error1.phpt b/ext/reflection/tests/ReflectionMethod_constructor_error1.phpt new file mode 100644 index 000000000..70528255e --- /dev/null +++ b/ext/reflection/tests/ReflectionMethod_constructor_error1.phpt @@ -0,0 +1,103 @@ +--TEST-- +ReflectionMethod constructor errors +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +__toString(); +} +try { + echo "\nWrong type of argument (int):\n"; + $methodInfo = new ReflectionMethod(3); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nWrong type of argument (bool, string):\n"; + $methodInfo = new ReflectionMethod(true, "foo"); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nWrong type of argument (string, bool):\n"; + $methodInfo = new ReflectionMethod('TestClass', true); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nNo method given:\n"; + $methodInfo = new ReflectionMethod("TestClass"); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nClass and Method in same string, bad method name:\n"; + $methodInfo = new ReflectionMethod("TestClass::foop::dedoop"); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nClass and Method in same string, bad class name:\n"; + $methodInfo = new ReflectionMethod("TestCla::foo"); +} catch (Exception $e) { + print $e->__toString(); +} +try { + echo "\nClass and Method in same string (ok):\n"; + $methodInfo = new ReflectionMethod("TestClass::foo"); +} catch (Exception $e) { + print $e->__toString(); +} + +?> +--EXPECTF-- +Wrong type of argument (bool): +exception 'ReflectionException' with message 'Invalid method name 1' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('1') +#1 {main} +Wrong type of argument (int): +exception 'ReflectionException' with message 'Invalid method name 3' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('3') +#1 {main} +Wrong type of argument (bool, string): +exception 'ReflectionException' with message 'The parameter class is expected to be either a string or an object' in %s +Stack trace: +#0 %s ReflectionMethod->__construct(true, 'foo') +#1 {main} +Wrong type of argument (string, bool): +exception 'ReflectionException' with message 'Method TestClass::1() does not exist' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('TestClass', '1') +#1 {main} +No method given: +exception 'ReflectionException' with message 'Invalid method name TestClass' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('TestClass') +#1 {main} +Class and Method in same string, bad method name: +exception 'ReflectionException' with message 'Method TestClass::foop::dedoop() does not exist' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('TestClass::foop...') +#1 {main} +Class and Method in same string, bad class name: +exception 'ReflectionException' with message 'Class TestCla does not exist' in %s +Stack trace: +#0 %s ReflectionMethod->__construct('TestCla::foo') +#1 {main} +Class and Method in same string (ok): + diff --git a/ext/reflection/tests/ReflectionMethod_constructor_error2.phpt b/ext/reflection/tests/ReflectionMethod_constructor_error2.phpt new file mode 100644 index 000000000..1c2d3a138 --- /dev/null +++ b/ext/reflection/tests/ReflectionMethod_constructor_error2.phpt @@ -0,0 +1,37 @@ +--TEST-- +ReflectionMethod constructor errors +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +__toString(); +} +try { + echo "\nToo many arguments:\n"; + $methodInfo = new ReflectionMethod("TestClass", "foo", true); +} catch (Exception $e) { + print $e->__toString(); +} + +?> +--EXPECTF-- +Too few arguments: + +Warning: ReflectionMethod::__construct() expects exactly 1 parameter, 0 given in %s on line 12 + +Too many arguments: + +Warning: ReflectionMethod::__construct() expects exactly 1 parameter, 3 given in %s on line 18 diff --git a/ext/reflection/tests/ReflectionObject_isSubclassOf.002.phpt b/ext/reflection/tests/ReflectionObject_isSubclassOf.002.phpt new file mode 100644 index 000000000..2fb8cb087 --- /dev/null +++ b/ext/reflection/tests/ReflectionObject_isSubclassOf.002.phpt @@ -0,0 +1,48 @@ +--TEST-- +ReflectionObject::isSubclassOf() - bad arguments +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +isSubclassOf()); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($ro->isSubclassOf('C', 'C')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($ro->isSubclassOf(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($ro->isSubclassOf('ThisClassDoesNotExist')); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($ro->isSubclassOf(2)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +Test bad arguments: + +Warning: ReflectionClass::isSubclassOf() expects exactly 1 parameter, 0 given in %s on line 7 +NULL + +Warning: ReflectionClass::isSubclassOf() expects exactly 1 parameter, 2 given in %s on line 12 +NULL +Parameter one must either be a string or a ReflectionClass object +Class ThisClassDoesNotExist does not exist +Parameter one must either be a string or a ReflectionClass object \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionParameter_001.phpt b/ext/reflection/tests/ReflectionParameter_001.phpt new file mode 100644 index 000000000..dae3ac723 --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_001.phpt @@ -0,0 +1,80 @@ +--TEST-- +ReflectionParameter class - getNames() method. +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getParameters(); +echo "Parameters from twoArgMethod:\n\n"; +foreach($parameters as $parameter) { + var_dump($parameter); + $name = $parameter->getName(); + echo "\n"; +} + +$method = new ReflectionMethod('ReflectTestClass', 'oneArgNonStatic'); +$parameters = $method->getParameters(); +echo "Parameters from oneArgNonStatic:\n\n"; +foreach($parameters as $parameter) { + var_dump($parameter); + $name = $parameter->getName(); + echo "\n"; +} + + +$method = new ReflectionMethod('ReflectTestClass', 'noArgs'); +$parameters = $method->getParameters(); +echo "Parameters from noArgs:\n\n"; +var_dump($parameters); +foreach($parameters as $parameter) { + var_dump($parameter); + $name = $parameter->getName(); + echo "\n"; +} + +echo "done\n"; + +?> +--EXPECTF-- +Parameters from twoArgMethod: + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(12) "theIncrement" +} + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(12) "anotherParam" +} + +Parameters from oneArgNonStatic: + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(8) "theParam" +} + +Parameters from noArgs: + +array(0) { +} +done \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionParameter_002.phpt b/ext/reflection/tests/ReflectionParameter_002.phpt new file mode 100644 index 000000000..3b7df6f95 --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_002.phpt @@ -0,0 +1,80 @@ +--TEST-- +ReflectionParameter class - isPassedByReferenceMethod() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getParameters(); +echo "Parameters from staticMethod:\n\n"; +foreach($parameters as $parameter) { + var_dump($parameter); + if($parameter->isPassedByReference()) { + echo "This param is passed by reference\n"; + } else { + echo "This param is not passed by reference\n"; + } + echo "\n"; +} + +// Create an instance of the Reflection_Method class +$method = new ReflectionMethod('ReflectTestClass', 'instanceMethod'); +// Get the parameters +$parameters = $method->getParameters(); +echo "Parameters from instanceMethod:\n\n"; +foreach($parameters as $parameter) { + var_dump($parameter); + if($parameter->isPassedByReference()) { + echo "This param is passed by reference\n"; + } else { + echo "This param is not passed by reference\n"; + } + echo "\n"; +} + +echo "done\n"; + +?> +--EXPECTF-- +Parameters from staticMethod: + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(8) "paramOne" +} +This param is passed by reference + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(12) "anotherParam" +} +This param is not passed by reference + +Parameters from instanceMethod: + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(10) "firstParam" +} +This param is not passed by reference + +object(ReflectionParameter)#%i (1) { + ["name"]=> + string(11) "secondParam" +} +This param is passed by reference + +done \ No newline at end of file diff --git a/ext/reflection/tests/ReflectionParameter_003.phpt b/ext/reflection/tests/ReflectionParameter_003.phpt new file mode 100644 index 000000000..f7ced9ad0 --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_003.phpt @@ -0,0 +1,88 @@ +--TEST-- +ReflectionParameter class - isOptional, isDefaultValueAvailable and getDefaultValue methods. +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getParameters(); + +echo "parameter names from staticMethod method:\n\n"; +foreach($refParameters as $parameter) { + var_dump($parameter); + if($parameter->isOptional()) { + echo "this parameter is optional\n"; + } else { + echo "this parameter is not optional\n"; + } + + if($parameter->isDefaultValueAvailable()) { + echo "this parameter has a default value\n"; + } else { + echo "this parameter has no default value\n"; + } + + /* + $val = 0; + try { + $val = $parameter->getDefaultValue(); + var_dump($val); + } catch (ReflectionException $e) { + print $e->getMessage(); + echo "\n"; + } + */ + + echo "\n"; +} + +?> +--EXPECTF-- +hello from test +third is jack + +Notice: Undefined variable: theIncrement in %s on line 8 +parameter names from staticMethod method: + +object(ReflectionParameter)#%d (1) { + ["name"]=> + string(8) "paramOne" +} +this parameter is not optional +this parameter has no default value + +object(ReflectionParameter)#%d (1) { + ["name"]=> + string(12) "anotherParam" +} +this parameter is optional +this parameter has a default value + +object(ReflectionParameter)#%d (1) { + ["name"]=> + string(10) "thirdParam" +} +this parameter is optional +this parameter has a default value + +object(ReflectionParameter)#%d (1) { + ["name"]=> + string(10) "arrayParam" +} +this parameter is optional +this parameter has a default value diff --git a/ext/reflection/tests/ReflectionProperty_getModifiers.001.phpt b/ext/reflection/tests/ReflectionProperty_getModifiers.001.phpt new file mode 100644 index 000000000..fe888a83b --- /dev/null +++ b/ext/reflection/tests/ReflectionProperty_getModifiers.001.phpt @@ -0,0 +1,66 @@ +--TEST-- +ReflectionProperty::getModifiers() +--CREDITS-- +Robin Fernandes +Steve Seear +--FILE-- +getModifiers()); + + echo "\n**********************************\n"; +} + +class TestClass +{ + public $pub; + static public $stat = "static property"; + /** + * This property has a comment. + */ + protected $prot = 4; + private $priv = "keepOut"; +} + +reflectProperty("TestClass", "pub"); +reflectProperty("TestClass", "stat"); +reflectProperty("TestClass", "prot"); +reflectProperty("TestClass", "priv"); + +?> +--EXPECT-- +********************************** +Reflecting on property TestClass::pub + +getModifiers(): +int(256) + +********************************** +********************************** +Reflecting on property TestClass::stat + +getModifiers(): +int(257) + +********************************** +********************************** +Reflecting on property TestClass::prot + +getModifiers(): +int(512) + +********************************** +********************************** +Reflecting on property TestClass::priv + +getModifiers(): +int(1024) + +********************************** diff --git a/ext/reflection/tests/bug26695.phpt b/ext/reflection/tests/bug26695.phpt index c62395325..22619d4f1 100755 --- a/ext/reflection/tests/bug26695.phpt +++ b/ext/reflection/tests/bug26695.phpt @@ -1,27 +1,27 @@ ---TEST-- -Reflection Bug #26695 (Reflection API does not recognize mixed-case class hints) ---SKIPIF-- - ---FILE-- -getMethods(); -$params = $methods[0]->getParameters(); - -$class = $params[0]->getClass(); - -var_dump($class->getName()); -?> -===DONE=== ---EXPECT-- -string(3) "Foo" +--TEST-- +Reflection Bug #26695 (Reflection API does not recognize mixed-case class hints) +--SKIPIF-- + +--FILE-- +getMethods(); +$params = $methods[0]->getParameters(); + +$class = $params[0]->getClass(); + +var_dump($class->getName()); +?> +===DONE=== +--EXPECT-- +string(3) "Foo" ===DONE=== \ No newline at end of file diff --git a/ext/reflection/tests/bug29268.phpt b/ext/reflection/tests/bug29268.phpt index 9f17a5e11..cd8f9b8ed 100755 --- a/ext/reflection/tests/bug29268.phpt +++ b/ext/reflection/tests/bug29268.phpt @@ -1,29 +1,29 @@ ---TEST-- -Reflection Bug #29268 (__autoload() not called with reflectionProperty->getClass()) ---SKIPIF-- - ---FILE-- -getParameters(); -foreach($parameters as $parameter) -{ - $class = $parameter->getClass(); - echo $class->name."\n"; -} -echo "ok\n"; -?> ---EXPECT-- -__autoload(A) -A -ok +--TEST-- +Reflection Bug #29268 (__autoload() not called with reflectionProperty->getClass()) +--SKIPIF-- + +--FILE-- +getParameters(); +foreach($parameters as $parameter) +{ + $class = $parameter->getClass(); + echo $class->name."\n"; +} +echo "ok\n"; +?> +--EXPECT-- +__autoload(A) +A +ok diff --git a/ext/reflection/tests/bug29523.phpt b/ext/reflection/tests/bug29523.phpt index e952d0ffe..ac83cc789 100755 --- a/ext/reflection/tests/bug29523.phpt +++ b/ext/reflection/tests/bug29523.phpt @@ -1,40 +1,40 @@ ---TEST-- -Reflection Bug #29523 (ReflectionParameter::isOptional() is incorrect) ---SKIPIF-- - ---FILE-- -getParameters() as $parameter) -{ - var_dump($parameter->isOptional()); - if ($parameter->isOptional()) - { - ++$numberOfOptionalParameters; - } - else - { - ++$numberOfNotOptionalParameters; - } -} -var_dump($function->getNumberOfRequiredParameters()); -var_dump($numberOfNotOptionalParameters); - -?> ---EXPECT-- -bool(false) -bool(false) -bool(true) -int(2) -int(2) +--TEST-- +Reflection Bug #29523 (ReflectionParameter::isOptional() is incorrect) +--SKIPIF-- + +--FILE-- +getParameters() as $parameter) +{ + var_dump($parameter->isOptional()); + if ($parameter->isOptional()) + { + ++$numberOfOptionalParameters; + } + else + { + ++$numberOfNotOptionalParameters; + } +} +var_dump($function->getNumberOfRequiredParameters()); +var_dump($numberOfNotOptionalParameters); + +?> +--EXPECT-- +bool(false) +bool(false) +bool(true) +int(2) +int(2) diff --git a/ext/reflection/tests/bug29828.phpt b/ext/reflection/tests/bug29828.phpt index f9052ac6b..7d4de40c1 100755 --- a/ext/reflection/tests/bug29828.phpt +++ b/ext/reflection/tests/bug29828.phpt @@ -1,37 +1,37 @@ ---TEST-- -Reflection Bug #29828 (Interfaces no longer work) ---SKIPIF-- - ---FILE-- -getMethods())); -var_dump($r->getMethod('bla')->isConstructor()); -var_dump($r->getMethod('bla')->isAbstract()); - -$o=new BlaMore; -$o->bla(); - -?> -===DONE=== ---EXPECT-- -int(1) -bool(false) -bool(false) -Hello -===DONE=== +--TEST-- +Reflection Bug #29828 (Interfaces no longer work) +--SKIPIF-- + +--FILE-- +getMethods())); +var_dump($r->getMethod('bla')->isConstructor()); +var_dump($r->getMethod('bla')->isAbstract()); + +$o=new BlaMore; +$o->bla(); + +?> +===DONE=== +--EXPECT-- +int(1) +bool(false) +bool(false) +Hello +===DONE=== diff --git a/ext/reflection/tests/bug30146.phpt b/ext/reflection/tests/bug30146.phpt index d7dd2fc21..3a7ce92a0 100755 --- a/ext/reflection/tests/bug30146.phpt +++ b/ext/reflection/tests/bug30146.phpt @@ -1,25 +1,25 @@ ---TEST-- -Reflection Bug #30146 (ReflectionProperty->getValue() requires instance for static property) ---SKIPIF-- - ---FILE-- -getValue(null)); - -$r->setValue(NULL, 2); -var_dump($r->getValue()); - -$r->setValue(3); -var_dump($r->getValue()); -?> -===DONE=== ---EXPECT-- -int(1) -int(2) -int(3) +--TEST-- +Reflection Bug #30146 (ReflectionProperty->getValue() requires instance for static property) +--SKIPIF-- + +--FILE-- +getValue(null)); + +$r->setValue(NULL, 2); +var_dump($r->getValue()); + +$r->setValue(3); +var_dump($r->getValue()); +?> +===DONE=== +--EXPECT-- +int(1) +int(2) +int(3) ===DONE=== \ No newline at end of file diff --git a/ext/reflection/tests/bug30148.phpt b/ext/reflection/tests/bug30148.phpt index 91bc31b65..d058aaa24 100755 --- a/ext/reflection/tests/bug30148.phpt +++ b/ext/reflection/tests/bug30148.phpt @@ -1,37 +1,37 @@ ---TEST-- -Reflection Bug #30148 (ReflectionMethod->isConstructor() fails for inherited classes) ---SKIPIF-- - ---FILE-- -isConstructor()); -var_dump($b->isConstructor()); -var_dump($c->isConstructor()); -var_dump($d->isConstructor()); -var_dump($e->isConstructor()); -?> -===DONE=== ---EXPECT-- -bool(true) -bool(false) -bool(true) -bool(false) -bool(true) +--TEST-- +Reflection Bug #30148 (ReflectionMethod->isConstructor() fails for inherited classes) +--SKIPIF-- + +--FILE-- +isConstructor()); +var_dump($b->isConstructor()); +var_dump($c->isConstructor()); +var_dump($d->isConstructor()); +var_dump($e->isConstructor()); +?> +===DONE=== +--EXPECT-- +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) ===DONE=== \ No newline at end of file diff --git a/ext/reflection/tests/bug30856.phpt b/ext/reflection/tests/bug30856.phpt index eaa6cf289..e5f06ab05 100755 --- a/ext/reflection/tests/bug30856.phpt +++ b/ext/reflection/tests/bug30856.phpt @@ -1,22 +1,22 @@ ---TEST-- -Reflection Bug #30856 (ReflectionClass::getStaticProperties segfaults) ---SKIPIF-- - ---FILE-- -getStaticProperties()); -?> -===DONE=== ---EXPECT-- -array(1) { - ["a"]=> - string(4) "test" -} -===DONE=== +--TEST-- +Reflection Bug #30856 (ReflectionClass::getStaticProperties segfaults) +--SKIPIF-- + +--FILE-- +getStaticProperties()); +?> +===DONE=== +--EXPECT-- +array(1) { + ["a"]=> + string(4) "test" +} +===DONE=== diff --git a/ext/reflection/tests/bug30961.phpt b/ext/reflection/tests/bug30961.phpt index c765e7cc8..dab07417b 100755 --- a/ext/reflection/tests/bug30961.phpt +++ b/ext/reflection/tests/bug30961.phpt @@ -1,22 +1,22 @@ ---TEST-- -Reflection Bug #30961 (Wrong linenumber in ReflectionClass getStartLine()) ---SKIPIF-- - ---FILE-- -getStartLine() . "\n"; - echo $ref2->getStartLine() . "\n"; -?> ---EXPECT-- -2 -6 +--TEST-- +Reflection Bug #30961 (Wrong linenumber in ReflectionClass getStartLine()) +--SKIPIF-- + +--FILE-- +getStartLine() . "\n"; + echo $ref2->getStartLine() . "\n"; +?> +--EXPECT-- +2 +6 diff --git a/ext/reflection/tests/bug33312.phpt b/ext/reflection/tests/bug33312.phpt index 2413a3dc3..b39ec3c6f 100755 --- a/ext/reflection/tests/bug33312.phpt +++ b/ext/reflection/tests/bug33312.phpt @@ -1,22 +1,22 @@ ---TEST-- -Reflection Bug #33312 (ReflectionParameter methods do not work correctly) ---SKIPIF-- - ---FILE-- -getMethod('bar'); - -foreach ($method->getParameters() as $parameter) { - if ($parameter->isDefaultValueAvailable()) { - print $parameter->getDefaultValue()."\n"; - } -} -?> ---EXPECT-- -bar +--TEST-- +Reflection Bug #33312 (ReflectionParameter methods do not work correctly) +--SKIPIF-- + +--FILE-- +getMethod('bar'); + +foreach ($method->getParameters() as $parameter) { + if ($parameter->isDefaultValueAvailable()) { + print $parameter->getDefaultValue()."\n"; + } +} +?> +--EXPECT-- +bar diff --git a/ext/reflection/tests/bug38942.phpt b/ext/reflection/tests/bug38942.phpt index a1ba05ba0..a02f596af 100755 --- a/ext/reflection/tests/bug38942.phpt +++ b/ext/reflection/tests/bug38942.phpt @@ -1,36 +1,36 @@ ---TEST-- -Bug #38942 (Double old-style-ctor inheritance) ---SKIPIF-- - ---FILE-- - ---EXPECTF-- -Class [ class bar extends foo ] { - @@ %sbug38942.php 6-7 - - - Constants [0] { - } - - - Static properties [0] { - } - - - Static methods [0] { - } - - - Properties [0] { - } - - - Methods [1] { - Method [ public method foo ] { - @@ %sbug38942.php 3 - 3 - } - } -} +--TEST-- +Bug #38942 (Double old-style-ctor inheritance) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Class [ class bar extends foo ] { + @@ %sbug38942.php 6-7 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ public method foo ] { + @@ %sbug38942.php 3 - 3 + } + } +} diff --git a/ext/reflection/tests/bug45139.phpt b/ext/reflection/tests/bug45139.phpt new file mode 100644 index 000000000..6aa84263c --- /dev/null +++ b/ext/reflection/tests/bug45139.phpt @@ -0,0 +1,58 @@ +--TEST-- +Bug #45139 (ReflectionProperty returns incorrect declaring class) +--FILE-- +getProperty('foo'); +var_dump($rp->getDeclaringClass()->getName()); // c + +$rc = new ReflectionClass('A'); +$rp = $rc->getProperty('foo'); +var_dump($rp->getDeclaringClass()->getName()); // A + +$rc = new ReflectionClass('B'); +$rp = $rc->getProperty('bar'); +var_dump($rp->getDeclaringClass()->getName()); // B + +$rc = new ReflectionClass('C'); +$rp = $rc->getProperty('bar'); +var_dump($rp->getDeclaringClass()->getName()); // B + +$rc = new ReflectionClass('C'); +$rp = $rc->getProperty('baz'); +var_dump($rp->getDeclaringClass()->getName()); // C + +$rc = new ReflectionClass('B'); +$rp = $rc->getProperty('baz'); +var_dump($rp->getDeclaringClass()->getName()); // B + +$rc = new ReflectionClass('C'); +$rp = $rc->getProperty('quux'); +var_dump($rp->getDeclaringClass()->getName()); // C + +?> +--EXPECT-- +string(1) "C" +string(1) "A" +string(1) "B" +string(1) "B" +string(1) "C" +string(1) "B" +string(1) "C" diff --git a/ext/reflection/tests/bug45765.phpt b/ext/reflection/tests/bug45765.phpt new file mode 100644 index 000000000..b0c1be2c4 --- /dev/null +++ b/ext/reflection/tests/bug45765.phpt @@ -0,0 +1,82 @@ +--TEST-- +Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause an error) +--FILE-- + +--EXPECTF-- +Object of class [ class foo extends foo2 ] { + @@ %s 7-21 + + - Constants [1] { + Constant [ string BAR ] { foo's bar } + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Dynamic properties [0] { + } + + - Methods [4] { + Method [ public method test ] { + @@ %s 10 - 11 + + - Parameters [1] { + Parameter #0 [ $a = 'foo's bar' ] + } + } + + Method [ public method test2 ] { + @@ %s 13 - 14 + + - Parameters [1] { + Parameter #0 [ $a = 'foobar' ] + } + } + + Method [ public method test3 ] { + @@ %s 16 - 17 + + - Parameters [1] { + Parameter #0 [ $a = 'foo's bar' ] + } + } + + Method [ public method test4 ] { + @@ %s 19 - 20 + + - Parameters [1] { + Parameter #0 [ $a = 'foobar' ] + } + } + } +} diff --git a/ext/reflection/tests/bug46064.phpt b/ext/reflection/tests/bug46064.phpt new file mode 100644 index 000000000..58b732f31 --- /dev/null +++ b/ext/reflection/tests/bug46064.phpt @@ -0,0 +1,74 @@ +--TEST-- +Bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property) +--FILE-- +z = 1000; +$o->zzz = 3; + +var_dump($h = new reflectionproperty($o, 'z')); +var_dump($h->isDefault()); +var_dump($h->isPublic()); +var_dump($h->isStatic()); +var_dump($h->getName()); +var_dump(Reflection::getModifierNames($h->getModifiers())); +var_dump($h->getValue($o)); + +print "---------------------------\n"; +try { + var_dump(new reflectionproperty($o, 'zz')); +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +var_dump(new reflectionproperty($o, 'zzz')); + +class test { + protected $a = 1; +} + +class bar extends test { + public function __construct() { + $this->foobar = 2; + $this->a = 200; + + $p = new reflectionproperty($this, 'foobar'); + var_dump($p->getValue($this), $p->isDefault(), $p->isPublic()); + } +} + +new bar; + +?> +--EXPECTF-- +object(ReflectionProperty)#2 (2) { + ["name"]=> + string(1) "z" + ["class"]=> + string(1) "x" +} +bool(false) +bool(true) +bool(false) +string(1) "z" +array(1) { + [0]=> + string(6) "public" +} +int(1000) +--------------------------- +string(30) "Property x::$zz does not exist" +object(ReflectionProperty)#3 (2) { + ["name"]=> + string(3) "zzz" + ["class"]=> + string(1) "x" +} +int(2) +bool(false) +bool(true) diff --git a/ext/reflection/tests/bug46064_2.phpt b/ext/reflection/tests/bug46064_2.phpt new file mode 100644 index 000000000..832d13c41 --- /dev/null +++ b/ext/reflection/tests/bug46064_2.phpt @@ -0,0 +1,72 @@ +--TEST-- +Bug #46064.2 (Exception when creating ReflectionProperty object on dynamicly created property) +--FILE-- +test = 2000; + + +$p = new ReflectionObject($x); +var_dump($p->getProperty('test')); + + +class bar { + public function __construct() { + $this->a = 1; + } +} + +class test extends bar { + private $b = 2; + + public function __construct() { + parent::__construct(); + + $p = new reflectionobject($this); + var_dump($h = $p->getProperty('a')); + var_dump($h->isDefault(), $h->isProtected(), $h->isPrivate(), $h->isPublic(), $h->isStatic()); + var_dump($p->getProperties()); + } +} + +new test; + +?> +--EXPECT-- +object(ReflectionProperty)#3 (2) { + ["name"]=> + string(4) "test" + ["class"]=> + string(3) "foo" +} +object(ReflectionProperty)#5 (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "test" +} +bool(false) +bool(false) +bool(false) +bool(true) +bool(false) +array(2) { + [0]=> + &object(ReflectionProperty)#6 (2) { + ["name"]=> + string(1) "b" + ["class"]=> + string(4) "test" + } + [1]=> + &object(ReflectionProperty)#7 (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "test" + } +} diff --git a/ext/reflection/tests/included4.inc b/ext/reflection/tests/included4.inc new file mode 100644 index 000000000..88947251c --- /dev/null +++ b/ext/reflection/tests/included4.inc @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/ext/reflection/tests/parameters_001.phpt b/ext/reflection/tests/parameters_001.phpt index 036f11973..62cd069b6 100755 --- a/ext/reflection/tests/parameters_001.phpt +++ b/ext/reflection/tests/parameters_001.phpt @@ -1,40 +1,40 @@ ---TEST-- -ReflectionParameter Check for parameter being optional ---SKIPIF-- - ---FILE-- -getNumberOfParameters()); -var_dump($f->getNumberOfRequiredParameters()); - -$p = new ReflectionParameter(array('Test', 'func'), 'x'); -var_dump($p->isOptional()); - -$p = new ReflectionParameter(array('Test', 'func'), 'y'); -var_dump($p->isOptional()); - -try { - $p = new ReflectionParameter(array('Test', 'func'), 'z'); - var_dump($p->isOptional()); -} -catch (Exception $e) { - var_dump($e->getMessage()); -} - -?> -===DONE=== ---EXPECT-- -int(2) -int(1) -bool(false) -bool(true) -string(54) "The parameter specified by its name could not be found" -===DONE=== +--TEST-- +ReflectionParameter Check for parameter being optional +--SKIPIF-- + +--FILE-- +getNumberOfParameters()); +var_dump($f->getNumberOfRequiredParameters()); + +$p = new ReflectionParameter(array('Test', 'func'), 'x'); +var_dump($p->isOptional()); + +$p = new ReflectionParameter(array('Test', 'func'), 'y'); +var_dump($p->isOptional()); + +try { + $p = new ReflectionParameter(array('Test', 'func'), 'z'); + var_dump($p->isOptional()); +} +catch (Exception $e) { + var_dump($e->getMessage()); +} + +?> +===DONE=== +--EXPECT-- +int(2) +int(1) +bool(false) +bool(true) +string(54) "The parameter specified by its name could not be found" +===DONE=== diff --git a/ext/reflection/tests/reflectionClass_FileInfo_error.phpt b/ext/reflection/tests/reflectionClass_FileInfo_error.phpt index a74062a3e..766cdf3b7 100644 --- a/ext/reflection/tests/reflectionClass_FileInfo_error.phpt +++ b/ext/reflection/tests/reflectionClass_FileInfo_error.phpt @@ -1,37 +1,37 @@ ---TEST-- -ReflectionClass::getFileName(), ReflectionClass::getStartLine(), ReflectionClass::getEndLine() - bad params ---FILE-- -$method()); - var_dump($rc->$method(null)); - var_dump($rc->$method('X', 0)); -} -?> ---EXPECTF-- -string(%d) "%s" - -Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 9 -NULL - -Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 10 -NULL -int(2) - -Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 9 -NULL - -Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 10 -NULL -int(2) - -Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 9 -NULL - -Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 10 +--TEST-- +ReflectionClass::getFileName(), ReflectionClass::getStartLine(), ReflectionClass::getEndLine() - bad params +--FILE-- +$method()); + var_dump($rc->$method(null)); + var_dump($rc->$method('X', 0)); +} +?> +--EXPECTF-- +string(%d) "%s" + +Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 9 +NULL + +Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 10 +NULL +int(2) + +Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 9 +NULL + +Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 10 +NULL +int(2) + +Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 9 +NULL + +Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 10 NULL \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_constructor_001.phpt b/ext/reflection/tests/reflectionClass_constructor_001.phpt index 06b68b88f..1a70fe1f5 100644 --- a/ext/reflection/tests/reflectionClass_constructor_001.phpt +++ b/ext/reflection/tests/reflectionClass_constructor_001.phpt @@ -1,33 +1,33 @@ ---TEST-- -ReflectionClass::__constructor() ---FILE-- - ---EXPECTF-- -object(ReflectionClass)#%d (1) { - ["name"]=> - string(8) "stdClass" -} -object(ReflectionClass)#%d (1) { - ["name"]=> - string(8) "stdClass" -} -object(ReflectionClass)#%d (1) { - ["name"]=> - string(10) "TrickClass" -} +--TEST-- +ReflectionClass::__constructor() +--FILE-- + +--EXPECTF-- +object(ReflectionClass)#%d (1) { + ["name"]=> + string(8) "stdClass" +} +object(ReflectionClass)#%d (1) { + ["name"]=> + string(8) "stdClass" +} +object(ReflectionClass)#%d (1) { + ["name"]=> + string(10) "TrickClass" +} diff --git a/ext/reflection/tests/reflectionClass_constructor_002.phpt b/ext/reflection/tests/reflectionClass_constructor_002.phpt index 97f1b3570..3685c639d 100644 --- a/ext/reflection/tests/reflectionClass_constructor_002.phpt +++ b/ext/reflection/tests/reflectionClass_constructor_002.phpt @@ -1,67 +1,67 @@ ---TEST-- -ReflectionClass::__constructor() - bad arguments ---FILE-- -getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass(null)); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass(true)); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass(1)); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass(array(1,2,3))); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass("stdClass", 1)); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump(new ReflectionClass("X")); -} catch (Exception $e) { - echo $e->getMessage() . "\n"; -} - -?> ---EXPECTF-- - -Warning: ReflectionClass::__construct() expects exactly 1 parameter, 0 given in %s on line 3 -object(ReflectionClass)#%d (1) { - ["name"]=> - string(0) "" -} -Class does not exist -Class 1 does not exist -Class 1 does not exist - -Notice: Array to string conversion in %s on line 27 -Class Array does not exist - -Warning: ReflectionClass::__construct() expects exactly 1 parameter, 2 given in %s on line 33 -object(ReflectionClass)#%d (1) { - ["name"]=> - string(0) "" -} +--TEST-- +ReflectionClass::__constructor() - bad arguments +--FILE-- +getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass(null)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass(true)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass(1)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass(array(1,2,3))); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass("stdClass", 1)); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + var_dump(new ReflectionClass("X")); +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +?> +--EXPECTF-- + +Warning: ReflectionClass::__construct() expects exactly 1 parameter, 0 given in %s on line 3 +object(ReflectionClass)#%d (1) { + ["name"]=> + string(0) "" +} +Class does not exist +Class 1 does not exist +Class 1 does not exist + +Notice: Array to string conversion in %s on line 27 +Class Array does not exist + +Warning: ReflectionClass::__construct() expects exactly 1 parameter, 2 given in %s on line 33 +object(ReflectionClass)#%d (1) { + ["name"]=> + string(0) "" +} Class X does not exist \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_export_basic1.phpt b/ext/reflection/tests/reflectionClass_export_basic1.phpt new file mode 100644 index 000000000..8729731f5 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_export_basic1.phpt @@ -0,0 +1,62 @@ +--TEST-- +ReflectionClass::export() - various parameters +--FILE-- + +--EXPECTF-- +Class [ class C extends A ] { + @@ %s 14-14 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [2] { + Method [ public method privf ] { + @@ %s 3 - 3 + + - Parameters [1] { + Parameter #0 [ Exception $a ] + } + } + + Method [ public method pubf ] { + @@ %s 4 - 11 + + - Parameters [8] { + Parameter #0 [ A $a ] + Parameter #1 [ $b ] + Parameter #2 [ C or NULL $c = NULL ] + Parameter #3 [ $d = '16 chars long -...' ] + Parameter #4 [ $e = '15 chars long -' ] + Parameter #5 [ $f = NULL ] + Parameter #6 [ $g = false ] + Parameter #7 [ array or NULL $h = NULL ] + } + } + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_export_basic2.phpt b/ext/reflection/tests/reflectionClass_export_basic2.phpt new file mode 100644 index 000000000..b6644883e --- /dev/null +++ b/ext/reflection/tests/reflectionClass_export_basic2.phpt @@ -0,0 +1,54 @@ +--TEST-- +ReflectionClass::export() - ensure inherited private props are hidden. +--FILE-- + +--EXPECTF-- +Class [ class c ] { + @@ %s 2-5 + + - Constants [0] { + } + + - Static properties [1] { + Property [ private static $b ] + } + + - Static methods [0] { + } + + - Properties [1] { + Property [ private $a ] + } + + - Methods [0] { + } +} + +Class [ class d extends c ] { + @@ %s 7-7 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [0] { + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getConstant_basic.phpt b/ext/reflection/tests/reflectionClass_getConstant_basic.phpt index d0909ec4f..6e051113d 100644 --- a/ext/reflection/tests/reflectionClass_getConstant_basic.phpt +++ b/ext/reflection/tests/reflectionClass_getConstant_basic.phpt @@ -1,41 +1,41 @@ ---TEST-- -ReflectionClass::getConstants() ---FILE-- -getConstant('a')); - var_dump($rc->getConstant('doesntexist')); -} -?> ---EXPECTF-- -Reflecting on class C: -string(12) "hello from C" -bool(false) -Reflecting on class D: -string(12) "hello from C" -bool(false) -Reflecting on class E: -string(12) "hello from C" -bool(false) -Reflecting on class F: -string(12) "hello from F" -bool(false) -Reflecting on class X: -bool(false) -bool(false) +--TEST-- +ReflectionClass::getConstants() +--FILE-- +getConstant('a')); + var_dump($rc->getConstant('doesntexist')); +} +?> +--EXPECTF-- +Reflecting on class C: +string(12) "hello from C" +bool(false) +Reflecting on class D: +string(12) "hello from C" +bool(false) +Reflecting on class E: +string(12) "hello from C" +bool(false) +Reflecting on class F: +string(12) "hello from F" +bool(false) +Reflecting on class X: +bool(false) +bool(false) diff --git a/ext/reflection/tests/reflectionClass_getConstant_error.phpt b/ext/reflection/tests/reflectionClass_getConstant_error.phpt index a1e300519..907d6d8b7 100644 --- a/ext/reflection/tests/reflectionClass_getConstant_error.phpt +++ b/ext/reflection/tests/reflectionClass_getConstant_error.phpt @@ -1,37 +1,37 @@ ---TEST-- -ReflectionClass::getConstant() - bad params ---FILE-- -getConstant()); -var_dump($rc->getConstant("myConst", "myConst")); -var_dump($rc->getConstant(null)); -var_dump($rc->getConstant(1)); -var_dump($rc->getConstant(1.5)); -var_dump($rc->getConstant(true)); -var_dump($rc->getConstant(array(1,2,3))); -var_dump($rc->getConstant(new C)); -?> ---EXPECTF-- -Check invalid params: - -Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 0 given in %s on line 8 -NULL - -Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 2 given in %s on line 9 -NULL -bool(false) -bool(false) -bool(false) -bool(false) - -Warning: ReflectionClass::getConstant() expects parameter 1 to be string, array given in %s on line 14 -NULL - -Warning: ReflectionClass::getConstant() expects parameter 1 to be string, object given in %s on line 15 +--TEST-- +ReflectionClass::getConstant() - bad params +--FILE-- +getConstant()); +var_dump($rc->getConstant("myConst", "myConst")); +var_dump($rc->getConstant(null)); +var_dump($rc->getConstant(1)); +var_dump($rc->getConstant(1.5)); +var_dump($rc->getConstant(true)); +var_dump($rc->getConstant(array(1,2,3))); +var_dump($rc->getConstant(new C)); +?> +--EXPECTF-- +Check invalid params: + +Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 0 given in %s on line 8 +NULL + +Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 2 given in %s on line 9 +NULL +bool(false) +bool(false) +bool(false) +bool(false) + +Warning: ReflectionClass::getConstant() expects parameter 1 to be string, array given in %s on line 14 +NULL + +Warning: ReflectionClass::getConstant() expects parameter 1 to be string, object given in %s on line 15 NULL \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getConstructor_basic.phpt b/ext/reflection/tests/reflectionClass_getConstructor_basic.phpt index 59c87ad66..f3881c56d 100644 --- a/ext/reflection/tests/reflectionClass_getConstructor_basic.phpt +++ b/ext/reflection/tests/reflectionClass_getConstructor_basic.phpt @@ -1,82 +1,82 @@ ---TEST-- -ReflectionClass::getConstructor() ---FILE-- -getConstructor(); - if ($rm != null) { - echo "Constructor of $class: " . $rm->getName() . "\n"; - } else { - echo "No constructor for $class\n"; - } - -} - -?> ---EXPECTF-- - -Strict Standards: Redefining already defined constructor for class OldAndNewCtor in %s on line 26 - -Strict Standards: %s for class NewAndOldCtor in %s on line 31 -Constructor of NewCtor: __construct -Constructor of ExtendsNewCtor: __construct -Constructor of OldCtor: OldCtor -Constructor of ExtendsOldCtor: OldCtor -Constructor of OldAndNewCtor: __construct -Constructor of NewAndOldCtor: __construct -Constructor of B: B -Constructor of C: C -Constructor of D1: __construct -Constructor of D2: C -No constructor for X +--TEST-- +ReflectionClass::getConstructor() +--FILE-- +getConstructor(); + if ($rm != null) { + echo "Constructor of $class: " . $rm->getName() . "\n"; + } else { + echo "No constructor for $class\n"; + } + +} + +?> +--EXPECTF-- + +Strict Standards: Redefining already defined constructor for class OldAndNewCtor in %s on line 26 + +Strict Standards: %s for class NewAndOldCtor in %s on line 31 +Constructor of NewCtor: __construct +Constructor of ExtendsNewCtor: __construct +Constructor of OldCtor: OldCtor +Constructor of ExtendsOldCtor: OldCtor +Constructor of OldAndNewCtor: __construct +Constructor of NewAndOldCtor: __construct +Constructor of B: B +Constructor of C: C +Constructor of D1: __construct +Constructor of D2: C +No constructor for X No constructor for Y \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getConstructor_error.phpt b/ext/reflection/tests/reflectionClass_getConstructor_error.phpt index 53d19b5ac..8892b1d6b 100644 --- a/ext/reflection/tests/reflectionClass_getConstructor_error.phpt +++ b/ext/reflection/tests/reflectionClass_getConstructor_error.phpt @@ -1,24 +1,24 @@ ---TEST-- -ReflectionClass::getConstructor() - bad params ---FILE-- -getConstructor(null)); -var_dump($rc->getConstructor('X')); -var_dump($rc->getConstructor(true)); -var_dump($rc->getConstructor(array(1,2,3))); -?> ---EXPECTF-- - -Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 4 -NULL - -Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 5 -NULL - -Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 6 -NULL - -Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 7 -NULL +--TEST-- +ReflectionClass::getConstructor() - bad params +--FILE-- +getConstructor(null)); +var_dump($rc->getConstructor('X')); +var_dump($rc->getConstructor(true)); +var_dump($rc->getConstructor(array(1,2,3))); +?> +--EXPECTF-- + +Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 4 +NULL + +Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 5 +NULL + +Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 6 +NULL + +Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 7 +NULL diff --git a/ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt b/ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt new file mode 100644 index 000000000..7813cca31 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt @@ -0,0 +1,14 @@ +--TEST-- +ReflectionClass::getExtensionName() method - basic test for getExtensionName() method +--SKIPIF-- + +--CREDITS-- +Rein Velt +#testFest Roosendaal 2008-05-10 +--FILE-- +getExtensionName()) ; +?> +--EXPECT-- +string(3) "dom" diff --git a/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt b/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt new file mode 100644 index 000000000..35372c4f8 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt @@ -0,0 +1,20 @@ +--TEST-- +ReflectionClass::getExtensionName() method - variation test for getExtensionName() +--SKIPIF-- + +--CREDITS-- +Rein Velt +#testFest Roosendaal 2008-05-10 +--FILE-- +getExtensionName()) ; +?> +--EXPECT-- +bool(false) \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getExtension_basic.phpt b/ext/reflection/tests/reflectionClass_getExtension_basic.phpt new file mode 100644 index 000000000..efc1ed8ee --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getExtension_basic.phpt @@ -0,0 +1,17 @@ +--TEST-- +ReflectionClass::getExtension() method - basic test for getExtension() method +--SKIPIF-- + +--CREDITS-- +Rein Velt +#testFest Roosendaal 2008-05-10 +--FILE-- +getExtension()) ; +?> +--EXPECTF-- +object(ReflectionExtension)#%d (1) { + ["name"]=> + string(3) "dom" +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getExtension_variation.phpt b/ext/reflection/tests/reflectionClass_getExtension_variation.phpt new file mode 100644 index 000000000..f2272777a --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getExtension_variation.phpt @@ -0,0 +1,20 @@ +--TEST-- +ReflectionClass::getExtension() method - variation test for getExtension() +--SKIPIF-- + +--CREDITS-- +Rein Velt +#testFest Roosendaal 2008-05-10 +--FILE-- +getExtension()) ; +?> +--EXPECT-- +NULL \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt b/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt new file mode 100644 index 000000000..abbaa35f5 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt @@ -0,0 +1,25 @@ +--TEST-- +ReflectionClass::getInterfaceNames() +--SKIPIF-- + +--CREDITS-- +Michelangelo van Dam +#testfest roosendaal on 2008-05-10 +--FILE-- +getInterfaceNames()); +?> +--EXPECT-- +array(2) { + [0]=> + string(3) "Foo" + [1]=> + string(3) "Bar" +} diff --git a/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt b/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt new file mode 100644 index 000000000..33a2539b9 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt @@ -0,0 +1,39 @@ +--TEST-- +ReflectionClass::getModifiers() +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher +--FILE-- +getModifiers()); +} + +dump_modifiers('a'); +dump_modifiers('b'); +dump_modifiers('c'); +dump_modifiers('d'); +dump_modifiers('e'); +dump_modifiers('f'); +dump_modifiers('g'); + +?> +--EXPECT-- +int(0) +int(32) +int(64) +int(128) +int(0) +int(128) +int(0) \ No newline at end of file diff --git a/ext/reflection/tests/reflectionClass_getParentClass.phpt b/ext/reflection/tests/reflectionClass_getParentClass.phpt new file mode 100644 index 000000000..46884ca2b --- /dev/null +++ b/ext/reflection/tests/reflectionClass_getParentClass.phpt @@ -0,0 +1,21 @@ +--TEST-- +ReflectionClass::getParentClass() +--CREDITS-- +Michelangelo van Dam +#testfest roosendaal on 2008-05-10 +--FILE-- +getParentClass()); +?> + +--EXPECTF-- +object(ReflectionClass)#%d (1) { + ["name"]=> + string(3) "Foo" +} diff --git a/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt b/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt new file mode 100644 index 000000000..49570150c --- /dev/null +++ b/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +ReflectionClass::hasConstant() +--CREDIT-- +Marc Veldman +#testfest roosendaal on 2008-05-10 +--FILE-- +hasConstant('foo')); + +//C should not have constant bar +var_dump($rc->hasConstant('bar')); + +Class C { + const foo=1; +} +?> +--EXPECTF-- +bool(true) +bool(false) diff --git a/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt b/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt new file mode 100644 index 000000000..3ef5ac920 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt @@ -0,0 +1,57 @@ +--TEST-- +ReflectionClass::hasMethod() +--CREDIT-- +Marc Veldman +#testfest roosendaal on 2008-05-10 +--FILE-- +hasMethod('publicFoo')); + +//Check if C has protected method protectedFoo +var_dump($rc->hasMethod('protectedFoo')); + +//Check if C has private method privateFoo +var_dump($rc->hasMethod('privateFoo')); + +//Check if C has static method staticFoo +var_dump($rc->hasMethod('staticFoo')); + +//C should not have method bar +var_dump($rc->hasMethod('bar')); + +//Method names are case insensitive +var_dump($rc->hasMethod('PUBLICfOO')); + +Class C { + public function publicFoo() + { + return true; + } + + protected function protectedFoo() + { + return true; + } + + private function privateFoo() + { + return true; + } + + static function staticFoo() + { + return true; + } +} +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(true) diff --git a/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt b/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt new file mode 100644 index 000000000..b3264e01e --- /dev/null +++ b/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt @@ -0,0 +1,38 @@ +--TEST-- +ReflectionClass::hasProperty() +--CREDIT-- +Marc Veldman +#testfest roosendaal on 2008-05-10 +--FILE-- +hasProperty('publicFoo')); + +//Check if C has protected property protectedFoo +var_dump($rc->hasProperty('protectedFoo')); + +//Check if C has private property privateFoo +var_dump($rc->hasProperty('privateFoo')); + +//Check if C has static property staticFoo +var_dump($rc->hasProperty('staticFoo')); + +//C should not have property bar +var_dump($rc->hasProperty('bar')); + +Class C { + public $publicFoo; + protected $protectedFoo; + private $privateFoo; + public static $staticFoo; +} +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) diff --git a/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt b/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt new file mode 100644 index 000000000..7a3d577ef --- /dev/null +++ b/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +ReflectionClass::isAbstract() method +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher +#testfest roosendaal on 2008-05-10 +--FILE-- +isAbstract()); +var_dump($abstractClass->isAbstract()); + +?> +--EXPECT-- +bool(false) +bool(true) diff --git a/ext/reflection/tests/reflectionClass_isFinal_basic.phpt b/ext/reflection/tests/reflectionClass_isFinal_basic.phpt new file mode 100644 index 000000000..efa131724 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_isFinal_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +ReflectionClass::isFinal() method +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher +#testfest roosendaal on 2008-05-10 +--FILE-- +isFinal()); +var_dump($finalClass->isFinal()); + +?> +--EXPECT-- +bool(false) +bool(true) diff --git a/ext/reflection/tests/reflectionClass_isInterface_basic.phpt b/ext/reflection/tests/reflectionClass_isInterface_basic.phpt new file mode 100644 index 000000000..2870725e8 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_isInterface_basic.phpt @@ -0,0 +1,27 @@ +--TEST-- +ReflectionClass::isInterface() method +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher +#testfest roosendaal on 2008-05-10 +--FILE-- +isInterface()); +var_dump($reflectionClass2->isInterface()); +var_dump($reflectionClass3->isInterface()); + +?> +--EXPECT-- +bool(true) +bool(false) +bool(true) diff --git a/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt b/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt new file mode 100644 index 000000000..3e1228af2 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt @@ -0,0 +1,36 @@ +--TEST-- +ReflectionClass::isIterateable() basic +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher , Marc Veldman +--FILE-- +isIterateable()); +} + +$classes = array("ArrayObject", "IteratorClass", "DerivedClass", "NonIterator"); +foreach ($classes as $class) { + echo "Is $class iterateable? "; + dump_iterateable($class); +} +?> +--EXPECT-- +Is ArrayObject iterateable? bool(true) +Is IteratorClass iterateable? bool(true) +Is DerivedClass iterateable? bool(true) +Is NonIterator iterateable? bool(false) diff --git a/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt b/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt new file mode 100644 index 000000000..6d737bb89 --- /dev/null +++ b/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt @@ -0,0 +1,27 @@ +--TEST-- +ReflectionClass::isIterateable() variations +--SKIPIF-- + +--CREDITS-- +Felix De Vliegher +--FILE-- +isIterateable()); +} + +$basicClass = new BasicClass(); +$stdClass = new StdClass(); + +dump_iterateable($basicClass); +dump_iterateable($stdClass); + +?> +--EXPECT-- +bool(false) +bool(false) diff --git a/ext/reflection/tests/reflectionObject___toString_basic1.phpt b/ext/reflection/tests/reflectionObject___toString_basic1.phpt new file mode 100644 index 000000000..fefa220c9 --- /dev/null +++ b/ext/reflection/tests/reflectionObject___toString_basic1.phpt @@ -0,0 +1,36 @@ +--TEST-- +ReflectionObject::__toString() : very basic test with no dynamic properties +--FILE-- + +--EXPECTF-- +Object of class [ class Foo ] { + @@ %s 3-5 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [1] { + Property [ public $bar ] + } + + - Dynamic properties [0] { + } + + - Methods [0] { + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionObject___toString_basic2.phpt b/ext/reflection/tests/reflectionObject___toString_basic2.phpt new file mode 100644 index 000000000..332386afd --- /dev/null +++ b/ext/reflection/tests/reflectionObject___toString_basic2.phpt @@ -0,0 +1,39 @@ +--TEST-- +ReflectionObject::__toString() : very basic test with dynamic properties +--FILE-- +dynProp = 'hello'; +$f->dynProp2 = 'hello again'; +echo new ReflectionObject($f); + +?> +--EXPECTF-- +Object of class [ class Foo ] { + @@ %s 3-5 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [1] { + Property [ public $bar ] + } + + - Dynamic properties [2] { + Property [ public $dynProp ] + Property [ public $dynProp2 ] + } + + - Methods [0] { + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionObject_export_basic1.phpt b/ext/reflection/tests/reflectionObject_export_basic1.phpt new file mode 100644 index 000000000..f7dfef867 --- /dev/null +++ b/ext/reflection/tests/reflectionObject_export_basic1.phpt @@ -0,0 +1,36 @@ +--TEST-- +ReflectionObject::export() : very basic test with no dynamic properties +--FILE-- + +--EXPECTF-- +Object of class [ class Foo ] { + @@ %s 3-5 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [1] { + Property [ public $bar ] + } + + - Dynamic properties [0] { + } + + - Methods [0] { + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionObject_export_basic2.phpt b/ext/reflection/tests/reflectionObject_export_basic2.phpt new file mode 100644 index 000000000..277f06eaf --- /dev/null +++ b/ext/reflection/tests/reflectionObject_export_basic2.phpt @@ -0,0 +1,39 @@ +--TEST-- +ReflectionObject::export() : very basic test with dynamic properties +--FILE-- +dynProp = 'hello'; +$f->dynProp2 = 'hello again'; +ReflectionObject::export($f); + +?> +--EXPECTF-- +Object of class [ class Foo ] { + @@ %s 3-5 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [1] { + Property [ public $bar ] + } + + - Dynamic properties [2] { + Property [ public $dynProp ] + Property [ public $dynProp2 ] + } + + - Methods [0] { + } +} \ No newline at end of file diff --git a/ext/reflection/tests/reflectionObject_export_basic3.phpt b/ext/reflection/tests/reflectionObject_export_basic3.phpt new file mode 100644 index 000000000..7c1da34c9 --- /dev/null +++ b/ext/reflection/tests/reflectionObject_export_basic3.phpt @@ -0,0 +1,38 @@ +--TEST-- +ReflectionObject::export() - ensure dynamic property with same name as inherited private property is shown. +--FILE-- +p = 'value'; +ReflectionObject::export($Obj) +?> +--EXPECTF-- +Object of class [ class D extends C ] { + @@ %s 6-7 + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Dynamic properties [0] { + } + + - Methods [0] { + } +} + diff --git a/ext/reflection/tests/reflectionParameter_invalidMethodInConstructor.phpt b/ext/reflection/tests/reflectionParameter_invalidMethodInConstructor.phpt new file mode 100644 index 000000000..3118c17be --- /dev/null +++ b/ext/reflection/tests/reflectionParameter_invalidMethodInConstructor.phpt @@ -0,0 +1,31 @@ +--TEST-- +ReflectionParameter::__construct(): Invalid method as constructor +--FILE-- +getMessage ()."\n"; } + +// Invalid class method +try { + new ReflectionParameter (array ('C', 'b'), 0); +} catch (ReflectionException $e) { echo $e->getMessage ()."\n"; } + +// Invalid object method +try { + new ReflectionParameter (array (new C, 'b'), 0); +} catch (ReflectionException $e) { echo $e->getMessage ()."\n"; } + +echo "Done.\n"; + +class C { +} + +?> +--EXPECTF-- +Class A does not exist +Method C::b() does not exist +Method C::b() does not exist +Done. diff --git a/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt b/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt new file mode 100644 index 000000000..d61480377 --- /dev/null +++ b/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt @@ -0,0 +1,58 @@ +--TEST-- +ReflectionProperty::__construct(): ensure inherited private props can't be accessed through ReflectionProperty. +--FILE-- +getMessage(); + } + } +} + +class D extends C{ + static function testFromD() { + try { + $rp = new ReflectionProperty("D", "p"); + var_dump($rp); + } catch (Exception $e) { + echo $e->getMessage(); + } + } +} + +echo "--> Reflect inherited private from global scope:\n"; +try { + $rp = new ReflectionProperty("D", "p"); + var_dump($rp); +} catch (Exception $e) { + echo $e->getMessage(); +} + +echo "\n\n--> Reflect inherited private from declaring scope:\n"; +C::testFromC(); + +echo "\n\n--> Reflect inherited private from declaring scope via subclass:\n"; +D::testFromC(); + +echo "\n\n--> Reflect inherited private from subclass:\n"; +D::testFromD(); +?> +--EXPECTF-- +--> Reflect inherited private from global scope: +Property D::$p does not exist + +--> Reflect inherited private from declaring scope: +Property D::$p does not exist + +--> Reflect inherited private from declaring scope via subclass: +Property D::$p does not exist + +--> Reflect inherited private from subclass: +Property D::$p does not exist \ No newline at end of file diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index 290c0e286..d9034884e 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_files.c,v 1.100.2.3.2.11 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_files.c,v 1.100.2.3.2.12 2008/12/31 11:17:43 sebastian Exp $ */ #include "php.h" diff --git a/ext/session/mod_files.h b/ext/session/mod_files.h index 3fc0a3a01..5f3a7db76 100644 --- a/ext/session/mod_files.h +++ b/ext/session/mod_files.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_files.h,v 1.11.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_files.h,v 1.11.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef MOD_FILES_H #define MOD_FILES_H diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c index b3f593d7f..f6a5f2190 100644 --- a/ext/session/mod_mm.c +++ b/ext/session/mod_mm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_mm.c,v 1.46.2.1.2.6 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_mm.c,v 1.46.2.1.2.7 2008/12/31 11:17:43 sebastian Exp $ */ #include "php.h" diff --git a/ext/session/mod_mm.h b/ext/session/mod_mm.h index 98c44c18c..04e998b38 100644 --- a/ext/session/mod_mm.h +++ b/ext/session/mod_mm.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_mm.h,v 1.12.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_mm.h,v 1.12.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef MOD_MM_H #define MOD_MM_H diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c index d344feef7..4f8686aa9 100644 --- a/ext/session/mod_user.c +++ b/ext/session/mod_user.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_user.c,v 1.29.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_user.c,v 1.29.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #include "php.h" #include "php_session.h" diff --git a/ext/session/mod_user.h b/ext/session/mod_user.h index c7709c787..e04d3f5fd 100644 --- a/ext/session/mod_user.h +++ b/ext/session/mod_user.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mod_user.h,v 1.14.2.1.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: mod_user.h,v 1.14.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef MOD_USER_H #define MOD_USER_H diff --git a/ext/session/php_session.h b/ext/session/php_session.h index 8ff826036..b69e98c46 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_session.h,v 1.101.2.2.2.6 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_session.h,v 1.101.2.2.2.7 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SESSION_H #define PHP_SESSION_H diff --git a/ext/session/session.c b/ext/session/session.c index 520c820f3..9e475296d 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session.c,v 1.417.2.8.2.42 2008/04/29 14:42:38 scottmac Exp $ */ +/* $Id: session.c,v 1.417.2.8.2.46 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -40,7 +40,7 @@ #include "ext/standard/md5.h" #include "ext/standard/sha1.h" #include "ext/standard/php_var.h" -#include "ext/standard/datetime.h" +#include "ext/date/php_date.h" #include "ext/standard/php_lcg.h" #include "ext/standard/url_scanner_ex.h" #include "ext/standard/php_rand.h" /* for RAND_MAX */ @@ -1116,7 +1116,7 @@ static void php_session_send_cookie(TSRMLS_D) t = tv.tv_sec + PS(cookie_lifetime); if (t > 0) { - date_fmt = php_std_date(t TSRMLS_CC); + date_fmt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC); smart_str_appends(&ncookie, COOKIE_EXPIRES); smart_str_appends(&ncookie, date_fmt); efree(date_fmt); @@ -1509,6 +1509,15 @@ PHP_FUNCTION(session_set_save_handler) zend_alter_ini_entry("session.save_handler", sizeof("session.save_handler"), "user", sizeof("user")-1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME); + mdata = PS(mod_data); + + if (mdata) { + for (i = 0; i < 6; i++) { + zval_ptr_dtor(&mdata->names[i]); + } + efree(mdata); + } + mdata = emalloc(sizeof(*mdata)); for (i = 0; i < 6; i++) { @@ -1916,6 +1925,21 @@ PHP_RINIT_FUNCTION(session) } } + if (PS(serializer) == NULL) { + char *value; + + value = zend_ini_string("session.serialize_handler", sizeof("session.serialize_handler"), 0); + if (value) { + PS(serializer) = _php_find_ps_serializer(value TSRMLS_CC); + } + } + + if (PS(mod) == NULL || PS(serializer) == NULL) { + /* current status is unusable */ + PS(session_status) = php_session_disabled; + return SUCCESS; + } + if (PS(auto_start)) { php_session_start(TSRMLS_C); } diff --git a/ext/session/tests/session_encode_variation5.phpt b/ext/session/tests/session_encode_variation5.phpt index fc408847b..9356489d1 100644 --- a/ext/session/tests/session_encode_variation5.phpt +++ b/ext/session/tests/session_encode_variation5.phpt @@ -24,6 +24,9 @@ $_SESSION["data"] = &$array; var_dump(session_encode()); var_dump(session_destroy()); +$array["foo"] = null; +$array["blah"] = null; + echo "Done"; ob_end_flush(); ?> diff --git a/ext/session/tests/session_get_cookie_params_basic.phpt b/ext/session/tests/session_get_cookie_params_basic.phpt index 5cadc7947..e984f556e 100644 --- a/ext/session/tests/session_get_cookie_params_basic.phpt +++ b/ext/session/tests/session_get_cookie_params_basic.phpt @@ -2,6 +2,12 @@ Test session_get_cookie_params() function : basic functionality --SKIPIF-- +--INI-- +session.cookie_lifetime=0 +session.cookie_path="/" +session.cookie_domain="" +session.cookie_secure=0 +session.cookie_httponly=0 --FILE-- +--INI-- +session.cookie_lifetime=0 +session.cookie_path="/" +session.cookie_domain="" +session.cookie_secure=0 +session.cookie_httponly=0 --FILE-- +--INI-- +session.hash_function=0 --FILE-- +--INI-- +session.hash_function=0 --FILE-- +--INI-- +session.hash_function=0 --FILE-- --CLEAN-- -$directory = dirname(__FILE__); -$sessions = ($directory."/sessions"); +$initdir = getcwd(); +$sessions = ($initdir."/sessions"); var_dump(rmdir($sessions)); --EXPECTF-- *** Testing session_save_path() : variation *** diff --git a/ext/shmop/php_shmop.h b/ext/shmop/php_shmop.h index 53b27d5c3..c1a90a473 100644 --- a/ext/shmop/php_shmop.h +++ b/ext/shmop/php_shmop.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/shmop/shmop.c b/ext/shmop/shmop.c index 85bd89968..a2c18a9d6 100644 --- a/ext/shmop/shmop.c +++ b/ext/shmop/shmop.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP version 4 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Ilia Alshanetsky | +----------------------------------------------------------------------+ */ -/* $Id: shmop.c,v 1.31.2.2.2.6 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: shmop.c,v 1.31.2.2.2.7 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/simplexml/php_simplexml.h b/ext/simplexml/php_simplexml.h index 34d371c35..a988b782a 100644 --- a/ext/simplexml/php_simplexml.h +++ b/ext/simplexml/php_simplexml.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_simplexml.h,v 1.20.2.2.2.4 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_simplexml.h,v 1.20.2.2.2.5 2008/12/31 11:17:43 sebastian Exp $ */ #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 9f01afb31..8743c3ecb 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_simplexml_exports.h,v 1.3.2.3.2.2 2007/12/31 07:20:10 sebastian Exp $ */ +/* $Id: php_simplexml_exports.h,v 1.3.2.3.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SIMPLEXML_EXPORTS_H #define PHP_SIMPLEXML_EXPORTS_H diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 42020aa9e..489f37e55 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.151.2.22.2.39 2008/03/20 16:48:45 rrichards Exp $ */ +/* $Id: simplexml.c,v 1.151.2.22.2.46 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -695,11 +695,12 @@ static zval** sxe_property_get_adr(zval *object, zval *member TSRMLS_DC) /* {{{ convert_to_string(member); name = Z_STRVAL_P(member); node = sxe_get_element_by_name(sxe, node, &name, &type TSRMLS_CC); - if (!node) { - sxe_prop_dim_write(object, member, NULL, 1, 0, &node TSRMLS_CC); - type = SXE_ITER_NONE; - name = NULL; + if (node) { + return NULL; } + sxe_prop_dim_write(object, member, NULL, 1, 0, &node TSRMLS_CC); + type = SXE_ITER_NONE; + name = NULL; MAKE_STD_ZVAL(return_value); _node_as_zval(sxe, node, return_value, type, name, sxe->iter.nsprefix, sxe->iter.isprefix TSRMLS_CC); @@ -799,7 +800,7 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend while (node) { xmlNodePtr nnext; nnext = node->next; - if (!xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) { + if ((node->type == XML_ELEMENT_NODE) && !xmlStrcmp(node->name, (xmlChar *)Z_STRVAL_P(member))) { break; } node = nnext; @@ -1100,9 +1101,13 @@ static HashTable * sxe_properties_get(zval *object TSRMLS_DC) SKIP_TEXT(node); } else { if (node->type == XML_TEXT_NODE) { - MAKE_STD_ZVAL(value); - ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node, 1), 0); - zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + const xmlChar *cur = node->content; + + if (*cur != 0) { + MAKE_STD_ZVAL(value); + ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node, 1), 0); + zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL); + } goto next_iter; } } @@ -1228,7 +1233,7 @@ SXE_METHOD(xpath) if (nodeptr->type == XML_TEXT_NODE) { _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } else if (nodeptr->type == XML_ATTRIBUTE_NODE) { - _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, NULL, 0 TSRMLS_CC); + _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ? (xmlChar *)nodeptr->ns->href : NULL, 0 TSRMLS_CC); } else { _node_as_zval(sxe, nodeptr, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } @@ -1322,7 +1327,7 @@ SXE_METHOD(asXML) if (node) { if (node->parent && (XML_DOCUMENT_NODE == node->parent->type)) { - xmlDocDumpMemory((xmlDocPtr) sxe->document->ptr, &strval, &strval_len); + xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, ((xmlDocPtr) sxe->document->ptr)->encoding); RETVAL_STRINGL((char *)strval, strval_len, 1); xmlFree(strval); } else { @@ -2445,7 +2450,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: 1.151.2.22.2.39 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22.2.46 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled"); diff --git a/ext/simplexml/tests/bug45553.phpt b/ext/simplexml/tests/bug45553.phpt new file mode 100644 index 000000000..37a46f427 --- /dev/null +++ b/ext/simplexml/tests/bug45553.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #45553 (Using XPath to return values for attributes with a namespace does not work) +--FILE-- + + test1 + test2 + +XML; + +$x = simplexml_load_string($xml); +$x->registerXPathNamespace("a", "http://a"); + +$atts = $x->xpath("/xml/data/@a:label"); +echo $atts[0] . "\n"; +$atts = $x->xpath("/xml/a:data"); +echo $atts[0]->attributes() . "\n"; +$atts = $x->xpath("/xml/a:data/@a:label"); +echo $atts[0] . "\n"; +$atts = $x->xpath("/xml/a:data/@label"); +echo $atts[0] . "\n"; +$atts = $x->xpath("/xml/data/@label"); +echo $atts[0] . "\n"; +?> +--EXPECTF-- +I am A +I am a:Nothing +I am a:A +I am a:Nothing +I am Nothing \ No newline at end of file diff --git a/ext/simplexml/tests/bug46003.phpt b/ext/simplexml/tests/bug46003.phpt new file mode 100644 index 000000000..a10b01872 --- /dev/null +++ b/ext/simplexml/tests/bug46003.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #46003 (isset on nonexisting nodes return unexpected results) +--FILE-- + +

Test

+ + + + + +XML; + +$x = simplexml_load_string($xml); + +var_dump(isset($x->p)); +var_dump(isset($x->p->o)); +var_dump(isset($x->o->yy)); +var_dump(isset($x->o->zz)); +var_dump(isset($x->o->text)); +var_dump(isset($x->o->xx)); +?> +--EXPECTF-- +bool(true) +bool(false) +bool(true) +bool(false) +bool(false) +bool(true) \ No newline at end of file diff --git a/ext/simplexml/tests/bug46047.phpt b/ext/simplexml/tests/bug46047.phpt new file mode 100644 index 000000000..37f31cdeb --- /dev/null +++ b/ext/simplexml/tests/bug46047.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #46047 (SimpleXML converts empty nodes into object with nested array) +--FILE-- +', + LIBXML_NOCDATA); +print_r($xml); + +$xml = new SimpleXMLElement(''); +print_r($xml); + +$xml = new SimpleXMLElement(''); +print_r($xml); +?> +--EXPECTF-- +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) +SimpleXMLElement Object +( + [bar] => SimpleXMLElement Object + ( + ) + + [baz] => SimpleXMLElement Object + ( + ) + +) \ No newline at end of file diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h index b4a4757f0..a98af8b2e 100644 --- a/ext/snmp/php_snmp.h +++ b/ext/snmp/php_snmp.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_snmp.h,v 1.25.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_snmp.h,v 1.25.2.1.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SNMP_H #define PHP_SNMP_H diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 7bbe8f0cb..7c4d0a1ed 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: snmp.c,v 1.106.2.2.2.6 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: snmp.c,v 1.106.2.2.2.8 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -417,13 +417,13 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, while (keepwalking) { keepwalking = 0; if ((st == SNMP_CMD_GET) || (st == SNMP_CMD_GETNEXT)) { - pdu = snmp_pdu_create((st == SNMP_CMD_GET) ? SNMP_MSG_GET : SNMP_MSG_GETNEXT); name_length = MAX_OID_LEN; if (!snmp_parse_oid(objid, name, &name_length)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid object identifier: %s", objid); snmp_close(ss); RETURN_FALSE; } + pdu = snmp_pdu_create((st == SNMP_CMD_GET) ? SNMP_MSG_GET : SNMP_MSG_GETNEXT); snmp_add_null_var(pdu, name, name_length); } else if (st == SNMP_CMD_SET) { pdu = snmp_pdu_create(SNMP_MSG_SET); @@ -434,6 +434,7 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st, sprint_objid(buf, name, name_length); #endif php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not add variable: %s %c %s", buf, type, value); + snmp_free_pdu(pdu); snmp_close(ss); RETURN_FALSE; } @@ -467,11 +468,13 @@ retry: *return_value = *snmpval; zval_copy_ctor(return_value); zval_ptr_dtor(&snmpval); + snmp_free_pdu(response); snmp_close(ss); return; } else if (st == SNMP_CMD_GETNEXT) { *return_value = *snmpval; zval_copy_ctor(return_value); + snmp_free_pdu(response); snmp_close(ss); return; } else if (st == SNMP_CMD_WALK) { @@ -510,23 +513,28 @@ retry: } if (st == SNMP_CMD_GET) { if ((pdu = snmp_fix_pdu(response, SNMP_MSG_GET)) != NULL) { + snmp_free_pdu(response); goto retry; } } else if (st == SNMP_CMD_SET) { if ((pdu = snmp_fix_pdu(response, SNMP_MSG_SET)) != NULL) { + snmp_free_pdu(response); goto retry; } } else if (st == SNMP_CMD_GETNEXT) { if ((pdu = snmp_fix_pdu(response, SNMP_MSG_GETNEXT)) != NULL) { + snmp_free_pdu(response); goto retry; } } else if (st >= SNMP_CMD_WALK) { /* Here we do walks. */ if ((pdu = snmp_fix_pdu(response, ((session->version == SNMP_VERSION_1) ? SNMP_MSG_GETNEXT : SNMP_MSG_GETBULK))) != NULL) { + snmp_free_pdu(response); goto retry; } } + snmp_free_pdu(response); snmp_close(ss); if (st == SNMP_CMD_WALK || st == SNMP_CMD_REALWALK) { zval_dtor(return_value); diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index eac079ac4..d39d1deb9 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_encoding.c,v 1.103.2.21.2.39 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_encoding.c,v 1.103.2.21.2.46 2009/01/26 11:09:13 dmitry Exp $ */ #include @@ -360,6 +360,7 @@ static zend_bool soap_check_xml_ref(zval **data, xmlNodePtr node TSRMLS_DC) static xmlNodePtr master_to_xml_int(encodePtr encode, zval *data, int style, xmlNodePtr parent, int check_class_map) { xmlNodePtr node = NULL; + int add_type = 0; TSRMLS_FETCH(); /* Special handling of class SoapVar */ @@ -446,20 +447,21 @@ static xmlNodePtr master_to_xml_int(encodePtr encode, zval *data, int style, xml zend_binary_strncasecmp(ce->name, ce->name_length, Z_STRVAL_PP(tmp), ce->name_length, ce->name_length) == 0 && zend_hash_get_current_key_ex(SOAP_GLOBAL(class_map), &type_name, &type_len, &idx, 0, &pos) == HASH_KEY_IS_STRING) { - /* TODO: namespace isn't stored */ - encodePtr enc = NULL; - if (SOAP_GLOBAL(sdl)) { - enc = get_encoder(SOAP_GLOBAL(sdl), SOAP_GLOBAL(sdl)->target_ns, type_name); - } - if (enc) { - encode = enc; - } else if (SOAP_GLOBAL(sdl)) { - enc = find_encoder_by_type_name(SOAP_GLOBAL(sdl), type_name); - if (enc) { - encode = enc; - } - } - break; + /* TODO: namespace isn't stored */ + encodePtr enc = NULL; + if (SOAP_GLOBAL(sdl)) { + enc = get_encoder(SOAP_GLOBAL(sdl), SOAP_GLOBAL(sdl)->target_ns, type_name); + if (!enc) { + enc = find_encoder_by_type_name(SOAP_GLOBAL(sdl), type_name); + } + } + if (enc) { + if (encode != enc && style == SOAP_LITERAL) { + add_type = 1; + } + encode = enc; + } + break; } } } @@ -484,6 +486,9 @@ static xmlNodePtr master_to_xml_int(encodePtr encode, zval *data, int style, xml } if (encode->to_xml) { node = encode->to_xml(&encode->details, data, style, parent); + if (add_type) { + set_ns_and_type(node, &encode->details); + } } } return node; @@ -1014,7 +1019,15 @@ static zval *to_zval_double(encodeTypePtr type, xmlNodePtr data) Z_DVAL_P(ret) = dval; break; default: - soap_error0(E_ERROR, "Encoding: Violation of encoding rules"); + if (strncasecmp((char*)data->children->content, "NaN", sizeof("NaN")-1) == 0) { + ZVAL_DOUBLE(ret, php_get_nan()); + } else if (strncasecmp((char*)data->children->content, "INF", sizeof("INF")-1) == 0) { + ZVAL_DOUBLE(ret, php_get_inf()); + } else if (strncasecmp((char*)data->children->content, "-INF", sizeof("-INF")-1) == 0) { + ZVAL_DOUBLE(ret, -php_get_inf()); + } else { + soap_error0(E_ERROR, "Encoding: Violation of encoding rules"); + } } } else { soap_error0(E_ERROR, "Encoding: Violation of encoding rules"); @@ -1406,7 +1419,7 @@ static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_e sdlPtr sdl; sdlTypePtr sdlType = type->sdl_type; zend_class_entry *ce = ZEND_STANDARD_CLASS_DEF_PTR; - zend_bool redo_any = 0; + zval *redo_any = NULL; TSRMLS_FETCH(); if (pce) { @@ -1478,10 +1491,7 @@ static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_e if (soap_check_xml_ref(&ret, data TSRMLS_CC)) { return ret; } - if (get_zval_property(ret, "any" TSRMLS_CC) != NULL) { - unset_zval_property(ret, "any" TSRMLS_CC); - redo_any = 1; - } + redo_any = get_zval_property(ret, "any" TSRMLS_CC); if (Z_TYPE_P(ret) == IS_OBJECT && ce != ZEND_STANDARD_CLASS_DEF_PTR) { zend_object *zobj = zend_objects_get_address(ret TSRMLS_CC); zobj->ce = ce; @@ -1507,10 +1517,17 @@ static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_e object_init_ex(ret, ce); } if (sdlType->model) { + if (redo_any) { + redo_any->refcount++; + unset_zval_property(ret, "any" TSRMLS_CC); + } model_to_zval_object(ret, sdlType->model, data, sdl TSRMLS_CC); - if (redo_any && get_zval_property(ret, "any" TSRMLS_CC) == NULL) { - model_to_zval_any(ret, data->children TSRMLS_CC); - } + if (redo_any) { + if (get_zval_property(ret, "any" TSRMLS_CC) == NULL) { + model_to_zval_any(ret, data->children TSRMLS_CC); + } + zval_ptr_dtor(&redo_any); + } } if (sdlType->attributes) { sdlAttributePtr *attr; @@ -1615,6 +1632,13 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval * encodePtr enc; data = get_zval_property(object, model->u.element->name TSRMLS_CC); + if (data && + Z_TYPE_P(data) == IS_NULL && + !model->u.element->nillable && + model->min_occurs > 0 && + !strict) { + return 0; + } if (data) { enc = model->u.element->encode; if ((model->max_occurs == -1 || model->max_occurs > 1) && @@ -2638,33 +2662,32 @@ static xmlNodePtr to_xml_map(encodeTypePtr type, zval *data, int style, xmlNodeP ulong int_val; zend_hash_get_current_data(data->value.ht, (void **)&temp_data); - if (Z_TYPE_PP(temp_data) != IS_NULL) { - item = xmlNewNode(NULL, BAD_CAST("item")); - xmlAddChild(xmlParam, item); - key = xmlNewNode(NULL, BAD_CAST("key")); - xmlAddChild(item,key); - if (zend_hash_get_current_key(data->value.ht, &key_val, &int_val, FALSE) == HASH_KEY_IS_STRING) { - if (style == SOAP_ENCODED) { - set_xsi_type(key, "xsd:string"); - } - xmlNodeSetContent(key, BAD_CAST(key_val)); - } else { - smart_str tmp = {0}; - smart_str_append_long(&tmp, int_val); - smart_str_0(&tmp); - - if (style == SOAP_ENCODED) { - set_xsi_type(key, "xsd:int"); - } - xmlNodeSetContentLen(key, BAD_CAST(tmp.c), tmp.len); - - smart_str_free(&tmp); + item = xmlNewNode(NULL, BAD_CAST("item")); + xmlAddChild(xmlParam, item); + key = xmlNewNode(NULL, BAD_CAST("key")); + xmlAddChild(item,key); + if (zend_hash_get_current_key(data->value.ht, &key_val, &int_val, FALSE) == HASH_KEY_IS_STRING) { + if (style == SOAP_ENCODED) { + set_xsi_type(key, "xsd:string"); } + xmlNodeSetContent(key, BAD_CAST(key_val)); + } else { + smart_str tmp = {0}; + smart_str_append_long(&tmp, int_val); + smart_str_0(&tmp); - xparam = master_to_xml(get_conversion((*temp_data)->type), (*temp_data), style, item); + if (style == SOAP_ENCODED) { + set_xsi_type(key, "xsd:int"); + } + xmlNodeSetContentLen(key, BAD_CAST(tmp.c), tmp.len); - xmlNodeSetName(xparam, BAD_CAST("value")); + smart_str_free(&tmp); } + + xparam = master_to_xml(get_conversion((*temp_data)->type), (*temp_data), style, item); + + xmlNodeSetName(xparam, BAD_CAST("value")); + zend_hash_move_forward(data->value.ht); } } @@ -2856,7 +2879,7 @@ static xmlNodePtr to_xml_datetime_ex(encodeTypePtr type, zval *data, char *forma #ifdef HAVE_TM_GMTOFF snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", (ta->tm_gmtoff < 0) ? '-' : '+', abs(ta->tm_gmtoff / 3600), abs( (ta->tm_gmtoff % 3600) / 60 )); #else -# ifdef __CYGWIN__ +# if defined(__CYGWIN__) || defined(NETWARE) snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", ((ta->tm_isdst ? _timezone - 3600:_timezone)>0)?'-':'+', abs((ta->tm_isdst ? _timezone - 3600 : _timezone) / 3600), abs(((ta->tm_isdst ? _timezone - 3600 : _timezone) % 3600) / 60)); # else snprintf(tzbuf, sizeof(tzbuf), "%c%02d:%02d", ((ta->tm_isdst ? timezone - 3600:timezone)>0)?'-':'+', abs((ta->tm_isdst ? timezone - 3600 : timezone) / 3600), abs(((ta->tm_isdst ? timezone - 3600 : timezone) % 3600) / 60)); diff --git a/ext/soap/php_encoding.h b/ext/soap/php_encoding.h index 48ae6992d..56f02a9bf 100644 --- a/ext/soap/php_encoding.h +++ b/ext/soap/php_encoding.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_encoding.h,v 1.38.2.3.2.5 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_encoding.h,v 1.38.2.3.2.6 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_ENCODING_H #define PHP_ENCODING_H diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c index 19aaa53a5..4fe7dfc9d 100644 --- a/ext/soap/php_http.c +++ b/ext/soap/php_http.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_http.c,v 1.77.2.11.2.15 2008/04/08 14:11:49 jorton Exp $ */ +/* $Id: php_http.c,v 1.77.2.11.2.17 2009/01/19 21:57:45 iliaa Exp $ */ #include "php_soap.h" #include "ext/standard/base64.h" @@ -438,7 +438,11 @@ try_again: smart_str_appendl(&soap_headers, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp)); smart_str_append_const(&soap_headers, "\r\n"); } - } else{ + } else if (FG(user_agent)) { + smart_str_append_const(&soap_headers, "User-Agent: "); + smart_str_appends(&soap_headers, FG(user_agent)); + smart_str_append_const(&soap_headers, "\r\n"); + } else { smart_str_append_const(&soap_headers, "User-Agent: PHP-SOAP/"PHP_VERSION"\r\n"); } diff --git a/ext/soap/php_http.h b/ext/soap/php_http.h index 5dec5a344..536a10bb8 100644 --- a/ext/soap/php_http.h +++ b/ext/soap/php_http.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_http.h,v 1.16.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_http.h,v 1.16.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #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 18e9698c4..d2883e61c 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_packet_soap.c,v 1.42.2.1.2.5 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_packet_soap.c,v 1.42.2.1.2.6 2008/12/31 11:17:43 sebastian Exp $ */ #include "php_soap.h" diff --git a/ext/soap/php_packet_soap.h b/ext/soap/php_packet_soap.h index 2a9712eb2..f358aa978 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_packet_soap.h,v 1.10.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_packet_soap.h,v 1.10.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #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 55bc9e66b..8b4f8c992 100644 --- a/ext/soap/php_schema.c +++ b/ext/soap/php_schema.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_schema.c,v 1.58.2.6.2.7 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_schema.c,v 1.58.2.6.2.8 2008/12/31 11:17:43 sebastian Exp $ */ #include "php_soap.h" #include "libxml/uri.h" diff --git a/ext/soap/php_schema.h b/ext/soap/php_schema.h index 17cab24c7..32198959e 100644 --- a/ext/soap/php_schema.h +++ b/ext/soap/php_schema.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_schema.h,v 1.13.2.2.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_schema.h,v 1.13.2.2.2.3 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SCHEMA_H #define PHP_SCHEMA_H diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index 8e2475898..78ef3ddf2 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_sdl.c,v 1.88.2.12.2.10 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_sdl.c,v 1.88.2.12.2.13 2008/12/31 11:17:43 sebastian Exp $ */ #include "php_soap.h" #include "ext/libxml/php_libxml.h" @@ -240,7 +240,12 @@ static void load_wsdl_ex(zval *this_ptr, char *struri, sdlCtx *ctx, int include wsdl = soap_xmlParseFile(struri TSRMLS_CC); if (!wsdl) { - soap_error1(E_ERROR, "Parsing WSDL: Couldn't load from '%s'", struri); + xmlErrorPtr xmlErrorPtr = xmlGetLastError(); + if (xmlErrorPtr) { + soap_error2(E_ERROR, "Parsing WSDL: Couldn't load from '%s' : %s", struri, xmlErrorPtr->message); + } else { + soap_error1(E_ERROR, "Parsing WSDL: Couldn't load from '%s'", struri); + } } zend_hash_add(&ctx->docs, struri, strlen(struri)+1, (void**)&wsdl, sizeof(xmlDocPtr), NULL); @@ -716,12 +721,12 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri TSRMLS_DC) } trav2 = trav2->next; } - if (!address) { + if (!address || tmpbinding->bindingType == BINDING_HTTP) { if (has_soap_port || trav->next || i < n-1) { efree(tmpbinding); trav = trav->next; continue; - } else { + } else if (!address) { soap_error0(E_ERROR, "Parsing WSDL: No address associated with "); } } diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h index 8a9eb7c57..cd7627a6c 100644 --- a/ext/soap/php_sdl.h +++ b/ext/soap/php_sdl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_sdl.h,v 1.37.2.3.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_sdl.h,v 1.37.2.3.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SDL_H #define PHP_SDL_H diff --git a/ext/soap/php_soap.h b/ext/soap/php_soap.h index 95758a612..0b219439c 100644 --- a/ext/soap/php_soap.h +++ b/ext/soap/php_soap.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_soap.h,v 1.38.2.6.2.8 2008/01/09 16:45:28 dmitry Exp $ */ +/* $Id: php_soap.h,v 1.38.2.6.2.9 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SOAP_H #define PHP_SOAP_H diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c index 4da4738f0..e2f5a984b 100644 --- a/ext/soap/php_xml.c +++ b/ext/soap/php_xml.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_xml.c,v 1.25.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_xml.c,v 1.25.2.1.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #include "php_soap.h" #include "libxml/parser.h" diff --git a/ext/soap/php_xml.h b/ext/soap/php_xml.h index 24e4480c4..d56e0027a 100644 --- a/ext/soap/php_xml.h +++ b/ext/soap/php_xml.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: php_xml.h,v 1.17.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_xml.h,v 1.17.2.1.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifndef PHP_SOAP_XML_H #define PHP_SOAP_XML_H diff --git a/ext/soap/soap.c b/ext/soap/soap.c index a20c7860e..8a9e9bafe 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Dmitry Stogov | +----------------------------------------------------------------------+ */ -/* $Id: soap.c,v 1.156.2.28.2.39 2008/03/04 12:23:10 dmitry Exp $ */ +/* $Id: soap.c,v 1.156.2.28.2.44 2009/02/18 13:25:32 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -2348,6 +2348,7 @@ PHP_METHOD(SoapClient, SoapClient) if (zend_hash_find(ht, "stream_context", sizeof("stream_context"), (void**)&tmp) == SUCCESS && Z_TYPE_PP(tmp) == IS_RESOURCE) { context = php_stream_context_from_zval(*tmp, 1); + zend_list_addref(context->rsrc_id); } if (zend_hash_find(ht, "location", sizeof("location"), (void**)&tmp) == SUCCESS && @@ -2380,8 +2381,8 @@ PHP_METHOD(SoapClient, SoapClient) if (zend_hash_find(ht, "proxy_host", sizeof("proxy_host"), (void**)&tmp) == SUCCESS && Z_TYPE_PP(tmp) == IS_STRING) { add_property_stringl(this_ptr, "_proxy_host", Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); - if (zend_hash_find(ht, "proxy_port", sizeof("proxy_port"), (void**)&tmp) == SUCCESS && - Z_TYPE_PP(tmp) == IS_LONG) { + if (zend_hash_find(ht, "proxy_port", sizeof("proxy_port"), (void**)&tmp) == SUCCESS) { + convert_to_long(*tmp); add_property_long(this_ptr, "_proxy_port", Z_LVAL_PP(tmp)); } if (zend_hash_find(ht, "proxy_login", sizeof("proxy_login"), (void**)&tmp) == SUCCESS && @@ -2566,11 +2567,11 @@ static int do_request(zval *this_ptr, xmlDoc *request, char *location, char *act ZVAL_LONG(params[4], one_way); if (call_user_function(NULL, &this_ptr, &func, response, 5, params TSRMLS_CC) != SUCCESS) { - add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() failed", NULL, NULL TSRMLS_CC); + add_soap_fault(this_ptr, "Client", "SoapClient::__doRequest() failed", NULL, NULL TSRMLS_CC); ret = FALSE; } else if (Z_TYPE_P(response) != IS_STRING) { if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__soap_fault", sizeof("__soap_fault"), (void **) &fault) == FAILURE) { - add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() returned non string value", NULL, NULL TSRMLS_CC); + add_soap_fault(this_ptr, "Client", "SoapClient::__doRequest() returned non string value", NULL, NULL TSRMLS_CC); } ret = FALSE; } else if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"), (void **) &trace) == SUCCESS && @@ -4186,7 +4187,17 @@ static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function /*style = SOAP_RPC;*/ if (style == SOAP_RPC) { ns = encode_add_ns(body, uri); - method = xmlNewChild(body, ns, BAD_CAST(function_name), NULL); + if (function_name) { + method = xmlNewChild(body, ns, BAD_CAST(function_name), NULL); + } else if (function && function->requestName) { + method = xmlNewChild(body, ns, BAD_CAST(function->requestName), NULL); + } else if (function && function->functionName) { + method = xmlNewChild(body, ns, BAD_CAST(function->functionName), NULL); + } else { + method = body; + } + } else { + method = body; } if (zend_hash_find(Z_OBJPROP_P(this_ptr), "use", sizeof("use"), (void **)&zuse) == SUCCESS && diff --git a/ext/soap/tests/bug46760.phpt b/ext/soap/tests/bug46760.phpt new file mode 100644 index 000000000..0b7c9ab4c --- /dev/null +++ b/ext/soap/tests/bug46760.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #46760 (SoapClient doRequest fails when proxy is used) +--FILE-- + "localhost", + 'proxy_port' => '8080', + 'login' => "user", + 'password' => "test", + 'uri' => 'mo:http://www.w3.org/', + 'location' => 'http://some.url')); +var_dump($client->_proxy_port); + +?> +--EXPECT-- +int(8080) diff --git a/ext/soap/tests/bugs/bug29109.phpt b/ext/soap/tests/bugs/bug29109.phpt index a69674ece..f998a1ba2 100644 --- a/ext/soap/tests/bugs/bug29109.phpt +++ b/ext/soap/tests/bugs/bug29109.phpt @@ -10,11 +10,7 @@ $client = new SoapClient(dirname(__FILE__)."/bug29109.wsdl"); var_dump($client->__getFunctions()); ?> --EXPECT-- -array(3) { +array(1) { [0]=> string(53) "HelloWorldResponse HelloWorld(HelloWorld $parameters)" - [1]=> - string(19) "string HelloWorld()" - [2]=> - string(19) "string HelloWorld()" } \ No newline at end of file diff --git a/ext/soap/tests/bugs/bug42151.phpt b/ext/soap/tests/bugs/bug42151.phpt index 7f7a87bd1..ee53e6d52 100755 --- a/ext/soap/tests/bugs/bug42151.phpt +++ b/ext/soap/tests/bugs/bug42151.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #42151 __destruct functions not called after catching a SoapFault exception +Bug #42151 (__destruct functions not called after catching a SoapFault exception) --SKIPIF-- --FILE-- @@ -26,6 +26,7 @@ try { echo "ok\n"; ?> --EXPECT-- -SOAP-ERROR: Parsing WSDL: Couldn't load from 'httpx://' +SOAP-ERROR: Parsing WSDL: Couldn't load from 'httpx://' : failed to load external entity "httpx://" + ok I don't get executed either. diff --git a/ext/soap/tests/bugs/bug42214.phpt b/ext/soap/tests/bugs/bug42214.phpt index aaad3a14f..216d7895b 100755 --- a/ext/soap/tests/bugs/bug42214.phpt +++ b/ext/soap/tests/bugs/bug42214.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #42214 SoapServer sends clients internal PHP errors +Bug #42214 (SoapServer sends clients internal PHP errors) --SKIPIF-- --FILE-- diff --git a/ext/soap/tests/bugs/bug43045.phpt b/ext/soap/tests/bugs/bug43045.phpt new file mode 100644 index 000000000..a32acfe0e --- /dev/null +++ b/ext/soap/tests/bugs/bug43045.phpt @@ -0,0 +1,52 @@ +--TEST-- +Bug #43045i (SOAP encoding violation on "INF" for type double/float) +--SKIPIF-- + +--FILE-- +server = new SoapServer($wsdl, $options); + $this->server->addFunction('test'); + } + function __doRequest($request, $location, $action, $version, $one_way = 0) { + ob_start(); + $this->server->handle($request); + $response = ob_get_contents(); + ob_end_clean(); + return $response; + + echo $request; + return ' + + +INF + + +'; + } +} +$client = new TestSoapClient(NULL, array( + "location" => "test://", + "uri" => 'urn:TestSOAP', + "style" => SOAP_RPC, + "use" => SOAP_ENCODED + )); +var_dump($client->test(0.1)); +var_dump($client->test(NAN)); +var_dump($response = $client->test(INF)); +var_dump($response = $client->test(-INF)); +--EXPECT-- +float(0.1) +float(NAN) +float(INF) +float(-INF) diff --git a/ext/soap/tests/bugs/bug44811.phpt b/ext/soap/tests/bugs/bug44811.phpt new file mode 100644 index 000000000..b2e1fc4f6 --- /dev/null +++ b/ext/soap/tests/bugs/bug44811.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #44811 (Improve error messages when creating new SoapClient which contains invalid data) +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- +getMessage() . PHP_EOL; +} +die('ok'); +?> +--EXPECT-- +SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://slashdot.org' : Premature end of data in tag html line 3 + +ok diff --git a/ext/soap/tests/bugs/bug44882.phpt b/ext/soap/tests/bugs/bug44882.phpt new file mode 100644 index 000000000..baad74784 --- /dev/null +++ b/ext/soap/tests/bugs/bug44882.phpt @@ -0,0 +1,64 @@ +--TEST-- +Bug #44882 (SOAP extension object decoding bug) +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- + + + + + 2008-06-23T14:51:08Z + Success + ae013a0ccdf13 + 50.000000 + 588340 + + EC-11Y75137T2399952C + + example@example.com + MU82WA43YXM9C + verified + + + + + +XML; + } +} + +$client = new TestSoapClient(dirname(__FILE__).'/bug44882.wsdl'); +print_r($client->GetExpressCheckoutDetails()); +?> +--EXPECT-- +stdClass Object +( + [Timestamp] => 2008-06-23T14:51:08Z + [Ack] => Success + [CorrelationID] => ae013a0ccdf13 + [Version] => 50.000000 + [Build] => 588340 + [GetExpressCheckoutDetailsResponseDetails] => stdClass Object + ( + [Token] => EC-11Y75137T2399952C + [PayerInfo] => stdClass Object + ( + [Payer] => example@example.com + [PayerID] => MU82WA43YXM9C + [PayerStatus] => verified + ) + + ) + +) diff --git a/ext/soap/tests/bugs/bug44882.wsdl b/ext/soap/tests/bugs/bug44882.wsdl new file mode 100644 index 000000000..266f6a05b --- /dev/null +++ b/ext/soap/tests/bugs/bug44882.wsdl @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/soap/tests/bugs/bug46419.phpt b/ext/soap/tests/bugs/bug46419.phpt new file mode 100644 index 000000000..cb113e28d --- /dev/null +++ b/ext/soap/tests/bugs/bug46419.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #46419 (Elements of associative arrays with NULL value are lost) +--SKIPIF-- + +--FILE-- + 1, 'b' => NULL, 'c' => 2, 'd'=>''); +} + +class LocalSoapClient extends SoapClient { + + function __construct($wsdl, $options) { + parent::__construct($wsdl, $options); + $this->server = new SoapServer($wsdl, $options); + $this->server->addFunction('bar'); + } + + function __doRequest($request, $location, $action, $version, $one_way = 0) { + ob_start(); + $this->server->handle($request); + $response = ob_get_contents(); + ob_end_clean(); + return $response; + } + +} + +$x = new LocalSoapClient(NULL,array('location'=>'test://', + 'uri'=>'http://testuri.org')); +var_dump($x->bar()); +?> +--EXPECT-- +array(4) { + ["a"]=> + int(1) + ["b"]=> + NULL + ["c"]=> + int(2) + ["d"]=> + string(0) "" +} diff --git a/ext/soap/tests/bugs/bug46427.phpt b/ext/soap/tests/bugs/bug46427.phpt new file mode 100644 index 000000000..5cf2e8f96 --- /dev/null +++ b/ext/soap/tests/bugs/bug46427.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #46427 (SoapClient() stumbles over its "stream_context" parameter) +--FILE-- + $ctx, + 'location' => 'test://', + 'uri' => 'test://', + 'exceptions' => false)); +} + +getSoapClient_1()->__soapCall('Help', array()); +echo "ok\n"; +?> +--EXPECT-- +ok diff --git a/ext/soap/tests/bugs/bug47049.phpt b/ext/soap/tests/bugs/bug47049.phpt new file mode 100644 index 000000000..bdc16274e --- /dev/null +++ b/ext/soap/tests/bugs/bug47049.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #47049 (SoapClient::__soapCall causes a segmentation fault) +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- + 1 , 'exceptions' => 0)); +$host = array('uuid' => 'foo'); +$software_list = array(array('name' => 'package', 'version' => '1.2.3', 'state' => 'installed')); +$updates = array(); +$report_id = $client->__soapCall('reportSoftwareStatus',array($host, $software_list, $updates)); +echo $client->__getLastRequest(); +?> +--EXPECT-- + +foopackage1.2.3installed diff --git a/ext/soap/tests/bugs/bug47049.wsdl b/ext/soap/tests/bugs/bug47049.wsdl new file mode 100644 index 000000000..b5730a38e --- /dev/null +++ b/ext/soap/tests/bugs/bug47049.wsdl @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/soap/tests/bugs/multiport.phpt b/ext/soap/tests/bugs/multiport.phpt new file mode 100644 index 000000000..0b5e94451 --- /dev/null +++ b/ext/soap/tests/bugs/multiport.phpt @@ -0,0 +1,16 @@ +--TEST-- +Proper binding selection +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- + true, 'exceptions' => false)); +$response = $client->GetSessionId(array('userId'=>'user', 'password'=>'password')); +echo $client->__getLastRequest(); +?> +--EXPECT-- + +userpassword diff --git a/ext/soap/tests/bugs/multiport.wsdl b/ext/soap/tests/bugs/multiport.wsdl new file mode 100644 index 000000000..604e963d8 --- /dev/null +++ b/ext/soap/tests/bugs/multiport.wsdl @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/sockets/php_sockets.h b/ext/sockets/php_sockets.h index 01e1a2d8d..85357f7a5 100644 --- a/ext/sockets/php_sockets.h +++ b/ext/sockets/php_sockets.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -22,7 +22,7 @@ #ifndef PHP_SOCKETS_H #define PHP_SOCKETS_H -/* $Id: php_sockets.h,v 1.36.2.1.2.5 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_sockets.h,v 1.36.2.1.2.6 2008/12/31 11:17:43 sebastian Exp $ */ #if HAVE_SOCKETS diff --git a/ext/sockets/php_sockets_win.c b/ext/sockets/php_sockets_win.c index f1a7e2a69..bacebb896 100644 --- a/ext/sockets/php_sockets_win.c +++ b/ext/sockets/php_sockets_win.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sockets_win.c,v 1.12.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_sockets_win.c,v 1.12.2.1.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef PHP_WIN32 diff --git a/ext/sockets/php_sockets_win.h b/ext/sockets/php_sockets_win.h index b5638de13..120addfd8 100644 --- a/ext/sockets/php_sockets_win.h +++ b/ext/sockets/php_sockets_win.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sockets_win.h,v 1.12.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: php_sockets_win.h,v 1.12.2.1.2.4 2008/12/31 11:17:43 sebastian Exp $ */ #ifdef PHP_WIN32 diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index b73a25a7b..ed6813037 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sockets.c,v 1.171.2.9.2.17 2008/02/21 02:39:43 felipe Exp $ */ +/* $Id: sockets.c,v 1.171.2.9.2.22 2009/02/03 19:22:40 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -509,6 +509,9 @@ PHP_MINIT_FUNCTION(sockets) REGISTER_LONG_CONSTANT("SO_ERROR", SO_ERROR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOL_SOCKET", SOL_SOCKET, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOMAXCONN", SOMAXCONN, CONST_CS | CONST_PERSISTENT); +#ifdef TCP_NODELAY + REGISTER_LONG_CONSTANT("TCP_NODELAY", TCP_NODELAY, CONST_CS | CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("PHP_NORMAL_READ", PHP_NORMAL_READ, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PHP_BINARY_READ", PHP_BINARY_READ, CONST_CS | CONST_PERSISTENT); @@ -584,10 +587,7 @@ static int php_sock_array_from_fd_set(zval *sock_array, fd_set *fds TSRMLS_DC) / zval **dest_element; php_socket *php_sock; HashTable *new_hash; - char *key; int num = 0; - ulong num_key; - uint key_len; if (Z_TYPE_P(sock_array) != IS_ARRAY) return 0; @@ -602,14 +602,8 @@ static int php_sock_array_from_fd_set(zval *sock_array, fd_set *fds TSRMLS_DC) / if (PHP_SAFE_FD_ISSET(php_sock->bsd_socket, fds)) { /* Add fd to new array */ - switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(sock_array), &key, &key_len, &num_key, 0, NULL)) { - case HASH_KEY_IS_STRING: - zend_hash_add(new_hash, key, key_len, (void *)element, sizeof(zval *), (void **)&dest_element); - break; - case HASH_KEY_IS_LONG: - zend_hash_index_update(new_hash, num_key, (void *)element, sizeof(zval *), (void **)&dest_element); - break; - } + zend_hash_next_index_insert(new_hash, (void *)element, sizeof(zval *), (void **)&dest_element); + if (dest_element) zval_add_ref(dest_element); } num++; @@ -907,6 +901,9 @@ PHP_FUNCTION(socket_read) efree(tmpbuf); RETURN_FALSE; + } else if (!retval) { + efree(tmpbuf); + RETURN_EMPTY_STRING(); } tmpbuf = erealloc(tmpbuf, retval + 1); @@ -1179,8 +1176,8 @@ PHP_FUNCTION(socket_connect) memset(&s_un, 0, sizeof(struct sockaddr_un)); s_un.sun_family = AF_UNIX; - snprintf(s_un.sun_path, 108, "%s", addr); - retval = connect(php_sock->bsd_socket, (struct sockaddr *) &s_un, SUN_LEN(&s_un)); + memcpy(&s_un.sun_path, addr, addr_len); + retval = connect(php_sock->bsd_socket, (struct sockaddr *) &s_un, (socklen_t) XtOffsetOf(struct sockaddr_un, sun_path) + addr_len); break; default: diff --git a/ext/sockets/tests/ipv4loop.phpt b/ext/sockets/tests/ipv4loop.phpt index 7c6c0db31..9fdcc17da 100644 --- a/ext/sockets/tests/ipv4loop.phpt +++ b/ext/sockets/tests/ipv4loop.phpt @@ -3,7 +3,7 @@ IPv4 Loopback test --SKIPIF-- --FILE-- diff --git a/ext/sockets/tests/ipv6loop.phpt b/ext/sockets/tests/ipv6loop.phpt index 45d2a05fc..6fb584045 100644 --- a/ext/sockets/tests/ipv6loop.phpt +++ b/ext/sockets/tests/ipv6loop.phpt @@ -3,7 +3,7 @@ IPv6 Loopback test --SKIPIF-- +--FILE-- + +--EXPECT-- +string(10) "ABCdef123 +" diff --git a/ext/sockets/unix_socket_constants.h b/ext/sockets/unix_socket_constants.h index fd40f8605..8226e2f66 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: unix_socket_constants.h,v 1.5.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: unix_socket_constants.h,v 1.5.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ /* 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 5528d24c8..18f8624f4 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: win32_socket_constants.h,v 1.5.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: win32_socket_constants.h,v 1.5.2.1.2.3 2008/12/31 11:17:43 sebastian Exp $ */ /* This file is to be included by sockets.c */ diff --git a/ext/spl/examples/tests/dualiterator_001.phpt b/ext/spl/examples/tests/dualiterator_001.phpt index 9150d76ae..53c11537a 100755 --- a/ext/spl/examples/tests/dualiterator_001.phpt +++ b/ext/spl/examples/tests/dualiterator_001.phpt @@ -1,7 +1,7 @@ --TEST-- SPL: DualIterator --SKIPIF-- - + --FILE-- fptr_offset_get) { @@ -267,9 +268,17 @@ static zval **spl_array_get_dimension_ptr_ptr(int check_inherited, zval *object, switch(Z_TYPE_P(offset)) { case IS_STRING: - if (zend_symtable_find(spl_array_get_hash_table(intern, 0 TSRMLS_CC), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &retval) == FAILURE) { - zend_error(E_NOTICE, "Undefined index: %s", Z_STRVAL_P(offset)); - return &EG(uninitialized_zval_ptr); + if (zend_symtable_find(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &retval) == FAILURE) { + if (type == BP_VAR_W || type == BP_VAR_RW) { + zval *value; + ALLOC_INIT_ZVAL(value); + zend_symtable_update(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void**)&value, sizeof(void*), NULL); + zend_symtable_find(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &retval); + return retval; + } else { + zend_error(E_NOTICE, "Undefined index: %s", Z_STRVAL_P(offset)); + return &EG(uninitialized_zval_ptr); + } } else { return retval; } @@ -282,9 +291,17 @@ static zval **spl_array_get_dimension_ptr_ptr(int check_inherited, zval *object, } else { index = Z_LVAL_P(offset); } - if (zend_hash_index_find(spl_array_get_hash_table(intern, 0 TSRMLS_CC), index, (void **) &retval) == FAILURE) { - zend_error(E_NOTICE, "Undefined offset: %ld", Z_LVAL_P(offset)); - return &EG(uninitialized_zval_ptr); + if (zend_hash_index_find(ht, index, (void **) &retval) == FAILURE) { + if (type == BP_VAR_W || type == BP_VAR_RW) { + zval *value; + ALLOC_INIT_ZVAL(value); + zend_hash_index_update(ht, index, (void**)&value, sizeof(void*), NULL); + zend_hash_index_find(ht, index, (void **) &retval); + return retval; + } else { + zend_error(E_NOTICE, "Undefined offset: %ld", Z_LVAL_P(offset)); + return &EG(uninitialized_zval_ptr); + } } else { return retval; } @@ -893,9 +910,7 @@ SPL_METHOD(Array, __construct) spl_array_object *intern; zval **array; long ar_flags = 0; - char *class_name; - int class_name_len; - zend_class_entry ** pce_get_iterator; + zend_class_entry * ce_get_iterator = spl_ce_Iterator; if (ZEND_NUM_ARGS() == 0) { return; /* nothing to do */ @@ -904,7 +919,7 @@ SPL_METHOD(Array, __construct) intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|ls", &array, &ar_flags, &class_name, &class_name_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|lC", &array, &ar_flags, &ce_get_iterator) == FAILURE) { php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); return; } @@ -914,12 +929,7 @@ SPL_METHOD(Array, __construct) } if (ZEND_NUM_ARGS() > 2) { - if (zend_lookup_class(class_name, class_name_len, &pce_get_iterator TSRMLS_CC) == FAILURE) { - zend_throw_exception(spl_ce_InvalidArgumentException, "A class that implements Iterator must be specified", 0 TSRMLS_CC); - php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); - return; - } - intern->ce_get_iterator = *pce_get_iterator; + intern->ce_get_iterator = ce_get_iterator; } ar_flags &= ~SPL_ARRAY_INT_MASK; @@ -972,21 +982,14 @@ SPL_METHOD(Array, setIteratorClass) { zval *object = getThis(); spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); - char *class_name; - int class_name_len; - zend_class_entry ** pce_get_iterator; + zend_class_entry * ce_get_iterator = spl_ce_Iterator; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &class_name, &class_name_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "C", &ce_get_iterator) == FAILURE) { php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); return; } - if (zend_lookup_class(class_name, class_name_len, &pce_get_iterator TSRMLS_CC) == FAILURE) { - zend_throw_exception(spl_ce_InvalidArgumentException, "A class that implements Iterator must be specified", 0 TSRMLS_CC); - php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); - return; - } - intern->ce_get_iterator = *pce_get_iterator; + intern->ce_get_iterator = ce_get_iterator; } /* }}} */ @@ -1180,6 +1183,7 @@ static void spl_array_method(INTERNAL_FUNCTION_PARAMETERS, char *fname, int fnam spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(getThis() TSRMLS_CC); HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC); zval tmp, *arg; + zval *retval_ptr = NULL; INIT_PZVAL(&tmp); Z_TYPE(tmp) = IS_ARRAY; @@ -1190,9 +1194,12 @@ static void spl_array_method(INTERNAL_FUNCTION_PARAMETERS, char *fname, int fnam zend_throw_exception(spl_ce_BadMethodCallException, "Function expects exactly one argument", 0 TSRMLS_CC); return; } - zend_call_method(NULL, NULL, NULL, fname, fname_len, &return_value, 2, &tmp, arg TSRMLS_CC); + zend_call_method(NULL, NULL, NULL, fname, fname_len, &retval_ptr, 2, &tmp, arg TSRMLS_CC); } else { - zend_call_method(NULL, NULL, NULL, fname, fname_len, &return_value, 1, &tmp, NULL TSRMLS_CC); + zend_call_method(NULL, NULL, NULL, fname, fname_len, &retval_ptr, 1, &tmp, NULL TSRMLS_CC); + } + if (retval_ptr) { + COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr); } } diff --git a/ext/spl/spl_array.h b/ext/spl/spl_array.h index 4c6e49b97..25994bd84 100755 --- a/ext/spl/spl_array.h +++ b/ext/spl/spl_array.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_array.h,v 1.13.2.2.2.5 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_array.h,v 1.13.2.2.2.6 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_ARRAY_H #define SPL_ARRAY_H diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index f62b261b9..e03fcaea7 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.c,v 1.45.2.27.2.26 2008/02/13 12:23:26 helly Exp $ */ +/* $Id: spl_directory.c,v 1.45.2.27.2.30 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -426,6 +426,7 @@ static spl_filesystem_object * spl_filesystem_object_create_type(int ht, spl_fil &use_include_path, &intern->u.file.zcontext) == FAILURE) { php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); intern->u.file.open_mode = NULL; + intern->file_name = NULL; zval_dtor(return_value); Z_TYPE_P(return_value) = IS_NULL; return NULL; @@ -1055,7 +1056,7 @@ SPL_METHOD(RecursiveDirectoryIterator, getChildren) INIT_PZVAL(&zpath); ZVAL_STRINGL(&zpath, intern->file_name, intern->file_name_len, 0); - spl_instantiate_arg_ex1(spl_ce_RecursiveDirectoryIterator, &return_value, 0, &zpath TSRMLS_CC); + spl_instantiate_arg_ex1(Z_OBJCE_P(getThis()), &return_value, 0, &zpath TSRMLS_CC); subdir = (spl_filesystem_object*)zend_object_store_get_object(return_value TSRMLS_CC); if (subdir) { @@ -2214,7 +2215,9 @@ SPL_METHOD(SplFileObject, seek) spl_filesystem_file_rewind(getThis(), intern TSRMLS_CC); while(intern->u.file.current_line_num < line_pos) { - spl_filesystem_file_read_line(getThis(), intern, 1 TSRMLS_CC); + if (spl_filesystem_file_read_line(getThis(), intern, 1 TSRMLS_CC) == FAILURE) { + break; + } } } /* }}} */ diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h index cce07fd93..b63caad22 100755 --- a/ext/spl/spl_directory.h +++ b/ext/spl/spl_directory.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.h,v 1.12.2.5.2.10 2008/02/13 12:23:26 helly Exp $ */ +/* $Id: spl_directory.h,v 1.12.2.5.2.11 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_DIRECTORY_H #define SPL_DIRECTORY_H diff --git a/ext/spl/spl_engine.c b/ext/spl/spl_engine.c index 00bacdf3a..389245566 100755 --- a/ext/spl/spl_engine.c +++ b/ext/spl/spl_engine.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/spl/spl_engine.h b/ext/spl/spl_engine.h index d4a9ef47e..6324f216d 100755 --- a/ext/spl/spl_engine.h +++ b/ext/spl/spl_engine.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_engine.h,v 1.19.2.3.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_engine.h,v 1.19.2.3.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_ENGINE_H #define SPL_ENGINE_H diff --git a/ext/spl/spl_exceptions.c b/ext/spl/spl_exceptions.c index fdbfb0069..21a47afb5 100755 --- a/ext/spl/spl_exceptions.c +++ b/ext/spl/spl_exceptions.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_exceptions.c,v 1.6.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_exceptions.c,v 1.6.2.1.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/ext/spl/spl_exceptions.h b/ext/spl/spl_exceptions.h index 9133b7076..ad9cf3af8 100755 --- a/ext/spl/spl_exceptions.h +++ b/ext/spl/spl_exceptions.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_exceptions.h,v 1.5.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_exceptions.h,v 1.5.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_EXCEPTIONS_H #define SPL_EXCEPTIONS_H diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c index b7bb476ab..9a2faa51e 100755 --- a/ext/spl/spl_functions.c +++ b/ext/spl/spl_functions.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_functions.c,v 1.28.2.3.2.4 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_functions.c,v 1.28.2.3.2.5 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/spl/spl_functions.h b/ext/spl/spl_functions.h index 19529a4c9..fdb73ca7a 100755 --- a/ext/spl/spl_functions.h +++ b/ext/spl/spl_functions.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_functions.h,v 1.19.2.3.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_functions.h,v 1.19.2.3.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef PHP_FUNCTIONS_H #define PHP_FUNCTIONS_H diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 0160b5042..29b833653 100755 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_iterators.c,v 1.73.2.30.2.31 2008/03/12 13:24:24 colder Exp $ */ +/* $Id: spl_iterators.c,v 1.73.2.30.2.35 2009/01/20 00:47:01 felipe Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -1118,6 +1118,9 @@ static inline void spl_dual_it_rewind(spl_dual_it_object *intern TSRMLS_DC) static inline int spl_dual_it_valid(spl_dual_it_object *intern TSRMLS_DC) { + if (!intern->inner.iterator) { + return FAILURE; + } /* FAILURE / SUCCESS */ return intern->inner.iterator->funcs->valid(intern->inner.iterator TSRMLS_CC); } @@ -1360,6 +1363,10 @@ SPL_METHOD(RegexIterator, accept) int subject_len, use_copy, count, result_len; zval subject_copy, zcount, *replacement; + if (intern->current.data == NULL) { + RETURN_FALSE; + } + if (intern->u.regex.flags & REGIT_USE_KEY) { if (intern->current.key_type == HASH_KEY_IS_LONG) { subject_len = slprintf(tmp, sizeof(tmp), "%ld", intern->current.int_key); @@ -2023,6 +2030,7 @@ SPL_METHOD(CachingIterator, __toString) if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|CIT_TOSTRING_USE_INNER))) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s does not fetch string value (see CachingIterator::__construct)", Z_OBJCE_P(getThis())->name); + return; } if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { if (intern->current.key_type == HASH_KEY_IS_STRING) { @@ -2059,6 +2067,7 @@ SPL_METHOD(CachingIterator, offsetSet) if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s does not use a full cache (see CachingIterator::__construct)", Z_OBJCE_P(getThis())->name); + return; } if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &arKey, &nKeyLength, &value) == FAILURE) { @@ -2083,6 +2092,7 @@ SPL_METHOD(CachingIterator, offsetGet) if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s does not use a full cache (see CachingIterator::__construct)", Z_OBJCE_P(getThis())->name); + return; } if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arKey, &nKeyLength) == FAILURE) { @@ -2110,6 +2120,7 @@ SPL_METHOD(CachingIterator, offsetUnset) if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s does not use a full cache (see CachingIterator::__construct)", Z_OBJCE_P(getThis())->name); + return; } if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arKey, &nKeyLength) == FAILURE) { @@ -2132,6 +2143,7 @@ SPL_METHOD(CachingIterator, offsetExists) if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s does not use a full cache (see CachingIterator::__construct)", Z_OBJCE_P(getThis())->name); + return; } if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arKey, &nKeyLength) == FAILURE) { diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h index 104676911..a062b2ca8 100755 --- a/ext/spl/spl_iterators.h +++ b/ext/spl/spl_iterators.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_iterators.h,v 1.18.2.7.2.14 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_iterators.h,v 1.18.2.7.2.15 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_ITERATORS_H #define SPL_ITERATORS_H diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index 39a293b0f..d149f80e8 100755 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 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 | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_observer.c,v 1.2.2.6.2.4 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_observer.c,v 1.2.2.6.2.5 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/ext/spl/spl_observer.h b/ext/spl/spl_observer.h index a1d7d5621..8a991a779 100755 --- a/ext/spl/spl_observer.h +++ b/ext/spl/spl_observer.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_observer.h,v 1.2.2.2.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_observer.h,v 1.2.2.2.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_OBSERVER_H #define SPL_OBSERVER_H diff --git a/ext/spl/spl_sxe.c b/ext/spl/spl_sxe.c index e5fda429f..41b082435 100755 --- a/ext/spl/spl_sxe.c +++ b/ext/spl/spl_sxe.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_sxe.c,v 1.8.2.5.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_sxe.c,v 1.8.2.5.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/ext/spl/spl_sxe.h b/ext/spl/spl_sxe.h index 64ff2d225..209e5f6ad 100755 --- a/ext/spl/spl_sxe.h +++ b/ext/spl/spl_sxe.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_sxe.h,v 1.4.2.1.2.2 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: spl_sxe.h,v 1.4.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef SPL_SXE_H #define SPL_SXE_H diff --git a/ext/spl/tests/arrayObject___construct_basic1.phpt b/ext/spl/tests/arrayObject___construct_basic1.phpt new file mode 100644 index 000000000..0d690fcda --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic1.phpt @@ -0,0 +1,37 @@ +--TEST-- +SPL: ArrayObject::__construct basic usage. +--FILE-- + No arguments:\n"; +var_dump(new ArrayObject()); + +echo "--> Object argument:\n"; +$a = new stdClass; +$a->p = 'hello'; +var_dump(new ArrayObject($a)); + +echo "--> Array argument:\n"; +var_dump(new ArrayObject(array('key1' => 'val1'))); + +echo "--> Nested ArrayObject argument:\n"; +var_dump(new ArrayObject(new ArrayObject($a))); +?> +--EXPECTF-- +--> No arguments: +object(ArrayObject)#%d (0) { +} +--> Object argument: +object(ArrayObject)#%d (1) { + ["p"]=> + string(5) "hello" +} +--> Array argument: +object(ArrayObject)#%d (1) { + ["key1"]=> + string(4) "val1" +} +--> Nested ArrayObject argument: +object(ArrayObject)#%d (1) { + ["p"]=> + string(5) "hello" +} diff --git a/ext/spl/tests/arrayObject___construct_basic2.phpt b/ext/spl/tests/arrayObject___construct_basic2.phpt new file mode 100644 index 000000000..5d6d7ccfd --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic2.phpt @@ -0,0 +1,98 @@ +--TEST-- +SPL: ArrayObject::__construct basic usage. +--FILE-- + Access prop on instance of ArrayObject:\n"; +$c = new C; +$ao = new ArrayObject($c); +testAccess($c, $ao); + +echo "\n--> Access prop on instance of MyArrayObject:\n"; +$c = new C; +$ao = new MyArrayObject($c); +testAccess($c, $ao); + +function testAccess($c, $ao) { + echo " - Iteration:\n"; + foreach ($ao as $key=>$value) { + echo " $key=>$value\n"; + } + + echo " - Read:\n"; + @var_dump($ao->prop, $ao['prop']); + + echo " - Write:\n"; + $ao->prop = 'changed1'; + $ao['prop'] = 'changed2'; + var_dump($ao->prop, $ao['prop']); + + echo " - Isset:\n"; + var_dump(isset($ao->prop), isset($ao['prop'])); + + echo " - Unset:\n"; + unset($ao->prop); + unset($ao['prop']); + var_dump($ao->prop, $ao['prop']); + + echo " - After:\n"; + var_dump($ao, $c); +} +?> +--EXPECTF-- +--> Access prop on instance of ArrayObject: + - Iteration: + prop=>C::prop.orig + - Read: +NULL +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined property: ArrayObject::$prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(ArrayObject)#%d (0) { +} +object(C)#%d (0) { +} + +--> Access prop on instance of MyArrayObject: + - Iteration: + prop=>C::prop.orig + - Read: +string(24) "MyArrayObject::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined property: MyArrayObject::$prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(MyArrayObject)#%d (0) { +} +object(C)#%d (0) { +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject___construct_basic3.phpt b/ext/spl/tests/arrayObject___construct_basic3.phpt new file mode 100644 index 000000000..21db65f1b --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic3.phpt @@ -0,0 +1,99 @@ +--TEST-- +SPL: ArrayObject::__construct basic usage with ArrayObject::STD_PROP_LIST. +--FILE-- + Access prop on instance of ArrayObject with ArrayObject::STD_PROP_LIST:\n"; +$c = new C; +$ao = new ArrayObject($c, ArrayObject::STD_PROP_LIST); +testAccess($c, $ao); + +echo "\n--> Access prop on instance of MyArrayObject with ArrayObject::STD_PROP_LIST:\n"; +$c = new C; +$ao = new MyArrayObject($c, ArrayObject::STD_PROP_LIST); +testAccess($c, $ao); + +function testAccess($c, $ao) { + echo " - Iteration:\n"; + foreach ($ao as $key=>$value) { + echo " $key=>$value\n"; + } + + echo " - Read:\n"; + @var_dump($ao->prop, $ao['prop']); + + echo " - Write:\n"; + $ao->prop = 'changed1'; + $ao['prop'] = 'changed2'; + var_dump($ao->prop, $ao['prop']); + + echo " - Isset:\n"; + var_dump(isset($ao->prop), isset($ao['prop'])); + + echo " - Unset:\n"; + unset($ao->prop); + unset($ao['prop']); + var_dump($ao->prop, $ao['prop']); + + echo " - After:\n"; + var_dump($ao, $c); +} +?> +--EXPECTF-- + +--> Access prop on instance of ArrayObject with ArrayObject::STD_PROP_LIST: + - Iteration: + prop=>C::prop.orig + - Read: +NULL +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined property: ArrayObject::$prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(ArrayObject)#%d (0) { +} +object(C)#%d (0) { +} + +--> Access prop on instance of MyArrayObject with ArrayObject::STD_PROP_LIST: + - Iteration: + prop=>C::prop.orig + - Read: +string(24) "MyArrayObject::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined property: MyArrayObject::$prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(MyArrayObject)#%d (0) { +} +object(C)#%d (0) { +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject___construct_basic4.phpt b/ext/spl/tests/arrayObject___construct_basic4.phpt new file mode 100644 index 000000000..bf7c355ea --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic4.phpt @@ -0,0 +1,103 @@ +--TEST-- +SPL: ArrayObject::__construct basic usage with ArrayObject::ARRAY_AS_PROPS. +--XFAIL-- +Will fail until the fix to bug 45622 is backported from PHP53 to PHP52. +--FILE-- + Access prop on instance of ArrayObject with ArrayObject::ARRAY_AS_PROPS:\n"; +$c = new C; +$ao = new ArrayObject($c, ArrayObject::ARRAY_AS_PROPS); +testAccess($c, $ao); + +echo "\n--> Access prop on instance of MyArrayObject with ArrayObject::ARRAY_AS_PROPS:\n"; +$c = new C; +$ao = new MyArrayObject($c, ArrayObject::ARRAY_AS_PROPS); +testAccess($c, $ao); + +function testAccess($c, $ao) { + echo " - Iteration:\n"; + foreach ($ao as $key=>$value) { + echo " $key=>$value\n"; + } + + echo " - Read:\n"; + @var_dump($ao->prop, $ao['prop']); + + echo " - Write:\n"; + $ao->prop = 'changed1'; + $ao['prop'] = 'changed2'; + var_dump($ao->prop, $ao['prop']); + + echo " - Isset:\n"; + var_dump(isset($ao->prop), isset($ao['prop'])); + + echo " - Unset:\n"; + unset($ao->prop); + unset($ao['prop']); + var_dump($ao->prop, $ao['prop']); + + echo " - After:\n"; + var_dump($ao, $c); +} +?> +--EXPECTF-- + +--> Access prop on instance of ArrayObject with ArrayObject::ARRAY_AS_PROPS: + - Iteration: + prop=>C::prop.orig + - Read: +string(12) "C::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed2" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined index: prop in %s on line 39 + +Notice: Undefined index: prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(ArrayObject)#%d (0) { +} +object(C)#%d (0) { +} + +--> Access prop on instance of MyArrayObject with ArrayObject::ARRAY_AS_PROPS: + - Iteration: + prop=>C::prop.orig + - Read: +string(24) "MyArrayObject::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined index: prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(MyArrayObject)#%d (0) { +} +object(C)#%d (0) { +} diff --git a/ext/spl/tests/arrayObject___construct_basic5.phpt b/ext/spl/tests/arrayObject___construct_basic5.phpt new file mode 100644 index 000000000..0254b70d0 --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic5.phpt @@ -0,0 +1,103 @@ +--TEST-- +SPL: ArrayObject::__construct basic usage with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS. +--XFAIL-- +Will fail unless the PHP53 fix to bug 45622 is backported to PHP52 +--FILE-- + Access prop on instance of ArrayObject with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS:\n"; +$c = new C; +$ao = new ArrayObject($c, ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS); +testAccess($c, $ao); + +echo "\n--> Access prop on instance of MyArrayObject with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS:\n"; +$c = new C; +$ao = new MyArrayObject($c, ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS); +testAccess($c, $ao); + +function testAccess($c, $ao) { + echo " - Iteration:\n"; + foreach ($ao as $key=>$value) { + echo " $key=>$value\n"; + } + + echo " - Read:\n"; + @var_dump($ao->prop, $ao['prop']); + + echo " - Write:\n"; + $ao->prop = 'changed1'; + $ao['prop'] = 'changed2'; + var_dump($ao->prop, $ao['prop']); + + echo " - Isset:\n"; + var_dump(isset($ao->prop), isset($ao['prop'])); + + echo " - Unset:\n"; + unset($ao->prop); + unset($ao['prop']); + var_dump($ao->prop, $ao['prop']); + + echo " - After:\n"; + var_dump($ao, $c); +} +?> +--EXPECTF-- + +--> Access prop on instance of ArrayObject with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS: + - Iteration: + prop=>C::prop.orig + - Read: +string(12) "C::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed2" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined index: prop in %s on line 39 + +Notice: Undefined index: prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(ArrayObject)#%d (0) { +} +object(C)#%d (0) { +} + +--> Access prop on instance of MyArrayObject with ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS: + - Iteration: + prop=>C::prop.orig + - Read: +string(24) "MyArrayObject::prop.orig" +string(12) "C::prop.orig" + - Write: +string(8) "changed1" +string(8) "changed2" + - Isset: +bool(true) +bool(true) + - Unset: + +Notice: Undefined index: prop in %s on line 40 + +Notice: Undefined index: prop in %s on line 40 +NULL +NULL + - After: +object(MyArrayObject)#%d (0) { +} +object(C)#%d (0) { +} diff --git a/ext/spl/tests/arrayObject___construct_basic6.phpt b/ext/spl/tests/arrayObject___construct_basic6.phpt new file mode 100644 index 000000000..150865d5a --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_basic6.phpt @@ -0,0 +1,50 @@ +--TEST-- +SPL: ArrayObject::__construct: check impact of ArrayObject::STD_PROP_LIST on var_dump. +--FILE-- +p = 1; +var_dump($ao); + +$ao = new ArrayObject(array(1,2,3), ArrayObject::STD_PROP_LIST); +$ao->p = 1; +var_dump($ao); + +$ao = new MyArrayObject(array(1,2,3)); +var_dump($ao); + +$ao = new MyArrayObject(array(1,2,3), ArrayObject::STD_PROP_LIST); +var_dump($ao); +?> +--EXPECTF-- +object(ArrayObject)#%d (3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +object(ArrayObject)#%d (1) { + ["p"]=> + int(1) +} +object(MyArrayObject)#%d (3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +object(MyArrayObject)#%d (2) { + ["priv1:private"]=> + string(7) "secret1" + ["pub1"]=> + string(7) "public1" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject___construct_error1.phpt b/ext/spl/tests/arrayObject___construct_error1.phpt new file mode 100644 index 000000000..21c312d2d --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_error1.phpt @@ -0,0 +1,25 @@ +--TEST-- +SPL: ArrayObject::__construct with bad iterator. +--FILE-- +p = 1; +try { + var_dump(new ArrayObject($a, 0, "Exception")); +} catch (InvalidArgumentException $e) { + echo $e->getMessage() . "(" . $e->getLine() . ")\n"; +} + +echo "Non-existent class:\n"; +try { + var_dump(new ArrayObject(new stdClass, 0, "nonExistentClassName")); +} catch (InvalidArgumentException $e) { + echo $e->getMessage() . "(" . $e->getLine() . ")\n"; +} +?> +--EXPECTF-- +Bad iterator type: +ArrayObject::__construct() expects parameter 3 to be a class name derived from Iterator, 'Exception' given(6) +Non-existent class: +ArrayObject::__construct() expects parameter 3 to be a class name derived from Iterator, 'nonExistentClassName' given(13) diff --git a/ext/spl/tests/arrayObject___construct_error2.phpt b/ext/spl/tests/arrayObject___construct_error2.phpt new file mode 100644 index 000000000..80b68d6b8 --- /dev/null +++ b/ext/spl/tests/arrayObject___construct_error2.phpt @@ -0,0 +1,22 @@ +--TEST-- +SPL: ArrayObject::__construct with too many arguments. +--FILE-- +getMessage() . "(" . $e->getLine() . ")\n"; +} +?> +--EXPECTF-- +Too many arguments: +ArrayObject::__construct() expects at most 3 parameters, 4 given(12) \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_asort_basic1.phpt b/ext/spl/tests/arrayObject_asort_basic1.phpt new file mode 100644 index 000000000..4422f28ed --- /dev/null +++ b/ext/spl/tests/arrayObject_asort_basic1.phpt @@ -0,0 +1,42 @@ +--TEST-- +SPL: Test ArrayObject::asort() function : basic functionality with array based store +--FILE-- +4,'b'=>2,'c'=>3)); +var_dump($ao1->asort()); +var_dump($ao1); +var_dump($ao2->asort('blah')); +var_dump($ao2); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::asort() : basic functionality *** +bool(true) +object(ArrayObject)#%d (3) { + [1]=> + int(2) + [2]=> + int(3) + [0]=> + int(4) +} +bool(true) +object(ArrayObject)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["a"]=> + int(4) +} +===DONE=== \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_asort_basic2.phpt b/ext/spl/tests/arrayObject_asort_basic2.phpt new file mode 100644 index 000000000..f411c9e7d --- /dev/null +++ b/ext/spl/tests/arrayObject_asort_basic2.phpt @@ -0,0 +1,49 @@ +--TEST-- +SPL: Test ArrayObject::asort() function : basic functionality with object based store +--FILE-- +asort()); +var_dump($ao1, $c); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::asort() : basic functionality *** +bool(true) +object(ArrayObject)#%d (4) { + ["prop3:private"]=> + string(1) "a" + ["prop1"]=> + string(1) "x" + ["prop4"]=> + string(1) "x" + ["prop2"]=> + string(1) "z" +} +object(C)#%d (4) { + ["prop3:private"]=> + string(1) "a" + ["prop1"]=> + string(1) "x" + ["prop4"]=> + string(1) "x" + ["prop2"]=> + string(1) "z" +} +===DONE=== \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_clone_basic1.phpt b/ext/spl/tests/arrayObject_clone_basic1.phpt new file mode 100644 index 000000000..cc72e4ac3 --- /dev/null +++ b/ext/spl/tests/arrayObject_clone_basic1.phpt @@ -0,0 +1,42 @@ +--TEST-- +SPL: Cloning an instance of ArrayObject which wraps an array. +--FILE-- + +--EXPECTF-- +array(4) { + [0]=> + int(1) + [1]=> + int(2) + ["p1"]=> + string(35) "new element added to a before clone" + ["p2"]=> + string(34) "new element added to a after clone" +} +object(ArrayObject)#%d (3) { + [0]=> + int(1) + [1]=> + int(2) + ["new.aa1"]=> + string(24) "new element added to aa1" +} +object(ArrayObject)#%d (3) { + [0]=> + int(1) + [1]=> + int(2) + ["new.aa2"]=> + string(24) "new element added to aa2" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_clone_basic2.phpt b/ext/spl/tests/arrayObject_clone_basic2.phpt new file mode 100644 index 000000000..908907c34 --- /dev/null +++ b/ext/spl/tests/arrayObject_clone_basic2.phpt @@ -0,0 +1,40 @@ +--TEST-- +SPL: Cloning an instance of ArrayObject which wraps an object. +--FILE-- +p1 = 'new prop added to c before clone'; + +$ao2 = clone $ao1; + +$c->p2 = 'new prop added to c after clone'; +$ao1['new.ao1'] = 'new element added to ao1'; +$ao2['new.ao2'] = 'new element added to ao2'; +var_dump($c, $ao1, $ao2); +?> +--EXPECTF-- +object(C)#%d (3) { + ["p1"]=> + string(32) "new prop added to c before clone" + ["p2"]=> + string(31) "new prop added to c after clone" + ["new.ao1"]=> + string(24) "new element added to ao1" +} +object(ArrayObject)#%d (3) { + ["p1"]=> + string(32) "new prop added to c before clone" + ["p2"]=> + string(31) "new prop added to c after clone" + ["new.ao1"]=> + string(24) "new element added to ao1" +} +object(ArrayObject)#%d (2) { + ["p1"]=> + string(32) "new prop added to c before clone" + ["new.ao2"]=> + string(24) "new element added to ao2" +} diff --git a/ext/spl/tests/arrayObject_clone_basic3.phpt b/ext/spl/tests/arrayObject_clone_basic3.phpt new file mode 100644 index 000000000..092bdde47 --- /dev/null +++ b/ext/spl/tests/arrayObject_clone_basic3.phpt @@ -0,0 +1,68 @@ +--TEST-- +SPL: Cloning nested ArrayObjects. +--FILE-- +dynamic1 = 'new prop added to $wrappedObject before clone'; +$clonedOuterArrayObject = clone $outerArrayObject; +$wrappedObject->dynamic2 = 'new prop added to $wrappedObject after clone'; + +$innerArrayObject['new.iAO'] = 'new element added $innerArrayObject'; +$outerArrayObject['new.oAO'] = 'new element added to $outerArrayObject'; +$clonedOuterArrayObject['new.coAO'] = 'new element added to $clonedOuterArrayObject'; + +var_dump($wrappedObject, $innerArrayObject, $outerArrayObject, $clonedOuterArrayObject); +?> +--EXPECTF-- +object(C)#%d (5) { + ["p"]=> + string(9) "C::p.orig" + ["dynamic1"]=> + string(45) "new prop added to $wrappedObject before clone" + ["dynamic2"]=> + string(44) "new prop added to $wrappedObject after clone" + ["new.iAO"]=> + string(35) "new element added $innerArrayObject" + ["new.oAO"]=> + string(38) "new element added to $outerArrayObject" +} +object(ArrayObject)#%d (5) { + ["p"]=> + string(9) "C::p.orig" + ["dynamic1"]=> + string(45) "new prop added to $wrappedObject before clone" + ["dynamic2"]=> + string(44) "new prop added to $wrappedObject after clone" + ["new.iAO"]=> + string(35) "new element added $innerArrayObject" + ["new.oAO"]=> + string(38) "new element added to $outerArrayObject" +} +object(ArrayObject)#%d (5) { + ["p"]=> + string(9) "C::p.orig" + ["dynamic1"]=> + string(45) "new prop added to $wrappedObject before clone" + ["dynamic2"]=> + string(44) "new prop added to $wrappedObject after clone" + ["new.iAO"]=> + string(35) "new element added $innerArrayObject" + ["new.oAO"]=> + string(38) "new element added to $outerArrayObject" +} +object(ArrayObject)#%d (3) { + ["p"]=> + string(9) "C::p.orig" + ["dynamic1"]=> + string(45) "new prop added to $wrappedObject before clone" + ["new.coAO"]=> + string(44) "new element added to $clonedOuterArrayObject" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_count_basic1.phpt b/ext/spl/tests/arrayObject_count_basic1.phpt new file mode 100644 index 000000000..63686b063 --- /dev/null +++ b/ext/spl/tests/arrayObject_count_basic1.phpt @@ -0,0 +1,80 @@ +--TEST-- +SPL: ArrayObject::count() and ArrayIterator::count() basic functionality. +--FILE-- +==ArrayObject== +count(), $ao->count()); + +//Extra args are ignored. +var_dump($ao->count('blah')); +?> +==ArrayIterator== +count(), $ao->count()); + +//Extra args are ignored. +var_dump($ao->count('blah')); +?> +--EXPECTF-- +==ArrayObject== +int(99) +int(0) +int(99) +int(1) +int(99) +int(2) +int(99) +int(1) +int(1) +==ArrayIterator== +int(99) +int(0) +int(99) +int(1) +int(99) +int(2) +int(99) +int(1) +int(1) \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_exchangeArray_basic3.phpt b/ext/spl/tests/arrayObject_exchangeArray_basic3.phpt new file mode 100644 index 000000000..791ecd45b --- /dev/null +++ b/ext/spl/tests/arrayObject_exchangeArray_basic3.phpt @@ -0,0 +1,121 @@ +--TEST-- +SPL: ArrayObject::exchangeArray() basic usage with object as underlying data store. +--XFAIL-- +Failing in 5.2 due to http://thread.gmane.org/gmane.comp.php.devel/52545/focus=52559 +--FILE-- + exchangeArray() with objects:\n"; +$original = new C; +$ao = new ArrayObject($original); +$swapIn = new C; +try { + $copy = $ao->exchangeArray($swapIn); + $copy['addedToCopy'] = 'added To Copy'; +} catch (Exception $e) { + echo "Exception:" . $e->getMessage() . "\n"; +} +$swapIn->addedToSwapIn = 'added To Swap-In'; +$original->addedToOriginal = 'added To Original'; +var_dump($ao, $original, $swapIn, $copy); + + +echo "\n\n--> exchangeArray() with no arg:\n"; +unset($original, $ao, $swapIn, $copy); +$original = new C; +$ao = new ArrayObject($original); +try { + $copy = $ao->exchangeArray(); + $copy['addedToCopy'] = 'added To Copy'; +} catch (Exception $e) { + echo "Exception:" . $e->getMessage() . "\n"; +} +$original->addedToOriginal = 'added To Original'; +var_dump($ao, $original, $copy); + +echo "\n\n--> exchangeArray() with bad arg type:\n"; +unset($original, $ao, $swapIn, $copy); +$original = new C; +$ao = new ArrayObject($original); +try { + $copy = $ao->exchangeArray(null); + $copy['addedToCopy'] = 'added To Copy'; +} catch (Exception $e) { + echo "Exception:" . $e->getMessage() . "\n"; +} +$original->addedToOriginal = 'added To Original'; +var_dump($ao, $original, $copy); + +?> +--EXPECTF-- +--> exchangeArray() with objects: +object(ArrayObject)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToSwapIn"]=> + string(16) "added To Swap-In" +} +object(C)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToOriginal"]=> + string(17) "added To Original" +} +object(C)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToSwapIn"]=> + string(16) "added To Swap-In" +} +array(2) { + ["pub1"]=> + string(7) "public1" + ["addedToCopy"]=> + string(13) "added To Copy" +} + + +--> exchangeArray() with no arg: + +Warning: ArrayObject::exchangeArray() expects exactly 1 parameter, 0 given in %s on line 27 +object(ArrayObject)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToOriginal"]=> + string(17) "added To Original" +} +object(C)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToOriginal"]=> + string(17) "added To Original" +} +array(2) { + ["pub1"]=> + string(7) "public1" + ["addedToCopy"]=> + string(13) "added To Copy" +} + + +--> exchangeArray() with bad arg type: +Exception:Passed variable is not an array or object, using empty array instead + +Notice: Undefined variable: copy in %s on line 46 +object(ArrayObject)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToOriginal"]=> + string(17) "added To Original" +} +object(C)#%d (2) { + ["pub1"]=> + string(7) "public1" + ["addedToOriginal"]=> + string(17) "added To Original" +} +NULL diff --git a/ext/spl/tests/arrayObject_getFlags_basic1.phpt b/ext/spl/tests/arrayObject_getFlags_basic1.phpt new file mode 100644 index 000000000..b55e99310 --- /dev/null +++ b/ext/spl/tests/arrayObject_getFlags_basic1.phpt @@ -0,0 +1,25 @@ +--TEST-- +SPL: ArrayObject::getFlags() basic usage +--FILE-- +getFlags()); + +$ao = new ArrayObject(new ArrayObject(array(1,2,3)), ArrayObject::STD_PROP_LIST); +var_dump($ao->getFlags()); + +$ao = new ArrayObject(new ArrayIterator(new ArrayObject()), ArrayObject::ARRAY_AS_PROPS); +var_dump($ao->getFlags()); + +$ao = new ArrayObject(new ArrayObject(), ArrayObject::STD_PROP_LIST|ArrayObject::ARRAY_AS_PROPS); +var_dump($ao->getFlags()); + +$cao = clone $ao; +var_dump($cao->getFlags()); +?> +--EXPECTF-- +int(0) +int(1) +int(2) +int(3) +int(3) \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_getFlags_basic2.phpt b/ext/spl/tests/arrayObject_getFlags_basic2.phpt new file mode 100644 index 000000000..e171d79a0 --- /dev/null +++ b/ext/spl/tests/arrayObject_getFlags_basic2.phpt @@ -0,0 +1,24 @@ +--TEST-- +SPL: ArrayObject::getFlags() - ensure flags are passed on to nested array objects and iterators. +--FILE-- +getFlags()); + +$ao2 = new ArrayObject($ao); +var_dump($ao2->getFlags()); +var_dump($ao2->getIterator()->getFlags()); + +$ai = new ArrayIterator($ao); +var_dump($ai->getFlags()); + +$ao2 = new ArrayObject($ao, 0); +var_dump($ao2->getFlags()); + +?> +--EXPECTF-- +int(3) +int(3) +int(3) +int(3) +int(0) \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_getIteratorClass_basic1.phpt b/ext/spl/tests/arrayObject_getIteratorClass_basic1.phpt new file mode 100644 index 000000000..02186d287 --- /dev/null +++ b/ext/spl/tests/arrayObject_getIteratorClass_basic1.phpt @@ -0,0 +1,104 @@ +--TEST-- +SPL: ArrayObject::getIteratorClass and ArrayObject::setIteratorClass basic functionality +--FILE-- +1,'b'=>2,'c'=>3), 0, "MyIterator"); + +echo "--> Access using MyIterator:\n"; +var_dump($ao->getIteratorClass()); +var_dump($ao->getIterator()); +foreach($ao as $key=>$value) { + echo " $key=>$value\n"; +} + +echo "\n\n--> Access using ArrayIterator:\n"; +var_dump($ao->setIteratorClass("ArrayIterator")); +var_dump($ao->getIteratorClass()); +var_dump($ao->getIterator()); +foreach($ao as $key=>$value) { + echo "$key=>$value\n"; +} + +?> +--EXPECTF-- +--> Access using MyIterator: +string(10) "MyIterator" +object(MyIterator)#%d (3) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) +} + In MyIterator::rewind() + In MyIterator::valid() + In MyIterator::current() + In MyIterator::key() + a=>1 + In MyIterator::next() + In MyIterator::valid() + In MyIterator::current() + In MyIterator::key() + b=>2 + In MyIterator::next() + In MyIterator::valid() + In MyIterator::current() + In MyIterator::key() + c=>3 + In MyIterator::next() + In MyIterator::valid() + + +--> Access using ArrayIterator: +NULL +string(13) "ArrayIterator" +object(ArrayIterator)#%d (3) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) +} +a=>1 +b=>2 +c=>3 \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_ksort_basic1.phpt b/ext/spl/tests/arrayObject_ksort_basic1.phpt new file mode 100644 index 000000000..17745c30f --- /dev/null +++ b/ext/spl/tests/arrayObject_ksort_basic1.phpt @@ -0,0 +1,43 @@ +--TEST-- +SPL: Test ArrayObject::ksort() function : basic functionality with array based store +--FILE-- +4,'a'=>2,'q'=>3, 99=>'x')); +var_dump($ao1->ksort()); +var_dump($ao1); +var_dump($ao2->ksort('blah')); +var_dump($ao2); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::ksort() : basic functionality *** +bool(true) +object(ArrayObject)#%d (3) { + [0]=> + int(4) + [1]=> + int(2) + [2]=> + int(3) +} +bool(true) +object(ArrayObject)#%d (4) { + ["a"]=> + int(2) + ["b"]=> + int(4) + ["q"]=> + int(3) + [99]=> + string(1) "x" +} +===DONE=== diff --git a/ext/spl/tests/arrayObject_ksort_basic2.phpt b/ext/spl/tests/arrayObject_ksort_basic2.phpt new file mode 100644 index 000000000..609d6f531 --- /dev/null +++ b/ext/spl/tests/arrayObject_ksort_basic2.phpt @@ -0,0 +1,49 @@ +--TEST-- +SPL: Test ArrayObject::ksort() function : basic functionality with object base store +--FILE-- +ksort()); +var_dump($ao1, $c); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::ksort() : basic functionality *** +bool(true) +object(ArrayObject)#2 (4) { + ["b:private"]=> + string(5) "prop4" + ["a"]=> + string(5) "prop3" + ["x"]=> + string(5) "prop1" + ["z"]=> + string(5) "prop2" +} +object(C)#1 (4) { + ["b:private"]=> + string(5) "prop4" + ["a"]=> + string(5) "prop3" + ["x"]=> + string(5) "prop1" + ["z"]=> + string(5) "prop2" +} +===DONE=== \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods1.phpt b/ext/spl/tests/arrayObject_magicMethods1.phpt new file mode 100644 index 000000000..2730770e6 --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods1.phpt @@ -0,0 +1,183 @@ +--TEST-- +SPL: ArrayObject: ensure a wrapped object's magic methods for property access are not invoked when manipulating the ArrayObject's elements using []. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao['a'] = 'changed'; +$ao['dynamic'] = 'new'; +$ao['dynamic'] = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao['a']); +var_dump($ao['nonexistent']); +var_dump($ao['dynamic']); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao['a'])); +var_dump(isset($ao['nonexistent'])); +var_dump(isset($ao['dynamic'])); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao['a']); +unset($ao['nonexistent']); +unset($ao['dynamic']); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- +--> Write existent, non-existent and dynamic: + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Read existent, non-existent and dynamic: +string(7) "changed" + +Notice: Undefined index: nonexistent in %s on line 42 +NULL +string(11) "new.changed" + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> isset existent, non-existent and dynamic: +bool(true) +bool(false) +bool(true) + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Unset existent, non-existent and dynamic: + +Notice: Undefined index: nonexistent in %s on line 60 + Original wrapped object: +object(UsesMagic)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods2.phpt b/ext/spl/tests/arrayObject_magicMethods2.phpt new file mode 100644 index 000000000..425108abd --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods2.phpt @@ -0,0 +1,174 @@ +--TEST-- +SPL: ArrayObject: ensure a wrapped object's magic methods for property access are not invoked when manipulating the ArrayObject's elements using ->. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao->a = 'changed'; +$ao->dynamic = 'new'; +$ao->dynamic = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao->a); +var_dump($ao->nonexistent); +var_dump($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao->a)); +var_dump(isset($ao->nonexistent)); +var_dump(isset($ao->dynamic)); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao->a); +unset($ao->nonexistent); +unset($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- + +--> Write existent, non-existent and dynamic: + Original wrapped object: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Read existent, non-existent and dynamic: +string(7) "changed" + +Notice: Undefined property: ArrayObject::$nonexistent in %s on line 42 +NULL +string(11) "new.changed" + Original wrapped object: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> isset existent, non-existent and dynamic: +bool(true) +bool(false) +bool(true) + Original wrapped object: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Unset existent, non-existent and dynamic: + Original wrapped object: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods3.phpt b/ext/spl/tests/arrayObject_magicMethods3.phpt new file mode 100644 index 000000000..29080f25a --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods3.phpt @@ -0,0 +1,183 @@ +--TEST-- +SPL: ArrayObject: ensure a wrapped object's magic methods for property access are not invoked when manipulating the ArrayObject's elements using -> and ArrayObject::ARRAY_AS_PROPS. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao->a = 'changed'; +$ao->dynamic = 'new'; +$ao->dynamic = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao->a); +var_dump($ao->nonexistent); +var_dump($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao->a)); +var_dump(isset($ao->nonexistent)); +var_dump(isset($ao->dynamic)); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao->a); +unset($ao->nonexistent); +unset($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- +--> Write existent, non-existent and dynamic: + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Read existent, non-existent and dynamic: +string(7) "changed" + +Notice: Undefined index: nonexistent in %s on line 42 +NULL +string(11) "new.changed" + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> isset existent, non-existent and dynamic: +bool(true) +bool(false) +bool(true) + Original wrapped object: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Unset existent, non-existent and dynamic: + +Notice: Undefined index: nonexistent in %s on line 60 + Original wrapped object: +object(UsesMagic)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(ArrayObject)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods4.phpt b/ext/spl/tests/arrayObject_magicMethods4.phpt new file mode 100644 index 000000000..967103510 --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods4.phpt @@ -0,0 +1,186 @@ +--TEST-- +SPL: ArrayObject: ensure the magic methods for property access of a subclass of ArrayObject are not invoked when manipulating its elements using []. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao['a'] = 'changed'; +$ao['dynamic'] = 'new'; +$ao['dynamic'] = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao['a']); +var_dump($ao['nonexistent']); +var_dump($ao['dynamic']); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao['a'])); +var_dump(isset($ao['nonexistent'])); +var_dump(isset($ao['dynamic'])); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao['a']); +unset($ao['nonexistent']); +unset($ao['dynamic']); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- +--> Write existent, non-existent and dynamic: + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Read existent, non-existent and dynamic: +string(7) "changed" + +Notice: Undefined index: nonexistent in %s on line 45 +NULL +string(11) "new.changed" + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> isset existent, non-existent and dynamic: +bool(true) +bool(false) +bool(true) + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Unset existent, non-existent and dynamic: + +Notice: Undefined index: nonexistent in %s on line 63 + Original wrapped object: +object(C)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods5.phpt b/ext/spl/tests/arrayObject_magicMethods5.phpt new file mode 100644 index 000000000..0b866588e --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods5.phpt @@ -0,0 +1,187 @@ +--TEST-- +SPL: ArrayObject: ensure the magic methods for property access of a subclass of ArrayObject ARE invoked when manipulating its elements using ->. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao->a = 'changed'; +$ao->dynamic = 'new'; +$ao->dynamic = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao->a); +var_dump($ao->nonexistent); +var_dump($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao->a)); +var_dump(isset($ao->nonexistent)); +var_dump(isset($ao->dynamic)); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao->a); +unset($ao->nonexistent); +unset($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- + +--> Write existent, non-existent and dynamic: +In UsesMagic::__set(a,changed) +In UsesMagic::__set(dynamic,new) +In UsesMagic::__set(dynamic,new.changed) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Read existent, non-existent and dynamic: +In UsesMagic::__get(a) +NULL +In UsesMagic::__get(nonexistent) +NULL +In UsesMagic::__get(dynamic) +NULL + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> isset existent, non-existent and dynamic: +In UsesMagic::__isset(a) +bool(false) +In UsesMagic::__isset(nonexistent) +bool(false) +In UsesMagic::__isset(dynamic) +bool(false) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Unset existent, non-existent and dynamic: +In UsesMagic::__unset(a) +In UsesMagic::__unset(nonexistent) +In UsesMagic::__unset(dynamic) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_magicMethods6.phpt b/ext/spl/tests/arrayObject_magicMethods6.phpt new file mode 100644 index 000000000..3b3fff8f7 --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods6.phpt @@ -0,0 +1,186 @@ +--TEST-- +SPL: ArrayObject: ensure the magic methods for property access of a subclass of ArrayObject are not invoked when manipulating its elements using -> ArrayObject::ARRAY_AS_PROPS. +--FILE-- + Write existent, non-existent and dynamic:\n"; +$ao->a = 'changed'; +$ao->dynamic = 'new'; +$ao->dynamic = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao->a); +var_dump($ao->nonexistent); +var_dump($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao->a)); +var_dump(isset($ao->nonexistent)); +var_dump(isset($ao->dynamic)); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao->a); +unset($ao->nonexistent); +unset($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- +--> Write existent, non-existent and dynamic: + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Read existent, non-existent and dynamic: +string(7) "changed" + +Notice: Undefined index: nonexistent in %s on line 45 +NULL +string(11) "new.changed" + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> isset existent, non-existent and dynamic: +bool(true) +bool(false) +bool(true) + Original wrapped object: +object(C)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (5) { + ["a"]=> + string(7) "changed" + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" + ["dynamic"]=> + string(11) "new.changed" +} + +--> Unset existent, non-existent and dynamic: + +Notice: Undefined index: nonexistent in %s on line 63 + Original wrapped object: +object(C)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (3) { + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} \ No newline at end of file diff --git a/ext/spl/tests/arrayObject_natcasesort_basic1.phpt b/ext/spl/tests/arrayObject_natcasesort_basic1.phpt new file mode 100644 index 000000000..834da6c69 --- /dev/null +++ b/ext/spl/tests/arrayObject_natcasesort_basic1.phpt @@ -0,0 +1,50 @@ +--TEST-- +SPL: Test ArrayObject::natcasesort() function : basic functionality +--FILE-- +'boo10','b'=>'boo1','c'=>'boo2','d'=>'boo22','e'=>'BOO5')); +var_dump($ao1->natcasesort()); +var_dump($ao1); +var_dump($ao2->natcasesort('blah')); +var_dump($ao2); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::natcasesort() : basic functionality *** +bool(true) +object(ArrayObject)#%d (5) { + [1]=> + string(4) "boo1" + [2]=> + string(4) "boo2" + [4]=> + string(4) "BOO5" + [0]=> + string(5) "boo10" + [3]=> + string(5) "boo22" +} +bool(true) +object(ArrayObject)#%d (5) { + ["b"]=> + string(4) "boo1" + ["c"]=> + string(4) "boo2" + ["e"]=> + string(4) "BOO5" + ["a"]=> + string(5) "boo10" + ["d"]=> + string(5) "boo22" +} +===DONE=== diff --git a/ext/spl/tests/arrayObject_natsort_basic1.phpt b/ext/spl/tests/arrayObject_natsort_basic1.phpt new file mode 100644 index 000000000..7ade720f4 --- /dev/null +++ b/ext/spl/tests/arrayObject_natsort_basic1.phpt @@ -0,0 +1,50 @@ +--TEST-- +SPL: Test ArrayObject::natsort() function : basic functionality +--FILE-- +'boo10','b'=>'boo1','c'=>'boo2','d'=>'boo22','e'=>'BOO5')); +var_dump($ao1->natsort()); +var_dump($ao1); +var_dump($ao2->natsort('blah')); +var_dump($ao2); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::natsort() : basic functionality *** +bool(true) +object(ArrayObject)#%d (5) { + [4]=> + string(4) "BOO5" + [1]=> + string(4) "boo1" + [2]=> + string(4) "boo2" + [0]=> + string(5) "boo10" + [3]=> + string(5) "boo22" +} +bool(true) +object(ArrayObject)#%d (5) { + ["e"]=> + string(4) "BOO5" + ["b"]=> + string(4) "boo1" + ["c"]=> + string(4) "boo2" + ["a"]=> + string(5) "boo10" + ["d"]=> + string(5) "boo22" +} +===DONE=== diff --git a/ext/spl/tests/arrayObject_setFlags_basic1.phpt b/ext/spl/tests/arrayObject_setFlags_basic1.phpt new file mode 100644 index 000000000..e420b0401 --- /dev/null +++ b/ext/spl/tests/arrayObject_setFlags_basic1.phpt @@ -0,0 +1,53 @@ +--TEST-- +SPL: ArrayObject::setFlags basic usage with ArrayObject::ARRAY_AS_PROPS. +--XFAIL-- +Currently fails on php.net due to bug 45622. +--FILE-- +p)); + // read + var_dump($ao->p); + // write + $ao->p = $ao->p . '.changed'; + var_dump($ao->p); +} + +$ao = new C(array('p'=>'array element')); +$ao->setFlags(ArrayObject::ARRAY_AS_PROPS); + +echo "\n--> Access the real property:\n"; +access_p($ao); + +echo "\n--> Remove the real property and access the array element:\n"; +unset($ao->p); +access_p($ao); + +echo "\n--> Remove the array element and try access again:\n"; +unset($ao->p); +access_p($ao); +?> +--EXPECTF-- +--> Access the real property: +bool(true) +string(15) "object property" +string(23) "object property.changed" + +--> Remove the real property and access the array element: +bool(true) +string(13) "array element" +string(21) "array element.changed" + +--> Remove the array element and try access again: +bool(false) + +Notice: Undefined index: p in %s on line 10 +NULL + +Notice: Undefined index: p in %s on line 12 +string(8) ".changed" diff --git a/ext/spl/tests/arrayObject_setFlags_basic2.phpt b/ext/spl/tests/arrayObject_setFlags_basic2.phpt new file mode 100644 index 000000000..1af312ab4 --- /dev/null +++ b/ext/spl/tests/arrayObject_setFlags_basic2.phpt @@ -0,0 +1,29 @@ +--TEST-- +SPL: Ensure access to non-visible properties falls back to dimension access with ArrayObject::ARRAY_AS_PROPS. +--FILE-- +x); + } +} + +$c = new C(array('x'=>'public')); + +$c->setFlags(ArrayObject::ARRAY_AS_PROPS); +C::go($c); +var_dump($c->x); + + +$c->setFlags(0); +C::go($c); +var_dump($c->x); +?> +--EXPECTF-- +string(6) "secret" +string(6) "public" +string(6) "secret" + +Fatal error: Cannot access private property C::$x in %s on line 19 diff --git a/ext/spl/tests/arrayObject_setIteratorClass_error1.phpt b/ext/spl/tests/arrayObject_setIteratorClass_error1.phpt new file mode 100644 index 000000000..85c31b500 --- /dev/null +++ b/ext/spl/tests/arrayObject_setIteratorClass_error1.phpt @@ -0,0 +1,57 @@ +--TEST-- +SPL: ArrayObject::setIteratorClass with bad iterator class. +--FILE-- +1,'b'=>2,'c'=>3)); + $ao->setIteratorClass("nonExistentClass"); + foreach($ao as $key=>$value) { + echo " $key=>$value\n"; + } +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +try { + $ao = new ArrayObject(array('a'=>1,'b'=>2,'c'=>3)); + $ao->setIteratorClass("stdClass"); + foreach($ao as $key=>$value) { + echo " $key=>$value\n"; + } +} catch (Exception $e) { + var_dump($e->getMessage()); +} + + +try { + $ao = new ArrayObject(array('a'=>1,'b'=>2,'c'=>3), 0, "nonExistentClass"); + foreach($ao as $key=>$value) { + echo " $key=>$value\n"; + } +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +try { + $ao = new ArrayObject(array('a'=>1,'b'=>2,'c'=>3), 0, "stdClass"); + foreach($ao as $key=>$value) { + echo " $key=>$value\n"; + } +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +?> +--EXPECTF-- + +Warning: ArrayObject::setIteratorClass() expects parameter 1 to be a class name derived from Iterator, 'nonExistentClass' given in %s on line 4 + a=>1 + b=>2 + c=>3 + +Warning: ArrayObject::setIteratorClass() expects parameter 1 to be a class name derived from Iterator, 'stdClass' given in %s on line 14 + a=>1 + b=>2 + c=>3 +string(113) "ArrayObject::__construct() expects parameter 3 to be a class name derived from Iterator, 'nonExistentClass' given" +string(105) "ArrayObject::__construct() expects parameter 3 to be a class name derived from Iterator, 'stdClass' given" diff --git a/ext/spl/tests/arrayObject_uasort_basic1.phpt b/ext/spl/tests/arrayObject_uasort_basic1.phpt new file mode 100644 index 000000000..a1619b8d3 --- /dev/null +++ b/ext/spl/tests/arrayObject_uasort_basic1.phpt @@ -0,0 +1,41 @@ +--TEST-- +SPL: Test ArrayObject::uasort() function : basic functionality +--FILE-- +uasort('cmp'); +var_dump($ao); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::uasort() : basic functionality *** +object(ArrayObject)#%d (3) { + [1]=> + int(3) + [0]=> + int(2) + [2]=> + int(1) +} +===DONE=== diff --git a/ext/spl/tests/arrayObject_uasort_error1.phpt b/ext/spl/tests/arrayObject_uasort_error1.phpt new file mode 100644 index 000000000..0a766102b --- /dev/null +++ b/ext/spl/tests/arrayObject_uasort_error1.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test ArrayObject::uasort() function : wrong arg count +--FILE-- +uasort(); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} + +try { + $ao->uasort(1,2); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} +?> +===DONE=== +--EXPECTF-- +Function expects exactly one argument +Function expects exactly one argument +===DONE=== diff --git a/ext/spl/tests/arrayObject_uksort_basic1.phpt b/ext/spl/tests/arrayObject_uksort_basic1.phpt new file mode 100644 index 000000000..86048d354 --- /dev/null +++ b/ext/spl/tests/arrayObject_uksort_basic1.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test ArrayObject::uksort() function : basic functionality +--FILE-- +0, 2=>1, 5=>2, 6=>3, 1=>4)); + +$ao->uksort('cmp'); +var_dump($ao); +?> +===DONE=== +--EXPECTF-- +*** Testing ArrayObject::uksort() : basic functionality *** +object(ArrayObject)#%d (5) { + [6]=> + int(3) + [5]=> + int(2) + [3]=> + int(0) + [2]=> + int(1) + [1]=> + int(4) +} +===DONE=== diff --git a/ext/spl/tests/arrayObject_uksort_error1.phpt b/ext/spl/tests/arrayObject_uksort_error1.phpt new file mode 100644 index 000000000..56b449af3 --- /dev/null +++ b/ext/spl/tests/arrayObject_uksort_error1.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test ArrayObject::uksort() function : wrong arg count +--FILE-- +uksort(); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} + +try { + $ao->uksort(1,2); +} catch (BadMethodCallException $e) { + echo $e->getMessage() . "\n"; +} +?> +===DONE=== +--EXPECTF-- +Function expects exactly one argument +Function expects exactly one argument +===DONE=== diff --git a/ext/spl/tests/array_001.phpt b/ext/spl/tests/array_001.phpt index 1c7566ecb..4f73406d3 100755 --- a/ext/spl/tests/array_001.phpt +++ b/ext/spl/tests/array_001.phpt @@ -38,7 +38,7 @@ var_dump($ar); ===DONE=== --EXPECTF-- -object(ArrayObject)#1 (2) { +object(ArrayObject)#%d (2) { [0]=> int(0) [1]=> @@ -61,7 +61,7 @@ array(6) { int(5) } string(1) "a" -object(ArrayObject)#1 (5) { +object(ArrayObject)#%d (5) { [0]=> int(0) [1]=> @@ -84,13 +84,13 @@ NULL Notice: Undefined offset: 7 in %sarray_001.php on line %d Notice: Undefined index: c in %sarray_001.php on line %d -object(ArrayObject)#1 (2) { +object(ArrayObject)#%d (2) { [0]=> int(0) [2]=> int(2) } -object(ArrayObject)#1 (4) { +object(ArrayObject)#%d (4) { [0]=> int(0) [2]=> diff --git a/ext/spl/tests/array_026.phpt b/ext/spl/tests/array_026.phpt new file mode 100644 index 000000000..94642f04b --- /dev/null +++ b/ext/spl/tests/array_026.phpt @@ -0,0 +1,21 @@ +--TEST-- +SPL: ArrayObject indirect offsetGet overwriting EG(uninitialized_zvar_ptr) +--FILE-- + +--EXPECTF-- +Notice: Undefined variable: test3 in %s%earray_026.php on line %d +object(ArrayObject)#%d (1) { + ["d1"]=> + array(2) { + ["d2"]=> + string(5) "hello" + ["d3"]=> + string(5) "world" + } +} +NULL diff --git a/ext/spl/tests/bug46031.phpt b/ext/spl/tests/bug46031.phpt new file mode 100644 index 000000000..9261ff0fe --- /dev/null +++ b/ext/spl/tests/bug46031.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #46031 (Segfault in AppendIterator::next) +--FILE-- +next()); +?> +--EXPECT-- +NULL diff --git a/ext/spl/tests/bug46051.phpt b/ext/spl/tests/bug46051.phpt new file mode 100644 index 000000000..e993951ff --- /dev/null +++ b/ext/spl/tests/bug46051.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #46051 (SplFileInfo::openFile - memory overlap) +--FILE-- +openFile(NULL, NULL, NULL); +} catch (Exception $e) { } + +var_dump($x->getPathName()); +--EXPECTF-- +string(%d) "%sbug46051.php" diff --git a/ext/spl/tests/bug46053.phpt b/ext/spl/tests/bug46053.phpt new file mode 100644 index 000000000..75da7f3bb --- /dev/null +++ b/ext/spl/tests/bug46053.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #46053 (SplFileObject::seek - Endless loop) +--FILE-- +getPathName(); +$x->seek(10); +$x->seek(0); +var_dump(trim($x->fgets())); +--EXPECTF-- +string(%d) "accept()); + +?> +--EXPECT-- +bool(false) diff --git a/ext/spl/tests/bug46115.phpt b/ext/spl/tests/bug46115.phpt new file mode 100644 index 000000000..b58559913 --- /dev/null +++ b/ext/spl/tests/bug46115.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #46115 (Memory leak when calling a method using Reflection) +--SKIPIF-- + +--FILE-- +invoke($h); +?> +DONE +--EXPECT-- +DONE diff --git a/ext/spl/tests/class_implements_basic.phpt b/ext/spl/tests/class_implements_basic.phpt new file mode 100644 index 000000000..1170b214f --- /dev/null +++ b/ext/spl/tests/class_implements_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +SPL: Test class_implements() function : basic +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing class_implements() : basic *** +array(1) { + ["foo"]=> + string(3) "foo" +} +array(1) { + ["foo"]=> + string(3) "foo" +} +===DONE=== diff --git a/ext/spl/tests/class_implements_basic2.phpt b/ext/spl/tests/class_implements_basic2.phpt new file mode 100644 index 000000000..ea25e5b98 --- /dev/null +++ b/ext/spl/tests/class_implements_basic2.phpt @@ -0,0 +1,74 @@ +--TEST-- +SPL: Test class_implements() function : basic +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing class_implements() : basic *** +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(1) { + ["foo"]=> + string(3) "foo" +} +array(1) { + ["foo"]=> + string(3) "foo" +} +===DONE=== diff --git a/ext/spl/tests/class_implements_error.phpt b/ext/spl/tests/class_implements_error.phpt new file mode 100644 index 000000000..ad5dd4378 --- /dev/null +++ b/ext/spl/tests/class_implements_error.phpt @@ -0,0 +1,28 @@ +--TEST-- +SPL: Test class_implements() function : error +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing class_implements() : error *** + +Warning: class_implements() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +Warning: class_implements() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/spl/tests/class_implements_variation.phpt b/ext/spl/tests/class_implements_variation.phpt new file mode 100644 index 000000000..52fdbcaf7 --- /dev/null +++ b/ext/spl/tests/class_implements_variation.phpt @@ -0,0 +1,45 @@ +--TEST-- +SPL: Test class_implements() function : variation - no interfaces and autoload +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing class_implements() : variation *** +--- testing no interfaces --- +array(0) { +} +array(0) { +} + +--- testing autoload --- +attempting to autoload non-existent + +Warning: class_implements(): Class non-existent does not exist and could not be loaded in %s on line %d +bool(false) + +Warning: class_implements(): Class non-existent2 does not exist in %s on line %d +bool(false) +===DONE=== diff --git a/ext/spl/tests/class_implements_variation1.phpt b/ext/spl/tests/class_implements_variation1.phpt new file mode 100644 index 000000000..d8a45ce6a --- /dev/null +++ b/ext/spl/tests/class_implements_variation1.phpt @@ -0,0 +1,221 @@ +--TEST-- +SPL: Test class_implements() function : variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + 'resource' => $res, +); + +// loop through each element of the array for pattern + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( class_implements($value, $autoload) ); +}; + +fclose($res); + +?> +===DONE=== +--EXPECTF-- +*** Testing class_implements() : variation *** + +--int 0-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--int 1-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--float .5-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--empty array-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--associative array-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - class_implements(): Class does not exist and could not be loaded, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - class_implements(): Class does not exist and could not be loaded, %s(%d) +bool(false) + +--instance of classWithToString-- +array(0) { +} + +--instance of classWithoutToString-- +array(0) { +} + +--undefined var-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--unset var-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) + +--resource-- +Error: 2 - class_implements(): object or string expected, %s(%d) +bool(false) +===DONE=== diff --git a/ext/spl/tests/class_implements_variation2.phpt b/ext/spl/tests/class_implements_variation2.phpt new file mode 100644 index 000000000..f6953577f --- /dev/null +++ b/ext/spl/tests/class_implements_variation2.phpt @@ -0,0 +1,259 @@ +--TEST-- +SPL: Test class_implements() function : variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //resource + 'resource' => $res, +); + +// loop through each element of the array for pattern + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( class_implements($class, $value) ); +}; + +fclose($res); + +?> +===DONE=== +--EXPECTF-- +*** Testing class_implements() : variation *** + +--int 0-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--int 1-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--int 12345-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--int -12345-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--float 10.5-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--float -10.5-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--float 12.3456789000e10-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--float -12.3456789000e10-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--float .5-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--empty array-- +Error: 2 - class_implements() expects parameter 2 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - class_implements() expects parameter 2 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - class_implements() expects parameter 2 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - class_implements() expects parameter 2 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--lowercase null-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--lowercase true-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--lowercase false-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--uppercase TRUE-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--uppercase FALSE-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--empty string DQ-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--empty string SQ-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--instance of classWithToString-- +Error: 2 - class_implements() expects parameter 2 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - class_implements() expects parameter 2 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--unset var-- +array(1) { + ["Traversable"]=> + string(11) "Traversable" +} + +--resource-- +Error: 2 - class_implements() expects parameter 2 to be boolean, resource given, %s(%d) +bool(false) +===DONE=== diff --git a/ext/spl/tests/countable_class_basic1.phpt b/ext/spl/tests/countable_class_basic1.phpt new file mode 100644 index 000000000..11d7637ba --- /dev/null +++ b/ext/spl/tests/countable_class_basic1.phpt @@ -0,0 +1,28 @@ +--TEST-- +SPL: Test shape of interface Countable. +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Interface [ interface Countable ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [1] { + Method [ abstract public method count ] { + } + } +} diff --git a/ext/spl/tests/countable_count_variation1.phpt b/ext/spl/tests/countable_count_variation1.phpt new file mode 100644 index 000000000..3538a20b2 --- /dev/null +++ b/ext/spl/tests/countable_count_variation1.phpt @@ -0,0 +1,68 @@ +--TEST-- +SPL: Countable::count() with wrong return types and exception. +--FILE-- +getMessage(); +} + +?> +--EXPECTF-- +Count returns null: +int(0) +Count returns a string: +int(0) +Count returns an object: + +Notice: Object of class returnObject could not be converted to int in %s on line 40 +int(1) +Count returns an array: +int(1) +Count throws an exception: +Thrown from count \ No newline at end of file diff --git a/ext/spl/tests/dit_002.phpt b/ext/spl/tests/dit_002.phpt index f18d1198d..ed9ef785f 100755 --- a/ext/spl/tests/dit_002.phpt +++ b/ext/spl/tests/dit_002.phpt @@ -1,7 +1,7 @@ --TEST-- SPL: DirectoryIterator defaults --SKIPIF-- - + --FILE-- test($checks); --EXPECTF-- Exception: MyCachingIterator does not use a full cache (see CachingIterator::__construct) - -Notice: Undefined index: 0 in %siterator_044.php on line %d Exception: MyCachingIterator does not use a full cache (see CachingIterator::__construct) Warning: CachingIterator::offsetExists() expects exactly 1 parameter, 0 given in %siterator_044.php on line %d diff --git a/ext/sqlite/config.m4 b/ext/sqlite/config.m4 index 4c7a3c8a3..bd1b1c294 100644 --- a/ext/sqlite/config.m4 +++ b/ext/sqlite/config.m4 @@ -1,9 +1,9 @@ -dnl $Id: config.m4,v 1.41.2.1.2.2 2007/07/03 17:25:35 sniper Exp $ +dnl $Id: config.m4,v 1.41.2.1.2.4 2008/09/13 00:24:12 moriyoshi Exp $ dnl config.m4 for extension sqlite dnl vim:et:ts=2:sw=2 PHP_ARG_WITH(sqlite, for sqlite support, -[ --without-sqlite Do not include sqlite support. DIR is the sqlite base +[ --without-sqlite=DIR Do not include sqlite support. DIR is the sqlite base install directory [BUNDLED]], yes) PHP_ARG_ENABLE(sqlite-utf8, whether to enable UTF-8 support in sqlite (default: ISO-8859-1), diff --git a/ext/sqlite/pdo_sqlite2.c b/ext/sqlite/pdo_sqlite2.c index 5a6f7f5c2..5885486a0 100644 --- a/ext/sqlite/pdo_sqlite2.c +++ b/ext/sqlite/pdo_sqlite2.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sqlite2.c,v 1.6.2.3.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: pdo_sqlite2.c,v 1.6.2.3.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif diff --git a/ext/sqlite/php_sqlite.h b/ext/sqlite/php_sqlite.h index 83e420097..29032781b 100644 --- a/ext/sqlite/php_sqlite.h +++ b/ext/sqlite/php_sqlite.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Marcus Boerger | +----------------------------------------------------------------------+ - $Id: php_sqlite.h,v 1.32.2.2.2.3 2007/12/31 07:20:11 sebastian Exp $ + $Id: php_sqlite.h,v 1.32.2.2.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef PHP_SQLITE_H diff --git a/ext/sqlite/sess_sqlite.c b/ext/sqlite/sess_sqlite.c index e2671051c..1a4608215 100644 --- a/ext/sqlite/sess_sqlite.c +++ b/ext/sqlite/sess_sqlite.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sess_sqlite.c,v 1.18.2.1.2.3 2007/12/31 07:20:11 sebastian Exp $ */ +/* $Id: sess_sqlite.c,v 1.18.2.1.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c index 84cf22cd3..17576f0d5 100644 --- a/ext/sqlite/sqlite.c +++ b/ext/sqlite/sqlite.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Marcus Boerger | +----------------------------------------------------------------------+ - $Id: sqlite.c,v 1.166.2.13.2.10 2007/12/31 07:20:11 sebastian Exp $ + $Id: sqlite.c,v 1.166.2.13.2.12 2008/12/31 11:17:44 sebastian Exp $ */ #ifdef HAVE_CONFIG_H @@ -1128,7 +1128,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,v 1.166.2.13.2.10 2007/12/31 07:20:11 sebastian Exp $"); + php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.166.2.13.2.12 2008/12/31 11:17:44 sebastian Exp $"); 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(); @@ -2917,11 +2917,13 @@ static enum callback_prep_t prep_callback_struct(struct php_sqlite_db *db, int i MAKE_STD_ZVAL(alloc_funcs->step); *(alloc_funcs->step) = *step; zval_copy_ctor(alloc_funcs->step); + INIT_PZVAL(alloc_funcs->step); if (is_agg) { MAKE_STD_ZVAL(alloc_funcs->fini); *(alloc_funcs->fini) = *fini; zval_copy_ctor(alloc_funcs->fini); + INIT_PZVAL(alloc_funcs->fini); } else { alloc_funcs->fini = NULL; } diff --git a/ext/standard/array.c b/ext/standard/array.c index 6f154b7d9..bf11bdc29 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.308.2.21.2.55 2008/03/12 19:13:00 felipe Exp $ */ +/* $Id: array.c,v 1.308.2.21.2.65 2009/02/13 22:26:46 andrei Exp $ */ #include "php.h" #include "php_ini.h" @@ -667,6 +667,7 @@ PHP_FUNCTION(usort) PHP_ARRAY_CMP_FUNC_RESTORE(); WRONG_PARAM_COUNT; } + target_hash = HASH_OF(*array); if (!target_hash) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument should be an array"); @@ -675,6 +676,7 @@ PHP_FUNCTION(usort) } PHP_ARRAY_CMP_FUNC_CHECK(BG(user_compare_func_name)) + BG(user_compare_fci_cache).initialized = 0; if (zend_hash_sort(target_hash, zend_qsort, array_user_compare, 1 TSRMLS_CC) == FAILURE) { PHP_ARRAY_CMP_FUNC_RESTORE(); @@ -707,6 +709,7 @@ PHP_FUNCTION(uasort) } PHP_ARRAY_CMP_FUNC_CHECK(BG(user_compare_func_name)) + BG(user_compare_fci_cache).initialized = 0; if (zend_hash_sort(target_hash, zend_qsort, array_user_compare, 0 TSRMLS_CC) == FAILURE) { PHP_ARRAY_CMP_FUNC_RESTORE(); @@ -790,6 +793,7 @@ PHP_FUNCTION(uksort) } PHP_ARRAY_CMP_FUNC_CHECK(BG(user_compare_func_name)) + BG(user_compare_fci_cache).initialized = 0; if (zend_hash_sort(target_hash, zend_qsort, array_user_key_compare, 0 TSRMLS_CC) == FAILURE) { PHP_ARRAY_CMP_FUNC_RESTORE(); @@ -1330,7 +1334,7 @@ static int php_valid_var_name(char *var_name, int len) /* {{{ */ Imports variables into symbol table from an array */ PHP_FUNCTION(extract) { - zval **var_array, **z_extract_type, **prefix; + zval **var_array, *orig_var_array, **z_extract_type, **prefix; zval **entry, *data; char *var_name; smart_str final_name = {0}; @@ -1387,7 +1391,15 @@ PHP_FUNCTION(extract) php_error_docref(NULL TSRMLS_CC, E_WARNING, "First argument should be an array"); return; } - + + /* var_array is passed by ref for the needs of EXTR_REFS (needs to + * work on the original array to create refs to its members) + * simulate pass_by_value if EXTR_REFS is not used */ + if (!extract_refs) { + orig_var_array = *var_array; + SEPARATE_ARG_IF_REF((*var_array)); + } + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(var_array), &pos); while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(var_array), (void **)&entry, &pos) == SUCCESS) { key_type = zend_hash_get_current_key_ex(Z_ARRVAL_PP(var_array), &var_name, &var_name_len, &num_key, 0, &pos); @@ -1462,20 +1474,13 @@ PHP_FUNCTION(extract) if (extract_refs) { zval **orig_var; + SEPARATE_ZVAL_TO_MAKE_IS_REF(entry); + zval_add_ref(entry); + if (zend_hash_find(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) &orig_var) == SUCCESS) { - SEPARATE_ZVAL_TO_MAKE_IS_REF(entry); - zval_add_ref(entry); - zval_ptr_dtor(orig_var); - *orig_var = *entry; } else { - if ((*var_array)->refcount > 1 || *entry == EG(uninitialized_zval_ptr)) { - SEPARATE_ZVAL_TO_MAKE_IS_REF(entry); - } else { - (*entry)->is_ref = 1; - } - zval_add_ref(entry); zend_hash_update(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) entry, sizeof(zval *), NULL); } } else { @@ -1494,6 +1499,10 @@ PHP_FUNCTION(extract) zend_hash_move_forward_ex(Z_ARRVAL_PP(var_array), &pos); } + if (!extract_refs) { + zval_ptr_dtor(var_array); + *var_array = orig_var_array; + } smart_str_free(&final_name); RETURN_LONG(count); @@ -2001,7 +2010,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end) zval **stack, /* Input stack */ **val; /* Value to be popped */ char *key = NULL; - int key_len = 0; + uint key_len = 0; ulong index; /* Get the arguments and do error-checking */ @@ -2019,10 +2028,11 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end) } /* Get the first or last value and copy it into the return value */ - if (off_the_end) + if (off_the_end) { zend_hash_internal_pointer_end(Z_ARRVAL_PP(stack)); - else + } else { zend_hash_internal_pointer_reset(Z_ARRVAL_PP(stack)); + } zend_hash_get_current_data(Z_ARRVAL_PP(stack), (void **)&val); RETVAL_ZVAL(*val, 1, 0); @@ -2250,7 +2260,7 @@ PHP_FUNCTION(array_slice) /* ..and the length */ if (length < 0) { length = num_in - offset + length; - } else if (((unsigned) offset + (unsigned) length) > (unsigned) num_in) { + } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in) { length = num_in - offset; } @@ -2816,7 +2826,7 @@ PHP_FUNCTION(array_change_key_case) } /* }}} */ -/* {{{ proto array array_unique(array input) +/* {{{ proto array array_unique(array input [, int sort_flags]) Removes duplicate values from array */ PHP_FUNCTION(array_unique) { @@ -2829,9 +2839,10 @@ PHP_FUNCTION(array_unique) }; struct bucketindex *arTmp, *cmpdata, *lastkept; unsigned int i; + long sort_type = SORT_REGULAR; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|l", &array, &sort_type) == FAILURE) { + return; } target_hash = HASH_OF(*array); if (!target_hash) { @@ -2839,6 +2850,8 @@ PHP_FUNCTION(array_unique) RETURN_FALSE; } + set_compare_func(sort_type TSRMLS_CC); + array_init(return_value); zend_hash_copy(Z_ARRVAL_P(return_value), target_hash, (copy_ctor_func_t) zval_add_ref, (void *)&tmp, sizeof(zval*)); @@ -2856,7 +2869,6 @@ PHP_FUNCTION(array_unique) arTmp[i].i = i; } arTmp[i].b = NULL; - set_compare_func(SORT_STRING TSRMLS_CC); zend_qsort((void *) arTmp, i, sizeof(struct bucketindex), array_data_compare TSRMLS_CC); /* go through the sorted array and delete duplicates from the copy */ @@ -2988,14 +3000,17 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa efree(callback_name); intersect_data_compare_func = zval_user_compare; BG(user_compare_func_name) = args[argc]; + BG(user_compare_fci_cache).initialized = 0; } else if (data_compare_type == INTERSECT_COMP_DATA_INTERNAL) { intersect_data_compare_func = zval_compare; } - if (Z_TYPE_PP(args[0]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array"); - RETVAL_NULL(); - goto out; + for (i = 0; i < argc; i++) { + if (Z_TYPE_PP(args[i]) != IS_ARRAY) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); + RETVAL_NULL(); + goto out; + } } array_init(return_value); @@ -3004,12 +3019,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa if (p->nKeyLength == 0) { ok = 1; for (i = 1; i < argc; i++) { - if (Z_TYPE_PP(args[i]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); - zval_dtor(return_value); - RETVAL_NULL(); - goto out; - } else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE || + if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE || (intersect_data_compare_func && intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) { ok = 0; @@ -3023,12 +3033,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa } else { ok = 1; for (i = 1; i < argc; i++) { - if (Z_TYPE_PP(args[i]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); - zval_dtor(return_value); - RETVAL_NULL(); - goto out; - } else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE || + if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE || (intersect_data_compare_func && intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) { ok = 0; @@ -3099,6 +3104,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int efree(callback_name); BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. This should never happen. Please report as a bug", data_compare_type); return; @@ -3160,6 +3166,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int intersect_key_compare_func = array_user_key_compare; intersect_data_compare_func = array_data_compare; BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } else if (data_compare_type == INTERSECT_COMP_DATA_USER && key_compare_type == INTERSECT_COMP_KEY_USER) { @@ -3187,6 +3194,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int intersect_key_compare_func = array_user_key_compare; intersect_data_compare_func = array_user_compare; BG(user_compare_func_name) = args[arr_argc + 1];/* data - key */ + BG(user_compare_fci_cache).initialized = 0; } else { efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. key_compare_type is %d. This should never happen. Please report as a bug", data_compare_type, key_compare_type); @@ -3245,6 +3253,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int if ((behavior & INTERSECT_NORMAL) && data_compare_type == INTERSECT_COMP_DATA_USER) { /* array_uintersect() */ BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } /* go through the lists and look for common values */ @@ -3254,6 +3263,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int key_compare_type == INTERSECT_COMP_KEY_USER) { BG(user_compare_func_name) = args[argc - 1]; + BG(user_compare_fci_cache).initialized = 0; } for (i = 1; i < arr_argc; i++) { @@ -3275,11 +3285,13 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int */ if (data_compare_type == INTERSECT_COMP_DATA_USER) { BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } if (intersect_data_compare_func(ptrs[0], ptrs[i] TSRMLS_CC) != 0) { c = 1; if (key_compare_type == INTERSECT_COMP_KEY_USER) { BG(user_compare_func_name) = args[argc - 1]; + BG(user_compare_fci_cache).initialized = 0; /* When KEY_USER, the last parameter is always the callback */ } /* we are going to the break */ @@ -3466,14 +3478,17 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty efree(callback_name); diff_data_compare_func = zval_user_compare; BG(user_compare_func_name) = args[argc]; + BG(user_compare_fci_cache).initialized = 0; } else if (data_compare_type == DIFF_COMP_DATA_INTERNAL) { diff_data_compare_func = zval_compare; } - if (Z_TYPE_PP(args[0]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array"); - RETVAL_NULL(); - goto out; + for (i = 0; i < argc; i++) { + if (Z_TYPE_PP(args[i]) != IS_ARRAY) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); + RETVAL_NULL(); + goto out; + } } array_init(return_value); @@ -3482,12 +3497,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty if (p->nKeyLength == 0) { ok = 1; for (i = 1; i < argc; i++) { - if (Z_TYPE_PP(args[i]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); - zval_dtor(return_value); - RETVAL_NULL(); - goto out; - } else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS && + if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS && (!diff_data_compare_func || diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) { ok = 0; @@ -3501,12 +3511,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty } else { ok = 1; for (i = 1; i < argc; i++) { - if (Z_TYPE_PP(args[i]) != IS_ARRAY) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1); - zval_dtor(return_value); - RETVAL_NULL(); - goto out; - } else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS && + if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS && (!diff_data_compare_func || diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) { ok = 0; @@ -3577,6 +3582,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ efree(callback_name); BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. This should never happen. Please report as a bug", data_compare_type); return; @@ -3638,6 +3644,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ diff_key_compare_func = array_user_key_compare; diff_data_compare_func = array_data_compare; BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } else if (data_compare_type == DIFF_COMP_DATA_USER && key_compare_type == DIFF_COMP_KEY_USER) { @@ -3665,6 +3672,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ diff_key_compare_func = array_user_key_compare; diff_data_compare_func = array_user_compare; BG(user_compare_func_name) = args[arr_argc + 1];/* data - key*/ + BG(user_compare_fci_cache).initialized = 0; } else { efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. key_compare_type is %d. This should never happen. Please report as a bug", data_compare_type, key_compare_type); @@ -3723,6 +3731,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ if (behavior == DIFF_NORMAL && data_compare_type == DIFF_COMP_DATA_USER) { /* array_udiff() */ BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } /* go through the lists and look for values of ptr[0] that are not in the others */ @@ -3732,6 +3741,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ key_compare_type == DIFF_COMP_KEY_USER) { BG(user_compare_func_name) = args[argc - 1]; + BG(user_compare_fci_cache).initialized = 0; } c = 1; for (i = 1; i < arr_argc; i++) { @@ -3759,12 +3769,14 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ if (*ptr) { if (data_compare_type == DIFF_COMP_DATA_USER) { BG(user_compare_func_name) = args[arr_argc]; + BG(user_compare_fci_cache).initialized = 0; } if (diff_data_compare_func(ptrs[0], ptr TSRMLS_CC) != 0) { /* the data is not the same */ c = -1; if (key_compare_type == DIFF_COMP_KEY_USER) { BG(user_compare_func_name) = args[argc - 1]; + BG(user_compare_fci_cache).initialized = 0; } } else { break; diff --git a/ext/standard/assert.c b/ext/standard/assert.c index c4fb5a13e..b9b8e95d5 100644 --- a/ext/standard/assert.c +++ b/ext/standard/assert.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: assert.c,v 1.60.2.3.2.7 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: assert.c,v 1.60.2.3.2.8 2008/12/31 11:17:44 sebastian Exp $ */ /* {{{ includes/startup/misc */ diff --git a/ext/standard/base64.c b/ext/standard/base64.c index b3179b99f..1f24c17f3 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Jim Winstead | +----------------------------------------------------------------------+ */ -/* $Id: base64.c,v 1.43.2.2.2.4 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: base64.c,v 1.43.2.2.2.7 2009/01/25 18:27:39 iliaa Exp $ */ #include @@ -153,7 +153,13 @@ PHPAPI unsigned char *php_base64_decode_ex(const unsigned char *str, int length, /* run through the whole string, converting as we go */ while ((ch = *current++) != '\0' && length-- > 0) { - if (ch == base64_pad) break; + if (ch == base64_pad) { + if (*current != '=' && (i % 4) == 1) { + efree(result); + return NULL; + } + continue; + } ch = base64_reverse_table[ch]; if ((!strict && ch < 0) || ch == -1) { /* a space or some other separator character, we simply skip over */ diff --git a/ext/standard/base64.h b/ext/standard/base64.h index 11a65e1b1..f01e30dd9 100644 --- a/ext/standard/base64.h +++ b/ext/standard/base64.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: base64.h,v 1.14.2.1.2.3 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: base64.h,v 1.14.2.1.2.4 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef BASE64_H #define BASE64_H diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 3d61f3d0c..1b3b07cd2 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.725.2.31.2.69 2008/03/20 00:55:26 dsp Exp $ */ +/* $Id: basic_functions.c,v 1.725.2.31.2.80 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "php_streams.h" @@ -59,7 +59,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #include #endif -#include +#include #if HAVE_ARPA_INET_H # include @@ -378,7 +378,7 @@ ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_extract, 0, 0, 1) - ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ + ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arg) /* ARRAY_INFO(0, arg, 0) */ ZEND_ARG_INFO(0, extract_type) ZEND_ARG_INFO(0, prefix) ZEND_END_ARG_INFO() @@ -3917,6 +3917,8 @@ static void basic_globals_ctor(php_basic_globals *basic_globals_p TSRMLS_DC) memset(&BG(mblen_state), 0, sizeof(BG(mblen_state))); #endif BG(incomplete_class) = incomplete_class_entry; + BG(page_uid) = -1; + BG(page_gid) = -1; } @@ -4131,6 +4133,7 @@ PHP_RINIT_FUNCTION(basic) memset(BG(strtok_table), 0, 256); BG(strtok_string) = NULL; BG(strtok_zval) = NULL; + BG(strtok_last) = NULL; BG(locale_string) = NULL; BG(user_compare_func_name) = NULL; BG(array_walk_func_name) = NULL; @@ -4219,6 +4222,8 @@ PHP_RSHUTDOWN_FUNCTION(basic) PHP_RSHUTDOWN(user_filters)(SHUTDOWN_FUNC_ARGS_PASSTHRU); + BG(page_uid) = -1; + BG(page_gid) = -1; return SUCCESS; } @@ -4944,6 +4949,7 @@ error options: 1 = send via email to 3rd parameter 4th option = additional headers 2 = send via tcp/ip to 3rd parameter (name or ip:port) 3 = save to file in 3rd parameter + 4 = send to SAPI logger directly */ /* {{{ proto bool error_log(string message [, int message_type [, string destination [, string extra_headers]]]) @@ -5046,7 +5052,13 @@ PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers T php_stream_write(stream, message, strlen(message)); php_stream_close(stream); break; - + case 4: /* send to SAPI */ + if (sapi_module.log_message) { + sapi_module.log_message(message); + } else { + return FAILURE; + } + break; default: php_log_err(message TSRMLS_CC); break; @@ -6305,7 +6317,11 @@ PHP_FUNCTION(parse_ini_file) Z_TYPE(fh) = ZEND_HANDLE_FILENAME; array_init(return_value); - zend_parse_ini_file(&fh, 0, ini_parser_cb, return_value); + if (zend_parse_ini_file(&fh, 0, ini_parser_cb, return_value) == FAILURE) { + zend_hash_destroy(Z_ARRVAL_P(return_value)); + efree(Z_ARRVAL_P(return_value)); + RETURN_FALSE; + } } /* }}} */ diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index b9269fe8a..e0dddabd7 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.h,v 1.139.2.4.2.7 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: basic_functions.h,v 1.139.2.4.2.8 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef BASIC_FUNCTIONS_H #define BASIC_FUNCTIONS_H diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c index f8fde93dd..585271cf2 100644 --- a/ext/standard/browscap.c +++ b/ext/standard/browscap.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: browscap.c,v 1.85.2.2.2.5 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: browscap.c,v 1.85.2.2.2.6 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "php_regex.h" diff --git a/ext/standard/crc32.c b/ext/standard/crc32.c index 44e711b1b..fd43e4686 100644 --- a/ext/standard/crc32.c +++ b/ext/standard/crc32.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: crc32.c,v 1.16.2.4.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: crc32.c,v 1.16.2.4.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "basic_functions.h" diff --git a/ext/standard/crc32.h b/ext/standard/crc32.h index 477bac1de..9182d8a26 100644 --- a/ext/standard/crc32.h +++ b/ext/standard/crc32.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: crc32.h,v 1.6.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: crc32.h,v 1.6.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ /* * This code implements the AUTODIN II polynomial diff --git a/ext/standard/credits.c b/ext/standard/credits.c index d6f0a8e6f..d96c7cb42 100644 --- a/ext/standard/credits.c +++ b/ext/standard/credits.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: credits.c,v 1.36.2.4.2.6 2008/04/10 05:32:26 philip Exp $ */ +/* $Id: credits.c,v 1.36.2.4.2.9 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "info.h" @@ -65,7 +65,7 @@ PHPAPI void php_print_credits(int flag TSRMLS_DC) php_info_print_table_header(2, "Contribution", "Authors"); CREDIT_LINE("Zend Scripting Language Engine", "Andi Gutmans, Zeev Suraski"); CREDIT_LINE("Extension Module API", "Andi Gutmans, Zeev Suraski, Andrei Zmievski"); - CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken, Sascha Schumann"); + CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken, Sascha Schumann, Jani Taskinen"); CREDIT_LINE("Win32 Port", "Shane Caraveo, Zeev Suraski, Wez Furlong"); CREDIT_LINE("Server API (SAPI) Abstraction Layer", "Andi Gutmans, Shane Caraveo, Zeev Suraski"); CREDIT_LINE("Streams Abstraction Layer", "Wez Furlong, Sara Golemon"); @@ -114,7 +114,7 @@ PHPAPI void php_print_credits(int flag TSRMLS_DC) /* Website Team */ php_info_print_table_start(); php_info_print_table_header(1, "PHP Website Team"); - php_info_print_table_row(1, "Hannes Magnusson, Colin Viebrock, Jim Winstead"); + php_info_print_table_row(1, "Rasmus Lerdorf, Hannes Magnusson, Philip Olson"); php_info_print_table_end(); } diff --git a/ext/standard/credits.h b/ext/standard/credits.h index f8466147a..8b524c9fd 100644 --- a/ext/standard/credits.h +++ b/ext/standard/credits.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: credits.h,v 1.11.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: credits.h,v 1.11.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef CREDITS_H #define CREDITS_H diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c index fa51d6f7d..a525402a7 100644 --- a/ext/standard/crypt.c +++ b/ext/standard/crypt.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Rasmus Lerdorf | +----------------------------------------------------------------------+ */ -/* $Id: crypt.c,v 1.62.2.1.2.7 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: crypt.c,v 1.62.2.1.2.8 2008/12/31 11:17:44 sebastian Exp $ */ #include #include "php.h" diff --git a/ext/standard/css.c b/ext/standard/css.c index e138ab6c6..ce0b0ffb6 100644 --- a/ext/standard/css.c +++ b/ext/standard/css.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: css.c,v 1.13.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: css.c,v 1.13.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "info.h" diff --git a/ext/standard/css.h b/ext/standard/css.h index ad80fa783..47bf1ae67 100644 --- a/ext/standard/css.h +++ b/ext/standard/css.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: css.h,v 1.6.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: css.h,v 1.6.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef CSS_H #define CSS_H diff --git a/ext/standard/cyr_convert.c b/ext/standard/cyr_convert.c index ff1bd5f94..588c1fe11 100644 --- a/ext/standard/cyr_convert.c +++ b/ext/standard/cyr_convert.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cyr_convert.c,v 1.27.2.3.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: cyr_convert.c,v 1.27.2.3.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #include diff --git a/ext/standard/cyr_convert.h b/ext/standard/cyr_convert.h index 970edc992..9c775fc49 100644 --- a/ext/standard/cyr_convert.h +++ b/ext/standard/cyr_convert.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cyr_convert.h,v 1.11.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: cyr_convert.h,v 1.11.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef CYR_CONVERT_H #define CYR_CONVERT_H diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index c0bb09be0..7f1a9d321 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: datetime.c,v 1.134.2.2.2.5 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: datetime.c,v 1.134.2.2.2.6 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "zend_operators.h" diff --git a/ext/standard/datetime.h b/ext/standard/datetime.h index c0c7a47d0..76f533f0e 100644 --- a/ext/standard/datetime.h +++ b/ext/standard/datetime.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: datetime.h,v 1.23.2.2.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: datetime.h,v 1.23.2.2.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef DATETIME_H #define DATETIME_H diff --git a/ext/standard/dir.c b/ext/standard/dir.c index f6737ed1a..c65cd9f8f 100644 --- a/ext/standard/dir.c +++ b/ext/standard/dir.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dir.c,v 1.147.2.3.2.16 2008/03/05 12:10:18 tony2001 Exp $ */ +/* $Id: dir.c,v 1.147.2.3.2.21 2008/12/31 11:17:44 sebastian Exp $ */ /* {{{ includes/startup/misc */ @@ -26,6 +26,7 @@ #include "php_dir.h" #include "php_string.h" #include "php_scandir.h" +#include "basic_functions.h" #ifdef HAVE_DIRENT_H #include @@ -220,6 +221,8 @@ static void _php_do_opendir(INTERNAL_FUNCTION_PARAMETERS, int createobject) if (dirp == NULL) { RETURN_FALSE; } + + dirp->flags |= PHP_STREAM_FLAG_NO_FCLOSE; php_set_default_dir(dirp->rsrc_id TSRMLS_CC); @@ -260,6 +263,11 @@ PHP_FUNCTION(closedir) FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + rsrc_id = dirp->rsrc_id; zend_list_delete(dirp->rsrc_id); @@ -287,7 +295,7 @@ PHP_FUNCTION(chroot) RETURN_FALSE; } - realpath_cache_clean(TSRMLS_C); + php_clear_stat_cache(TSRMLS_C); ret = chdir("/"); @@ -322,6 +330,15 @@ PHP_FUNCTION(chdir) RETURN_FALSE; } + if (BG(CurrentStatFile) && !IS_ABSOLUTE_PATH(BG(CurrentStatFile), strlen(BG(CurrentStatFile)))) { + efree(BG(CurrentStatFile)); + BG(CurrentStatFile) = NULL; + } + if (BG(CurrentLStatFile) && !IS_ABSOLUTE_PATH(BG(CurrentLStatFile), strlen(BG(CurrentLStatFile)))) { + efree(BG(CurrentLStatFile)); + BG(CurrentLStatFile) = NULL; + } + RETURN_TRUE; } /* }}} */ @@ -360,6 +377,11 @@ PHP_FUNCTION(rewinddir) FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + php_stream_rewinddir(dirp); } /* }}} */ @@ -374,6 +396,11 @@ PHP_NAMED_FUNCTION(php_if_readdir) FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + if (php_stream_readdir(dirp, &entry)) { RETURN_STRINGL(entry.d_name, strlen(entry.d_name), 1); } diff --git a/ext/standard/dl.c b/ext/standard/dl.c index f652d2536..8565b67c8 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dl.c,v 1.106.2.1.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: dl.c,v 1.106.2.1.2.7 2008/12/31 11:17:44 sebastian Exp $ */ #include "php.h" #include "dl.h" diff --git a/ext/standard/dl.h b/ext/standard/dl.h index 6b00fa74e..906c666be 100644 --- a/ext/standard/dl.h +++ b/ext/standard/dl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dl.h,v 1.23.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: dl.h,v 1.23.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef DL_H #define DL_H diff --git a/ext/standard/dns.c b/ext/standard/dns.c index a224a1cd9..9227cd32b 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dns.c,v 1.70.2.7.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: dns.c,v 1.70.2.7.2.9 2009/01/08 17:20:21 felipe Exp $ */ /* {{{ includes */ #include "php.h" @@ -472,14 +472,23 @@ static u_char *php_parserr(u_char *cp, querybuf *answer, int type_to_fetch, int add_assoc_stringl(*subarray, "os", cp, n, 1); cp += n; break; - case DNS_T_TXT: - add_assoc_string(*subarray, "type", "TXT", 1); - n = cp[0]; - tp = emalloc(n + 1); - memcpy(tp, cp + 1, n); - tp[n] = '\0'; - cp += dlen; - add_assoc_stringl(*subarray, "txt", tp, n, 0); + case DNS_T_TXT: + { + int ll = 0; + + add_assoc_string(*subarray, "type", "TXT", 1); + tp = emalloc(dlen + 1); + + while (ll < dlen) { + n = cp[ll]; + memcpy(tp + ll , cp + ll + 1, n); + ll = ll + n + 1; + } + tp[dlen] = '\0'; + cp += dlen; + + add_assoc_stringl(*subarray, "txt", tp, dlen - 1, 0); + } break; case DNS_T_SOA: add_assoc_string(*subarray, "type", "SOA", 1); diff --git a/ext/standard/dns.h b/ext/standard/dns.h index 356ced73e..6c3788cfd 100644 --- a/ext/standard/dns.h +++ b/ext/standard/dns.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dns.h,v 1.19.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: dns.h,v 1.19.2.1.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef DNS_H #define DNS_H diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 7f1aea174..19d25270c 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ | Ilia Alshanetsky | +----------------------------------------------------------------------+ */ -/* $Id: exec.c,v 1.113.2.3.2.10 2008/04/08 17:17:07 iliaa Exp $ */ +/* $Id: exec.c,v 1.113.2.3.2.11 2008/12/31 11:17:44 sebastian Exp $ */ #include #include "php.h" diff --git a/ext/standard/exec.h b/ext/standard/exec.h index 371f695e1..d63db57bc 100644 --- a/ext/standard/exec.h +++ b/ext/standard/exec.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: exec.h,v 1.24.2.3.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: exec.h,v 1.24.2.3.2.3 2008/12/31 11:17:44 sebastian Exp $ */ #ifndef EXEC_H #define EXEC_H diff --git a/ext/standard/file.c b/ext/standard/file.c index 8ff709c58..10f987fe2 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: file.c,v 1.409.2.6.2.31 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: file.c,v 1.409.2.6.2.38 2008/12/31 11:17:44 sebastian Exp $ */ /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */ @@ -195,10 +195,10 @@ PHP_MINIT_FUNCTION(file) REGISTER_LONG_CONSTANT("SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_SH", 1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_EX", 2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_UN", 3, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_NB", 4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCK_SH", PHP_LOCK_SH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCK_EX", PHP_LOCK_EX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCK_UN", PHP_LOCK_UN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCK_NB", PHP_LOCK_NB, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("STREAM_NOTIFY_CONNECT", PHP_STREAM_NOTIFY_CONNECT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_REQUIRED", PHP_STREAM_NOTIFY_AUTH_REQUIRED, CONST_CS | CONST_PERSISTENT); @@ -291,7 +291,9 @@ PHP_MINIT_FUNCTION(file) REGISTER_LONG_CONSTANT("FILE_SKIP_EMPTY_LINES", PHP_FILE_SKIP_EMPTY_LINES, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILE_APPEND", PHP_FILE_APPEND, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FILE_NO_DEFAULT_CONTEXT", PHP_FILE_NO_DEFAULT_CONTEXT, CONST_CS | CONST_PERSISTENT); - + REGISTER_LONG_CONSTANT("FILE_TEXT", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILE_BINARY", 0, CONST_CS | CONST_PERSISTENT); + #ifdef HAVE_FNMATCH REGISTER_LONG_CONSTANT("FNM_NOESCAPE", FNM_NOESCAPE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FNM_PATHNAME", FNM_PATHNAME, CONST_CS | CONST_PERSISTENT); @@ -345,7 +347,7 @@ PHP_FUNCTION(flock) } /* flock_values contains all possible actions if (operation & 4) we won't block on the lock */ - act = flock_values[act - 1] | (operation & 4 ? LOCK_NB : 0); + act = flock_values[act - 1] | (operation & PHP_LOCK_NB ? LOCK_NB : 0); if (php_stream_lock(stream, act)) { if (operation && errno == EWOULDBLOCK && arg3 && PZVAL_IS_REF(arg3)) { Z_LVAL_P(arg3) = 1; @@ -891,7 +893,7 @@ PHP_NAMED_FUNCTION(php_if_fopen) if (stream == NULL) { RETURN_FALSE; } - + php_stream_to_zval(stream, return_value); if (zcontext) { @@ -912,6 +914,12 @@ PHPAPI PHP_FUNCTION(fclose) } PHP_STREAM_TO_ZVAL(stream, arg1); + + if ((stream->flags & PHP_STREAM_FLAG_NO_FCLOSE) != 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid stream resource", stream->rsrc_id); + RETURN_FALSE; + } + if (!stream->is_persistent) { zend_list_delete(stream->rsrc_id); } else { @@ -1129,7 +1137,7 @@ PHPAPI PHP_FUNCTION(fgetc) } /* }}} */ -/* {{{ proto string fgetss(resource fp [, int length, string allowable_tags]) +/* {{{ proto string fgetss(resource fp [, int length [, string allowable_tags]]) Get a line from file pointer and strip HTML tags */ PHPAPI PHP_FUNCTION(fgetss) { @@ -1913,7 +1921,7 @@ quit_loop: } /* }}} */ -#define FPUTCSV_FLD_CHK(c) memchr(Z_STRVAL_PP(field), c, Z_STRLEN_PP(field)) +#define FPUTCSV_FLD_CHK(c) memchr(Z_STRVAL(field), c, Z_STRLEN(field)) /* {{{ proto int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]]) Format line as CSV and write to file pointer */ @@ -1924,7 +1932,7 @@ PHP_FUNCTION(fputcsv) const char escape_char = '\\'; php_stream *stream; int ret; - zval *fp = NULL, *fields = NULL, **field = NULL; + zval *fp = NULL, *fields = NULL, **field_tmp = NULL, field; char *delimiter_str = NULL, *enclosure_str = NULL; int delimiter_str_len, enclosure_str_len; HashPosition pos; @@ -1965,11 +1973,14 @@ PHP_FUNCTION(fputcsv) count = zend_hash_num_elements(Z_ARRVAL_P(fields)); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(fields), &pos); - while (zend_hash_get_current_data_ex(Z_ARRVAL_P(fields), (void **) &field, &pos) == SUCCESS) { - if (Z_TYPE_PP(field) != IS_STRING) { - SEPARATE_ZVAL(field); - convert_to_string(*field); - } + while (zend_hash_get_current_data_ex(Z_ARRVAL_P(fields), (void **) &field_tmp, &pos) == SUCCESS) { + field = **field_tmp; + + if (Z_TYPE_PP(field_tmp) != IS_STRING) { + zval_copy_ctor(&field); + convert_to_string(&field); + } + /* enclose a field that contains a delimiter, an enclosure character, or a newline */ if (FPUTCSV_FLD_CHK(delimiter) || FPUTCSV_FLD_CHK(enclosure) || @@ -1978,8 +1989,8 @@ PHP_FUNCTION(fputcsv) FPUTCSV_FLD_CHK('\r') || FPUTCSV_FLD_CHK('\t') || FPUTCSV_FLD_CHK(' ')) { - char *ch = Z_STRVAL_PP(field); - char *end = ch + Z_STRLEN_PP(field); + char *ch = Z_STRVAL(field); + char *end = ch + Z_STRLEN(field); int escaped = 0; smart_str_appendc(&csvline, enclosure); @@ -1996,13 +2007,17 @@ PHP_FUNCTION(fputcsv) } smart_str_appendc(&csvline, enclosure); } else { - smart_str_appendl(&csvline, Z_STRVAL_PP(field), Z_STRLEN_PP(field)); + smart_str_appendl(&csvline, Z_STRVAL(field), Z_STRLEN(field)); } if (++i != count) { smart_str_appendl(&csvline, &delimiter, 1); } zend_hash_move_forward_ex(Z_ARRVAL_P(fields), &pos); + + if (Z_TYPE_PP(field_tmp) != IS_STRING) { + zval_dtor(&field); + } } smart_str_appendc(&csvline, '\n'); diff --git a/ext/standard/file.h b/ext/standard/file.h index d4d16bc09..315d30dbb 100644 --- a/ext/standard/file.h +++ b/ext/standard/file.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: file.h,v 1.94.2.2.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: file.h,v 1.94.2.2.2.7 2008/12/31 11:17:45 sebastian Exp $ */ /* 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 a9f3f1000..d91cab231 100644 --- a/ext/standard/filestat.c +++ b/ext/standard/filestat.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filestat.c,v 1.136.2.8.2.16 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: filestat.c,v 1.136.2.8.2.17 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "safe_mode.h" diff --git a/ext/standard/filters.c b/ext/standard/filters.c index 4e41063c4..eedac4467 100644 --- a/ext/standard/filters.c +++ b/ext/standard/filters.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filters.c,v 1.44.2.6.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: filters.c,v 1.44.2.6.2.7 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_globals.h" diff --git a/ext/standard/flock_compat.c b/ext/standard/flock_compat.c index 167702b85..06009243a 100644 --- a/ext/standard/flock_compat.c +++ b/ext/standard/flock_compat.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flock_compat.c,v 1.29.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: flock_compat.c,v 1.29.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include diff --git a/ext/standard/flock_compat.h b/ext/standard/flock_compat.h index ac6d55cb3..901e3390a 100644 --- a/ext/standard/flock_compat.h +++ b/ext/standard/flock_compat.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flock_compat.h,v 1.20.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: flock_compat.h,v 1.20.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef FLOCK_COMPAT_H #define FLOCK_COMPAT_H @@ -35,6 +35,12 @@ PHPAPI int php_flock(int fd, int operation); PHPAPI int flock(int fd, int operation); #endif +/* Userland LOCK_* constants */ +#define PHP_LOCK_SH 1 +#define PHP_LOCK_EX 2 +#define PHP_LOCK_UN 3 +#define PHP_LOCK_NB 4 + #ifdef PHP_WIN32 #define EWOULDBLOCK WSAEWOULDBLOCK # define fsync _commit diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index 662d85cd2..2a763bc59 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: formatted_print.c,v 1.82.2.1.2.19 2008/03/17 23:00:41 stas Exp $ */ +/* $Id: formatted_print.c,v 1.82.2.1.2.21 2009/01/20 18:03:19 iliaa Exp $ */ #include /* modf() */ #include "php.h" @@ -225,6 +225,7 @@ php_sprintf_appenddouble(char **buffer, int *pos, if ((adjust & ADJ_PRECISION) == 0) { precision = FLOAT_PRECISION; } else if (precision > MAX_FLOAT_PRECISION) { + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Requested precision of %d digits was truncated to PHP maximum of %d digits", precision, MAX_FLOAT_PRECISION); precision = MAX_FLOAT_PRECISION; } diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index d54b3b5e9..3b1254e8e 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fsock.c,v 1.121.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: fsock.c,v 1.121.2.1.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_globals.h" diff --git a/ext/standard/fsock.h b/ext/standard/fsock.h index 10531b68a..6e4fd8701 100644 --- a/ext/standard/fsock.h +++ b/ext/standard/fsock.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fsock.h,v 1.50.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: fsock.h,v 1.50.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ /* 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 40b74d547..09b68ecc6 100644 --- a/ext/standard/ftok.c +++ b/ext/standard/ftok.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ftok.c,v 1.16.2.1.2.2 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: ftok.c,v 1.16.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index c2e3896dc..87198210d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ | Sara Golemon | +----------------------------------------------------------------------+ */ -/* $Id: ftp_fopen_wrapper.c,v 1.85.2.4.2.9 2008/01/08 19:10:16 iliaa Exp $ */ +/* $Id: ftp_fopen_wrapper.c,v 1.85.2.4.2.11 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_globals.h" @@ -777,6 +777,13 @@ static int php_stream_ftp_url_stat(php_stream_wrapper *wrapper, char *url, int f } php_stream_write_string(stream, "TYPE I\r\n"); /* we need this since some servers refuse to accept SIZE command in ASCII mode */ + + result = GET_FTP_RESULT(stream); + + if(result < 200 || result > 299) { + goto stat_errexit; + } + php_stream_printf(stream TSRMLS_CC, "SIZE %s\r\n", (resource->path != NULL ? resource->path : "/")); result = GET_FTP_RESULT(stream); if (result < 200 || result > 299) { diff --git a/ext/standard/head.c b/ext/standard/head.c index f0502ab21..d7d9d6d53 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ -/* $Id: head.c,v 1.84.2.1.2.8 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: head.c,v 1.84.2.1.2.11 2008/12/31 11:17:45 sebastian Exp $ */ #include #include "php.h" @@ -69,12 +69,12 @@ PHPAPI int php_setcookie(char *name, int name_len, char *value, int value_len, t int result; if (name && strpbrk(name, "=,; \t\r\n\013\014") != NULL) { /* man isspace for \013 and \014 */ - zend_error( E_WARNING, "Cookie names can not contain any of the folllowing '=,; \\t\\r\\n\\013\\014' (%s)", name ); + zend_error( E_WARNING, "Cookie names can not contain any of the following '=,; \\t\\r\\n\\013\\014'" ); return FAILURE; } if (!url_encode && value && strpbrk(value, ",; \t\r\n\013\014") != NULL) { /* man isspace for \013 and \014 */ - zend_error( E_WARNING, "Cookie values can not contain any of the folllowing ',; \\t\\r\\n\\013\\014' (%s)", value ); + zend_error( E_WARNING, "Cookie values can not contain any of the following ',; \\t\\r\\n\\013\\014'" ); return FAILURE; } diff --git a/ext/standard/head.h b/ext/standard/head.h index 365ef3ea1..cfb38d8b1 100644 --- a/ext/standard/head.h +++ b/ext/standard/head.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: head.h,v 1.28.2.1.2.3 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: head.h,v 1.28.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef HEAD_H #define HEAD_H diff --git a/ext/standard/html.c b/ext/standard/html.c index dd8afdc9c..6e073e566 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: html.c,v 1.111.2.2.2.20 2008/04/11 19:01:25 felipe Exp $ */ +/* $Id: html.c,v 1.111.2.2.2.23 2008/12/31 11:17:45 sebastian Exp $ */ /* * HTML entity resources: @@ -1199,14 +1199,25 @@ encode_amp: } else { if (*s == '#') { /* numeric entities */ s++; - while (s < e) { - if (!isdigit(*s++)) { - goto encode_amp; + /* Hex (Z) */ + if (*s == 'x' || *s == 'X') { + s++; + while (s < e) { + if (!isxdigit((int)*(unsigned char *)s++)) { + goto encode_amp; + } + } + /* Dec (Z)*/ + } else { + while (s < e) { + if (!isdigit((int)*(unsigned char *)s++)) { + goto encode_amp; + } } } } else { /* text entities */ while (s < e) { - if (!isalnum(*s++)) { + if (!isalnum((int)*(unsigned char *)s++)) { goto encode_amp; } } diff --git a/ext/standard/html.h b/ext/standard/html.h index e5bdafc4d..155b58ce9 100644 --- a/ext/standard/html.h +++ b/ext/standard/html.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: html.h,v 1.20.2.1.2.4 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: html.h,v 1.20.2.1.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef HTML_H #define HTML_H diff --git a/ext/standard/http.c b/ext/standard/http.c index 85ad35c83..0ea24328b 100644 --- a/ext/standard/http.c +++ b/ext/standard/http.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: http.c,v 1.14.2.4.2.6 2008/01/10 20:32:41 shire Exp $ */ +/* $Id: http.c,v 1.14.2.4.2.7 2008/12/31 11:17:45 sebastian Exp $ */ #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 bdd811f8a..022ce8624 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ | Sara Golemon | +----------------------------------------------------------------------+ */ -/* $Id: http_fopen_wrapper.c,v 1.99.2.12.2.12 2008/04/08 00:03:34 iliaa Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.99.2.12.2.13 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_globals.h" diff --git a/ext/standard/image.c b/ext/standard/image.c index 8dbd04299..ef167d060 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: image.c,v 1.114.2.2.2.7 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: image.c,v 1.114.2.2.2.8 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c index d669f2ce6..06d2202eb 100644 --- a/ext/standard/incomplete_class.c +++ b/ext/standard/incomplete_class.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ */ -/* $Id: incomplete_class.c,v 1.28.2.2.2.3 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: incomplete_class.c,v 1.28.2.2.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "basic_functions.h" diff --git a/ext/standard/info.c b/ext/standard/info.c index 6cd9057a3..81c76eea2 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.c,v 1.249.2.10.2.17 2008/03/05 21:09:29 pajoye Exp $ */ +/* $Id: info.c,v 1.249.2.10.2.19 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_ini.h" @@ -57,6 +57,7 @@ ZEND_EXTERN_MODULE_GLOBALS(iconv) } \ PHPAPI extern char *php_ini_opened_path; +PHPAPI extern char *php_ini_scanned_path; PHPAPI extern char *php_ini_scanned_files; static int php_info_write_wrapper(const char *str, uint str_length) @@ -501,14 +502,9 @@ PHPAPI void php_print_info(int flag TSRMLS_DC) php_info_print_table_row(2, "Configuration File (php.ini) Path", PHP_CONFIG_FILE_PATH); php_info_print_table_row(2, "Loaded Configuration File", php_ini_opened_path ? php_ini_opened_path : "(none)"); + php_info_print_table_row(2, "Scan this dir for additional .ini files", php_ini_scanned_path ? php_ini_scanned_path : "(none)"); + php_info_print_table_row(2, "additional .ini files parsed", php_ini_scanned_files ? php_ini_scanned_files : "(none)"); - if (strlen(PHP_CONFIG_FILE_SCAN_DIR)) { - php_info_print_table_row(2, "Scan this dir for additional .ini files", PHP_CONFIG_FILE_SCAN_DIR); - if (php_ini_scanned_files) { - php_info_print_table_row(2, "additional .ini files parsed", php_ini_scanned_files); - } - } - snprintf(temp_api, sizeof(temp_api), "%d", PHP_API_VERSION); php_info_print_table_row(2, "PHP API", temp_api); diff --git a/ext/standard/info.h b/ext/standard/info.h index 931c842ef..09f163d8c 100644 --- a/ext/standard/info.h +++ b/ext/standard/info.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: info.h,v 1.38.2.1.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: info.h,v 1.38.2.1.2.7 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef INFO_H #define INFO_H diff --git a/ext/standard/iptc.c b/ext/standard/iptc.c index 578534d41..db8aef37f 100644 --- a/ext/standard/iptc.c +++ b/ext/standard/iptc.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: iptc.c,v 1.50.2.2.2.6 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: iptc.c,v 1.50.2.2.2.7 2008/12/31 11:17:45 sebastian Exp $ */ /* * Functions to parse & compse IPTC data. diff --git a/ext/standard/lcg.c b/ext/standard/lcg.c index c5bd5c866..e7f0a3d68 100644 --- a/ext/standard/lcg.c +++ b/ext/standard/lcg.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: lcg.c,v 1.41.2.1.2.3 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: lcg.c,v 1.41.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_lcg.h" diff --git a/ext/standard/levenshtein.c b/ext/standard/levenshtein.c index c5c6caa08..e3a991858 100644 --- a/ext/standard/levenshtein.c +++ b/ext/standard/levenshtein.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ */ -/* $Id: levenshtein.c,v 1.34.2.1.2.4 2007/12/31 07:20:12 sebastian Exp $ */ +/* $Id: levenshtein.c,v 1.34.2.1.2.6 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include @@ -23,43 +23,51 @@ #include #include "php_string.h" -#define LEVENSHTEIN_MAX_LENTH 255 +#define LEVENSHTEIN_MAX_LENGTH 255 /* {{{ reference_levdist * reference implementation, only optimized for memory usage, not speed */ -static int reference_levdist(const char *s1, int l1, - const char *s2, int l2, - int cost_ins, int cost_rep, int cost_del ) +static int reference_levdist(const char *s1, int l1, const char *s2, int l2, int cost_ins, int cost_rep, int cost_del ) { int *p1, *p2, *tmp; int i1, i2, c0, c1, c2; - - if(l1==0) return l2*cost_ins; - if(l2==0) return l1*cost_del; - if((l1>LEVENSHTEIN_MAX_LENTH)||(l2>LEVENSHTEIN_MAX_LENTH)) + if (l1 == 0) { + return l2 * cost_ins; + } + if (l2 == 0) { + return l1 * cost_del; + } + + if ((l1 > LEVENSHTEIN_MAX_LENGTH) || (l2 > LEVENSHTEIN_MAX_LENGTH)) { return -1; + } + p1 = safe_emalloc((l2 + 1), sizeof(int), 0); + p2 = safe_emalloc((l2 + 1), sizeof(int), 0); - p1 = safe_emalloc((l2+1), sizeof(int), 0); - p2 = safe_emalloc((l2+1), sizeof(int), 0); - - for(i2=0;i2<=l2;i2++) - p1[i2] = i2*cost_ins; - - for(i1=0;i1 #include @@ -31,6 +31,12 @@ #include #endif +#if PHP_SIGCHILD +#if HAVE_SIGNAL_H +#include +#endif +#endif + #include "php_mail.h" #include "php_ini.h" #include "safe_mode.h" @@ -200,6 +206,9 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char int ret; char *sendmail_path = INI_STR("sendmail_path"); char *sendmail_cmd = NULL; +#if PHP_SIGCHILD + void (*sig_handler)() = NULL; +#endif if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) @@ -224,6 +233,16 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char sendmail_cmd = sendmail_path; } +#if PHP_SIGCHILD + /* Set signal handler of SIGCHLD to default to prevent other signal handlers + * from being called and reaping the return code when our child exits. + * The original handler needs to be restored after pclose() */ + sig_handler = (void *)signal(SIGCHLD, SIG_DFL); + if (sig_handler == SIG_ERR) { + sig_handler = NULL; + } +#endif + #ifdef PHP_WIN32 sendmail = popen(sendmail_cmd, "wb"); #else @@ -241,6 +260,13 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char if (EACCES == errno) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Permission denied: unable to execute shell to run mail delivery binary '%s'", sendmail_path); pclose(sendmail); +#if PHP_SIGCHILD + /* Restore handler in case of error on Windows + Not sure if this applicable on Win but just in case. */ + if (sig_handler) { + signal(SIGCHLD, sig_handler); + } +#endif return 0; } #endif @@ -251,6 +277,12 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char } fprintf(sendmail, "\n%s\n", message); ret = pclose(sendmail); +#if PHP_SIGCHILD + if (sig_handler) { + signal(SIGCHLD, sig_handler); + } +#endif + #ifdef PHP_WIN32 if (ret == -1) #else @@ -269,6 +301,11 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char } } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute mail delivery program '%s'", sendmail_path); +#if PHP_SIGCHILD + if (sig_handler) { + signal(SIGCHLD, sig_handler); + } +#endif return 0; } diff --git a/ext/standard/math.c b/ext/standard/math.c index 8f293ae71..78ec5b50f 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: math.c,v 1.131.2.2.2.9 2008/02/21 11:53:51 tony2001 Exp $ */ +/* $Id: math.c,v 1.131.2.2.2.11 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "php_math.h" @@ -29,25 +29,59 @@ #include #include -#ifndef PHP_ROUND_FUZZ -# ifndef PHP_WIN32 -# define PHP_ROUND_FUZZ 0.50000000001 -# else -# define PHP_ROUND_FUZZ 0.5 -# endif -#endif +/* + * Pertains to some of the code found in the php_round() function + * Ref: http://www.freebsd.org/cgi/query-pr.cgi?pr=59797 + * + * Copyright (c) 2003, Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +static double php_round(double val, int places) { + double t; + double f = pow(10.0, (double) places); + double x = val * f; + + if (zend_isinf(x) || zend_isnan(x)) { + return val; + } + + if (x >= 0.0) { + t = ceil(x); + if ((t - x) > 0.50000000001) { + t -= 1.0; + } + } else { + t = ceil(-x); + if ((t + x) > 0.50000000001) { + t -= 1.0; + } + t = -t; + } + x = t / f; -#define PHP_ROUND_WITH_FUZZ(val, places) { \ - double tmp_val=val, f = pow(10.0, (double) places); \ - tmp_val *= f; \ - if (tmp_val >= 0.0) { \ - tmp_val = floor(tmp_val + PHP_ROUND_FUZZ); \ - } else { \ - tmp_val = ceil(tmp_val - PHP_ROUND_FUZZ); \ - } \ - tmp_val /= f; \ - val = !zend_isnan(tmp_val) ? tmp_val : val; \ -} \ + return !zend_isnan(x) ? x : t; +} /* {{{ proto int abs(int number) Return the absolute value of the number */ @@ -152,7 +186,7 @@ PHP_FUNCTION(round) return_val = (Z_TYPE_PP(value) == IS_LONG) ? (double)Z_LVAL_PP(value) : Z_DVAL_PP(value); - PHP_ROUND_WITH_FUZZ(return_val, places); + return_val = php_round(return_val, places); RETURN_DOUBLE(return_val); break; @@ -967,7 +1001,7 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho } dec = MAX(0, dec); - PHP_ROUND_WITH_FUZZ(d, dec); + d = php_round(d, dec); tmplen = spprintf(&tmpbuf, 0, "%.*F", dec, d); diff --git a/ext/standard/md5.c b/ext/standard/md5.c index 16c295b4b..42609bb81 100644 --- a/ext/standard/md5.c +++ b/ext/standard/md5.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: md5.c,v 1.39.2.1.2.5 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: md5.c,v 1.39.2.1.2.6 2008/12/31 11:17:45 sebastian Exp $ */ /* * md5.c - Copyright 1997 Lachlan Roche diff --git a/ext/standard/md5.h b/ext/standard/md5.h index b9285c1ba..6a4268ef6 100644 --- a/ext/standard/md5.h +++ b/ext/standard/md5.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: md5.h,v 1.17.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: md5.h,v 1.17.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef MD5_H #define MD5_H diff --git a/ext/standard/metaphone.c b/ext/standard/metaphone.c index 3c8cb93aa..4dbf45247 100644 --- a/ext/standard/metaphone.c +++ b/ext/standard/metaphone.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: metaphone.c,v 1.28.2.1.2.7 2008/02/27 01:10:56 felipe Exp $ */ +/* $Id: metaphone.c,v 1.28.2.1.2.8 2008/12/31 11:17:45 sebastian Exp $ */ /* Based on CPANs "Text-Metaphone-1.96" by Michael G Schwern diff --git a/ext/standard/microtime.c b/ext/standard/microtime.c index 6b26c641d..9be244541 100644 --- a/ext/standard/microtime.c +++ b/ext/standard/microtime.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: microtime.c,v 1.53.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: microtime.c,v 1.53.2.2.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/microtime.h b/ext/standard/microtime.h index ca564c55c..1e13bc6d1 100644 --- a/ext/standard/microtime.h +++ b/ext/standard/microtime.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: microtime.h,v 1.14.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: microtime.h,v 1.14.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef MICROTIME_H #define MICROTIME_H diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 7233cb3b3..d0c01ccfb 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Chris Schneider | +----------------------------------------------------------------------+ */ -/* $Id: pack.c,v 1.57.2.5.2.7 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: pack.c,v 1.57.2.5.2.8 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/pack.h b/ext/standard/pack.h index 88680fada..2665af43d 100644 --- a/ext/standard/pack.h +++ b/ext/standard/pack.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pack.h,v 1.16.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: pack.h,v 1.16.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PACK_H #define PACK_H diff --git a/ext/standard/pageinfo.c b/ext/standard/pageinfo.c index 1dd1c6123..6af85eed6 100644 --- a/ext/standard/pageinfo.c +++ b/ext/standard/pageinfo.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pageinfo.c,v 1.40.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: pageinfo.c,v 1.40.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include "pageinfo.h" diff --git a/ext/standard/pageinfo.h b/ext/standard/pageinfo.h index e3e59f96c..354bbfaa7 100644 --- a/ext/standard/pageinfo.h +++ b/ext/standard/pageinfo.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pageinfo.h,v 1.14.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: pageinfo.h,v 1.14.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PAGEINFO_H #define PAGEINFO_H diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h index d77edf899..d5d197321 100644 --- a/ext/standard/php_array.h +++ b/ext/standard/php_array.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_array.h,v 1.50.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_array.h,v 1.50.2.2.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_ARRAY_H #define PHP_ARRAY_H diff --git a/ext/standard/php_assert.h b/ext/standard/php_assert.h index b3c61c1bf..acd5891ae 100644 --- a/ext/standard/php_assert.h +++ b/ext/standard/php_assert.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_assert.h,v 1.15.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_assert.h,v 1.15.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_ASSERT_H #define PHP_ASSERT_H diff --git a/ext/standard/php_browscap.h b/ext/standard/php_browscap.h index a5a79c7a8..d687fe433 100644 --- a/ext/standard/php_browscap.h +++ b/ext/standard/php_browscap.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_browscap.h,v 1.13.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_browscap.h,v 1.13.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_BROWSCAP_H #define PHP_BROWSCAP_H diff --git a/ext/standard/php_crypt.h b/ext/standard/php_crypt.h index 1a631057c..a848cdeab 100644 --- a/ext/standard/php_crypt.h +++ b/ext/standard/php_crypt.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_crypt.h,v 1.18.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_crypt.h,v 1.18.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_CRYPT_H #define PHP_CRYPT_H diff --git a/ext/standard/php_dir.h b/ext/standard/php_dir.h index 14fb5d69f..a422a3e10 100644 --- a/ext/standard/php_dir.h +++ b/ext/standard/php_dir.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dir.h,v 1.24.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_dir.h,v 1.24.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_DIR_H #define PHP_DIR_H diff --git a/ext/standard/php_ext_syslog.h b/ext/standard/php_ext_syslog.h index e5ff1e918..a47aa1325 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ext_syslog.h,v 1.12.2.2.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_ext_syslog.h,v 1.12.2.2.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #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 bd66459ba..7992f4cb5 100644 --- a/ext/standard/php_filestat.h +++ b/ext/standard/php_filestat.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_filestat.h,v 1.24.2.4.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_filestat.h,v 1.24.2.4.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #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 64e05e0c3..9140121c3 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Hartmut Holzgraefe | +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrapper.c,v 1.45.2.4.2.9 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_fopen_wrapper.c,v 1.45.2.4.2.13 2008/12/31 11:17:45 sebastian Exp $ */ #include #include @@ -48,17 +48,11 @@ static int php_stream_output_close(php_stream *stream, int close_handle TSRMLS_D return 0; } -static int php_stream_output_flush(php_stream *stream TSRMLS_DC) -{ - sapi_flush(TSRMLS_C); - return 0; -} - php_stream_ops php_stream_output_ops = { php_stream_output_write, php_stream_output_read, php_stream_output_close, - php_stream_output_flush, + NULL, /* flush */ "Output", NULL, /* seek */ NULL, /* cast */ @@ -176,11 +170,21 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch return NULL; } } - return php_stream_temp_create(TEMP_STREAM_DEFAULT, max_memory); + if (strpbrk(mode, "wa+")) { + mode_rw = TEMP_STREAM_DEFAULT; + } else { + mode_rw = TEMP_STREAM_READONLY; + } + return php_stream_temp_create(mode_rw, max_memory); } if (!strcasecmp(path, "memory")) { - return php_stream_memory_create(TEMP_STREAM_DEFAULT); + if (strpbrk(mode, "wa+")) { + mode_rw = TEMP_STREAM_DEFAULT; + } else { + mode_rw = TEMP_STREAM_READONLY; + } + return php_stream_memory_create(mode_rw); } if (!strcasecmp(path, "output")) { @@ -290,9 +294,23 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch return NULL; } +#if defined(S_IFSOCK) && !defined(WIN32) && !defined(__BEOS__) + do { + struct stat st; + memset(&st, 0, sizeof(st)); + if (fstat(fd, &st) == 0 && (st.st_mode & S_IFMT) == S_IFSOCK) { + stream = php_stream_sock_open_from_socket(fd, NULL); + if (stream) { + stream->ops = &php_stream_socket_ops; + return stream; + } + } + } while (0); +#endif + if (file) { stream = php_stream_fopen_from_file(file, mode); - } else { + } else { stream = php_stream_fopen_from_fd(fd, mode, NULL); if (stream == NULL) { close(fd); diff --git a/ext/standard/php_fopen_wrappers.h b/ext/standard/php_fopen_wrappers.h index b32ae7272..9ad3869f1 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrappers.h,v 1.21.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_fopen_wrappers.h,v 1.21.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #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 c3b4b9825..6c75236db 100644 --- a/ext/standard/php_ftok.h +++ b/ext/standard/php_ftok.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_ftok.h,v 1.9.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_ftok.h,v 1.9.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_FTOK_H #define PHP_FTOK_H diff --git a/ext/standard/php_http.h b/ext/standard/php_http.h index 9097a67de..92783e6a1 100644 --- a/ext/standard/php_http.h +++ b/ext/standard/php_http.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_http.h,v 1.5.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_http.h,v 1.5.2.2.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_HTTP_H #define PHP_HTTP_H diff --git a/ext/standard/php_image.h b/ext/standard/php_image.h index 33f8495e9..c76eb27ad 100644 --- a/ext/standard/php_image.h +++ b/ext/standard/php_image.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_image.h,v 1.29.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_image.h,v 1.29.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #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 8d3061af3..7eae8e93a 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_incomplete_class.h,v 1.17.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_incomplete_class.h,v 1.17.2.2.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_INCOMPLETE_CLASS_H #define PHP_INCOMPLETE_CLASS_H @@ -31,6 +31,10 @@ if (Z_OBJ_HT_P(struc)->get_class_entry && \ Z_OBJCE_P(struc) == BG(incomplete_class)) { \ class_name = php_lookup_class_name(struc, &name_len); \ + if (!class_name) { \ + name_len = sizeof(INCOMPLETE_CLASS) - 1; \ + class_name = estrndup(INCOMPLETE_CLASS, name_len); \ + } \ free_class_name = 1; \ incomplete_class = 1; \ } else { \ diff --git a/ext/standard/php_iptc.h b/ext/standard/php_iptc.h index 18d77e3f8..3c0e50966 100644 --- a/ext/standard/php_iptc.h +++ b/ext/standard/php_iptc.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_iptc.h,v 1.11.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_iptc.h,v 1.11.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_IPTC_H #define PHP_IPTC_H diff --git a/ext/standard/php_lcg.h b/ext/standard/php_lcg.h index 93aa78e64..4c07f3a8d 100644 --- a/ext/standard/php_lcg.h +++ b/ext/standard/php_lcg.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_lcg.h,v 1.21.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_lcg.h,v 1.21.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_LCG_H #define PHP_LCG_H diff --git a/ext/standard/php_link.h b/ext/standard/php_link.h index 353f5dc27..5844cc97d 100644 --- a/ext/standard/php_link.h +++ b/ext/standard/php_link.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_link.h,v 1.12.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_link.h,v 1.12.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_LINK_H #define PHP_LINK_H diff --git a/ext/standard/php_mail.h b/ext/standard/php_mail.h index 7b249a015..40ca27b9e 100644 --- a/ext/standard/php_mail.h +++ b/ext/standard/php_mail.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mail.h,v 1.18.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_mail.h,v 1.18.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_MAIL_H #define PHP_MAIL_H diff --git a/ext/standard/php_math.h b/ext/standard/php_math.h index 84b750a0e..d03aeb057 100644 --- a/ext/standard/php_math.h +++ b/ext/standard/php_math.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_math.h,v 1.28.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_math.h,v 1.28.2.2.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_MATH_H #define PHP_MATH_H diff --git a/ext/standard/php_metaphone.h b/ext/standard/php_metaphone.h index 3706392bc..5b778fbf5 100644 --- a/ext/standard/php_metaphone.h +++ b/ext/standard/php_metaphone.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_metaphone.h,v 1.16.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_metaphone.h,v 1.16.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_METAPHONE_H #define PHP_METAPHONE_H diff --git a/ext/standard/php_rand.h b/ext/standard/php_rand.h index 7a12d2466..093359085 100644 --- a/ext/standard/php_rand.h +++ b/ext/standard/php_rand.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ | Based on code from: Shawn Cokus | +----------------------------------------------------------------------+ */ -/* $Id: php_rand.h,v 1.28.2.1.2.4 2008/03/07 08:56:45 tony2001 Exp $ */ +/* $Id: php_rand.h,v 1.28.2.1.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #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 fd6dfb6dc..e56655fdc 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_smart_str.h,v 1.30.2.3.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_smart_str.h,v 1.30.2.3.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #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 2d119e790..a1b93ffb7 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_smart_str_public.h,v 1.10.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_smart_str_public.h,v 1.10.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #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 dd41fc25a..2fe6f834a 100644 --- a/ext/standard/php_standard.h +++ b/ext/standard/php_standard.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_standard.h,v 1.24.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_standard.h,v 1.24.2.2.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #include "basic_functions.h" #include "php_math.h" diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index c2b038fdd..ab7edab01 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_string.h,v 1.87.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_string.h,v 1.87.2.2.2.5 2008/12/31 11:17:45 sebastian Exp $ */ /* 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 bd170239e..e1cfe3088 100644 --- a/ext/standard/php_type.h +++ b/ext/standard/php_type.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_type.h,v 1.6.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_type.h,v 1.6.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_TYPE_H #define PHP_TYPE_H diff --git a/ext/standard/php_uuencode.h b/ext/standard/php_uuencode.h index 0bab2fc6c..b3a07061e 100644 --- a/ext/standard/php_uuencode.h +++ b/ext/standard/php_uuencode.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_uuencode.h,v 1.4.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_uuencode.h,v 1.4.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_UUENCODE_H #define PHP_UUENCODE_H diff --git a/ext/standard/php_var.h b/ext/standard/php_var.h index 19527286b..1590a09c7 100644 --- a/ext/standard/php_var.h +++ b/ext/standard/php_var.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_var.h,v 1.30.2.1.2.7 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_var.h,v 1.30.2.1.2.8 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_VAR_H #define PHP_VAR_H diff --git a/ext/standard/php_versioning.h b/ext/standard/php_versioning.h index 2f502e305..86f049e90 100644 --- a/ext/standard/php_versioning.h +++ b/ext/standard/php_versioning.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_versioning.h,v 1.10.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_versioning.h,v 1.10.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef PHP_VERSIONING_H #define PHP_VERSIONING_H diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index 69fca4d71..fe50d9d54 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Wez Furlong | +----------------------------------------------------------------------+ */ -/* $Id: proc_open.c,v 1.36.2.1.2.19 2008/04/08 08:45:51 jani Exp $ */ +/* $Id: proc_open.c,v 1.36.2.1.2.23 2008/12/31 11:17:45 sebastian Exp $ */ #if 0 && (defined(__linux__) || defined(sun) || defined(__IRIX__)) # define _BSD_SOURCE /* linux wants this when XOPEN mode is on */ @@ -769,6 +769,8 @@ PHP_FUNCTION(proc_open) } if (FALSE == newprocok) { + DWORD dw = GetLastError(); + /* clean up all the descriptors */ for (i = 0; i < ndesc; i++) { CloseHandle(descriptors[i].childend); @@ -776,7 +778,7 @@ PHP_FUNCTION(proc_open) CloseHandle(descriptors[i].parentend); } } - php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateProcess failed"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateProcess failed, error code - %u", dw); goto exit_fail; } diff --git a/ext/standard/proc_open.h b/ext/standard/proc_open.h index 10625f5b1..217e9251e 100644 --- a/ext/standard/proc_open.h +++ b/ext/standard/proc_open.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Wez Furlong | +----------------------------------------------------------------------+ */ -/* $Id: proc_open.h,v 1.5.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: proc_open.h,v 1.5.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifdef PHP_WIN32 typedef HANDLE php_file_descriptor_t; diff --git a/ext/standard/quot_print.c b/ext/standard/quot_print.c index b57d826a6..f8af37f9e 100644 --- a/ext/standard/quot_print.c +++ b/ext/standard/quot_print.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: quot_print.c,v 1.29.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: quot_print.c,v 1.29.2.2.2.5 2009/01/07 17:38:13 felipe Exp $ */ #include diff --git a/ext/standard/quot_print.h b/ext/standard/quot_print.h index 37a10ff2e..3c17dc4eb 100644 --- a/ext/standard/quot_print.h +++ b/ext/standard/quot_print.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: quot_print.h,v 1.13.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: quot_print.h,v 1.13.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef QUOT_PRINT_H #define QUOT_PRINT_H diff --git a/ext/standard/rand.c b/ext/standard/rand.c index eee131b78..e3ba1c9f3 100644 --- a/ext/standard/rand.c +++ b/ext/standard/rand.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -23,7 +23,7 @@ | Shawn Cokus | +----------------------------------------------------------------------+ */ -/* $Id: rand.c,v 1.70.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: rand.c,v 1.70.2.1.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #include @@ -138,14 +138,6 @@ PHPAPI long php_rand(TSRMLS_D) LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - The original code included the following notice: - - When you use this, send an email to: matumoto@math.keio.ac.jp - with an appropriate reference to your work. - - It would be nice to CC: rjwagner@writeme.com and Cokus@math.washington.edu - when you write. */ #define N MT_N /* length of state vector */ diff --git a/ext/standard/reg.c b/ext/standard/reg.c index 3c3a02c54..e95e65a9c 100644 --- a/ext/standard/reg.c +++ b/ext/standard/reg.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ | Jaakko Hyvätti | +----------------------------------------------------------------------+ */ -/* $Id: reg.c,v 1.82.2.3.2.5 2008/04/20 01:43:18 felipe Exp $ */ +/* $Id: reg.c,v 1.82.2.3.2.6 2008/12/31 11:17:45 sebastian Exp $ */ #include #include diff --git a/ext/standard/reg.h b/ext/standard/reg.h index 6557916cf..12c490ee0 100644 --- a/ext/standard/reg.h +++ b/ext/standard/reg.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ */ -/* $Id: reg.h,v 1.21.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: reg.h,v 1.21.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef REG_H #define REG_H diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index d5c591d1f..12713288f 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: scanf.c,v 1.31.2.2.2.6 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: scanf.c,v 1.31.2.2.2.9 2009/02/06 10:22:34 felipe Exp $ */ /* scanf.c -- @@ -1066,9 +1066,9 @@ addToInt: break; } else if (numVars) { /* change passed value type to string */ - current = args[objIndex++]; - convert_to_string( *current ); - ZVAL_STRING( *current, buf, 1 ); + current = args[objIndex++]; + zval_dtor(*current); + ZVAL_STRING( *current, buf, 1 ); } else { add_index_string(*return_value, objIndex++, buf, 1); } @@ -1077,8 +1077,8 @@ addToInt: break; } else if (numVars) { current = args[objIndex++]; - convert_to_long( *current ); - Z_LVAL(**current) = value; + zval_dtor(*current); + ZVAL_LONG(*current, value); } else { add_index_long(*return_value, objIndex++, value); } @@ -1182,8 +1182,8 @@ addToFloat: break; } else if (numVars) { current = args[objIndex++]; - convert_to_double( *current ); - Z_DVAL_PP( current ) = dvalue; + zval_dtor(*current); + ZVAL_DOUBLE(*current, dvalue); } else { add_index_double( *return_value, objIndex++, dvalue ); } diff --git a/ext/standard/scanf.h b/ext/standard/scanf.h index 25ef8c45c..e87bc17e1 100644 --- a/ext/standard/scanf.h +++ b/ext/standard/scanf.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: scanf.h,v 1.14.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: scanf.h,v 1.14.2.2.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef SCANF_H #define SCANF_H diff --git a/ext/standard/sha1.c b/ext/standard/sha1.c index 1fae65324..d14167fff 100644 --- a/ext/standard/sha1.c +++ b/ext/standard/sha1.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sha1.c,v 1.13.2.1.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: sha1.c,v 1.13.2.1.2.5 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/sha1.h b/ext/standard/sha1.h index a29f96190..bb7a4516c 100644 --- a/ext/standard/sha1.h +++ b/ext/standard/sha1.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sha1.h,v 1.5.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: sha1.h,v 1.5.2.1.2.4 2008/12/31 11:17:45 sebastian Exp $ */ #ifndef SHA1_H #define SHA1_H diff --git a/ext/standard/soundex.c b/ext/standard/soundex.c index 20ee0b73a..ee8c2ac36 100644 --- a/ext/standard/soundex.c +++ b/ext/standard/soundex.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Bjørn Borud - Guardian Networks AS | +----------------------------------------------------------------------+ */ -/* $Id: soundex.c,v 1.25.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: soundex.c,v 1.25.2.1.2.3 2008/12/31 11:17:45 sebastian Exp $ */ #include "php.h" #include diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index c8542fba8..2dedc8d33 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.c,v 1.58.2.6.2.19 2008/02/03 16:15:30 iliaa Exp $ */ +/* $Id: streamsfuncs.c,v 1.58.2.6.2.31 2009/01/08 17:03:42 lbarnaud Exp $ */ #include "php.h" #include "php_globals.h" @@ -69,13 +69,18 @@ PHP_FUNCTION(stream_socket_pair) s1 = php_stream_sock_open_from_socket(pair[0], 0); s2 = php_stream_sock_open_from_socket(pair[1], 0); + /* set the __exposed flag. + * php_stream_to_zval() does, add_next_index_resource() does not */ + php_stream_auto_cleanup(s1); + php_stream_auto_cleanup(s2); + add_next_index_resource(return_value, php_stream_get_resource_id(s1)); add_next_index_resource(return_value, php_stream_get_resource_id(s2)); } /* }}} */ #endif -/* {{{ proto resource stream_socket_client(string remoteaddress [, long &errcode, string &errstring, double timeout, long flags, resource context]) +/* {{{ proto resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]]) Open a client connection to a remote address */ PHP_FUNCTION(stream_socket_client) { @@ -122,6 +127,7 @@ PHP_FUNCTION(stream_socket_client) STREAM_XPORT_CLIENT | (flags & PHP_STREAM_CLIENT_CONNECT ? STREAM_XPORT_CONNECT : 0) | (flags & PHP_STREAM_CLIENT_ASYNC_CONNECT ? STREAM_XPORT_CONNECT_ASYNC : 0), hashkey, &tv, context, &errstr, &err); + if (stream == NULL) { /* host might contain binary characters */ @@ -162,7 +168,7 @@ PHP_FUNCTION(stream_socket_client) } /* }}} */ -/* {{{ proto resource stream_socket_server(string localaddress [, long &errcode, string &errstring, long flags, resource context]) +/* {{{ proto resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]]) Create a server socket bound to localaddress */ PHP_FUNCTION(stream_socket_server) { @@ -195,7 +201,7 @@ PHP_FUNCTION(stream_socket_server) stream = php_stream_xport_create(host, host_len, ENFORCE_SAFE_MODE | REPORT_ERRORS, STREAM_XPORT_SERVER | flags, NULL, NULL, context, &errstr, &err); - + if (stream == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", host, errstr == NULL ? "Unknown error" : errstr); } @@ -227,7 +233,7 @@ PHP_FUNCTION(stream_socket_server) } /* }}} */ -/* {{{ proto resource stream_socket_accept(resource serverstream, [ double timeout, string &peername ]) +/* {{{ proto resource stream_socket_accept(resource serverstream [, double timeout [, string &peername ]]) Accept a client connection from a server socket */ PHP_FUNCTION(stream_socket_accept) { @@ -262,7 +268,7 @@ PHP_FUNCTION(stream_socket_accept) NULL, NULL, &tv, &errstr TSRMLS_CC) && clistream) { - + if (peername) { Z_TYPE_P(peername) = IS_STRING; } @@ -405,23 +411,21 @@ PHP_FUNCTION(stream_get_contents) php_stream_from_zval(stream, &zsrc); - if (pos > 0 && php_stream_seek(stream, pos, SEEK_SET) < 0) { + if ((pos > 0 || (pos == 0 && ZEND_NUM_ARGS() > 2)) && php_stream_seek(stream, pos, SEEK_SET) < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to seek to position %ld in the stream", pos); RETURN_FALSE; } - if ((len = php_stream_copy_to_mem(stream, &contents, maxlen, 0)) > 0) { - - if (PG(magic_quotes_runtime)) { + len = php_stream_copy_to_mem(stream, &contents, maxlen, 0); + + if (contents) { + if (len && PG(magic_quotes_runtime)) { contents = php_addslashes(contents, len, &newlen, 1 TSRMLS_CC); /* 1 = free source string */ len = newlen; } - RETVAL_STRINGL(contents, len, 0); - } else if (len == 0) { - RETVAL_EMPTY_STRING(); } else { - RETVAL_FALSE; + RETVAL_EMPTY_STRING(); } } /* }}} */ @@ -783,6 +787,12 @@ PHP_FUNCTION(stream_select) retval = stream_array_emulate_read_fd_set(r_array TSRMLS_CC); if (retval > 0) { + if (w_array != NULL) { + zend_hash_clean(Z_ARRVAL_P(w_array)); + } + if (e_array != NULL) { + zend_hash_clean(Z_ARRVAL_P(e_array)); + } RETURN_LONG(retval); } } @@ -818,12 +828,13 @@ static void user_space_stream_notifier(php_stream_context *context, int notifyco INIT_ZVAL(zvs[i]); ps[i] = &zvs[i]; ptps[i] = &ps[i]; + MAKE_STD_ZVAL(ps[i]); } ZVAL_LONG(ps[0], notifycode); ZVAL_LONG(ps[1], severity); if (xmsg) { - ZVAL_STRING(ps[2], xmsg, 0); + ZVAL_STRING(ps[2], xmsg, 1); } else { ZVAL_NULL(ps[2]); } @@ -834,6 +845,9 @@ static void user_space_stream_notifier(php_stream_context *context, int notifyco if (FAILURE == call_user_function_ex(EG(function_table), NULL, callback, &retval, 6, ptps, 0, NULL TSRMLS_CC)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to call user notifier"); } + for (i = 0; i < 6; i++) { + zval_ptr_dtor(&ps[i]); + } if (retval) { zval_ptr_dtor(&retval); } @@ -879,7 +893,7 @@ static int parse_context_options(php_stream_context *context, zval *options) return ret; } -static int parse_context_params(php_stream_context *context, zval *params) +static int parse_context_params(php_stream_context *context, zval *params TSRMLS_DC) { int ret = SUCCESS; zval **tmp; @@ -898,7 +912,11 @@ static int parse_context_params(php_stream_context *context, zval *params) context->notifier->dtor = user_space_stream_notifier_dtor; } if (SUCCESS == zend_hash_find(Z_ARRVAL_P(params), "options", sizeof("options"), (void**)&tmp)) { - parse_context_options(context, *tmp); + if (Z_TYPE_PP(tmp) == IS_ARRAY) { + parse_context_options(context, *tmp); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid stream/context parameter"); + } } return ret; @@ -1006,7 +1024,7 @@ PHP_FUNCTION(stream_context_set_params) RETURN_FALSE; } - RETVAL_BOOL(parse_context_params(context, params) == SUCCESS); + RETVAL_BOOL(parse_context_params(context, params TSRMLS_CC) == SUCCESS); } /* }}} */ @@ -1065,6 +1083,7 @@ static void apply_filter_to_stream(int append, INTERNAL_FUNCTION_PARAMETERS) long read_write = 0; zval *filterparams = NULL; php_stream_filter *filter = NULL; + int ret; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lz", &zstream, &filtername, &filternamelen, &read_write, &filterparams) == FAILURE) { @@ -1094,9 +1113,13 @@ static void apply_filter_to_stream(int append, INTERNAL_FUNCTION_PARAMETERS) } if (append) { - php_stream_filter_append(&stream->readfilters, filter); + ret = php_stream_filter_append_ex(&stream->readfilters, filter TSRMLS_CC); } else { - php_stream_filter_prepend(&stream->readfilters, filter); + ret = php_stream_filter_prepend_ex(&stream->readfilters, filter TSRMLS_CC); + } + if (ret != SUCCESS) { + php_stream_filter_remove(filter, 1 TSRMLS_CC); + RETURN_FALSE; } } @@ -1107,9 +1130,13 @@ static void apply_filter_to_stream(int append, INTERNAL_FUNCTION_PARAMETERS) } if (append) { - php_stream_filter_append(&stream->writefilters, filter); + ret = php_stream_filter_append_ex(&stream->writefilters, filter TSRMLS_CC); } else { - php_stream_filter_prepend(&stream->writefilters, filter); + ret = php_stream_filter_prepend_ex(&stream->writefilters, filter TSRMLS_CC); + } + if (ret != SUCCESS) { + php_stream_filter_remove(filter, 1 TSRMLS_CC); + RETURN_FALSE; } } @@ -1301,7 +1328,7 @@ PHP_FUNCTION(stream_set_write_buffer) } /* }}} */ -/* {{{ proto int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind, resource sessionstream]) +/* {{{ proto int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]]) Enable or disable a specific kind of crypto on the stream */ PHP_FUNCTION(stream_socket_enable_crypto) { diff --git a/ext/standard/streamsfuncs.h b/ext/standard/streamsfuncs.h index b966ed57d..d07465561 100644 --- a/ext/standard/streamsfuncs.h +++ b/ext/standard/streamsfuncs.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.h,v 1.13.2.1.2.5 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: streamsfuncs.h,v 1.13.2.1.2.6 2008/12/31 11:17:45 sebastian Exp $ */ /* Flags for stream_socket_client */ #define PHP_STREAM_CLIENT_PERSISTENT 1 diff --git a/ext/standard/string.c b/ext/standard/string.c index 8125c18e2..5feca517f 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: string.c,v 1.445.2.14.2.73 2008/01/16 08:35:59 tony2001 Exp $ */ +/* $Id: string.c,v 1.445.2.14.2.81 2009/02/14 07:00:24 moriyoshi Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -592,14 +592,12 @@ PHP_FUNCTION(nl_langinfo) #endif #ifdef DECIMAL_POINT case DECIMAL_POINT: -#endif -#ifdef RADIXCHAR +#elif defined(RADIXCHAR) case RADIXCHAR: #endif #ifdef THOUSANDS_SEP case THOUSANDS_SEP: -#endif -#ifdef THOUSEP +#elif defined(THOUSEP) case THOUSEP: #endif #ifdef GROUPING @@ -1035,7 +1033,9 @@ PHP_FUNCTION(explode) array_init(return_value); if (! Z_STRLEN_PP(str)) { - add_next_index_stringl(return_value, "", sizeof("") - 1, 1); + if (limit >= 0 || argc == 2) { + add_next_index_stringl(return_value, "", sizeof("") - 1, 1); + } return; } @@ -1949,14 +1949,14 @@ PHP_FUNCTION(strrpos) if (offset >= 0) { if (offset > haystack_len) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } p = haystack + offset; e = haystack + haystack_len - needle_len; } else { if (-offset > haystack_len) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } @@ -2025,7 +2025,7 @@ PHP_FUNCTION(strripos) Can also avoid tolower emallocs */ if (offset >= 0) { if (offset > haystack_len) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } p = haystack + offset; @@ -2033,7 +2033,7 @@ PHP_FUNCTION(strripos) } else { p = haystack; if (-offset > haystack_len || offset < -INT_MAX) { - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } e = haystack + haystack_len + offset; @@ -2058,7 +2058,7 @@ PHP_FUNCTION(strripos) if (offset > haystack_len) { efree(needle_dup); efree(haystack_dup); - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } p = haystack_dup + offset; @@ -2067,7 +2067,7 @@ PHP_FUNCTION(strripos) if (-offset > haystack_len || offset < -INT_MAX) { efree(needle_dup); efree(haystack_dup); - php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is greater than the length of haystack string"); RETURN_FALSE; } p = haystack_dup; @@ -2262,8 +2262,10 @@ PHP_FUNCTION(substr) } f = Z_LVAL_PP(from); - if (f > Z_STRLEN_PP(str) || (f < 0 && -f > Z_STRLEN_PP(str))) { + if (f > Z_STRLEN_PP(str)) { RETURN_FALSE; + } else if (f < 0 && -f > Z_STRLEN_PP(str)) { + f = 0; } if (l < 0 && (l + Z_STRLEN_PP(str) - f) < 0) { @@ -4357,6 +4359,9 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, case '\0': break; case '<': + if (in_q) { + break; + } if (isspace(*(p + 1)) && !allow_tag_spaces) { goto reg_char; } @@ -4521,12 +4526,13 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, /* fall-through */ case 'l': + case 'L': /* swm: If we encounter ' buf+2 && *(p-1) == 'm' && *(p-2) == 'x') { + if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) { state = 1; break; } @@ -4916,7 +4922,7 @@ PHP_FUNCTION(str_pad) /* If resulting string turns out to be shorter than input string, we simply copy the input and return. */ - if (Z_LVAL_PP(pad_length) < 0 || num_pad_chars < 0) { + if (Z_LVAL_PP(pad_length) <= 0 || num_pad_chars <= 0) { RETURN_ZVAL(*input, 1, 0); } diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c index 985bb8411..ad1445ead 100644 --- a/ext/standard/syslog.c +++ b/ext/standard/syslog.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: syslog.c,v 1.49.2.3.2.4 2008/02/20 15:28:37 iliaa Exp $ */ +/* $Id: syslog.c,v 1.49.2.3.2.5 2008/12/31 11:17:46 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/tests/array/array_chunk.phpt b/ext/standard/tests/array/array_chunk.phpt index 061c6994b..2ee77e129 100644 --- a/ext/standard/tests/array/array_chunk.phpt +++ b/ext/standard/tests/array/array_chunk.phpt @@ -2,5325 +2,20 @@ array_chunk() --FILE-- 0), - array (2 => 1), - array (3 => -1), - - array (1 => 0, 2 => 2), - array (1 => 1, 2 => 2, 3 => 3), - array (0 => 0, 3 => 2), - array (1 => 1, 5 => 2, 8 => 3), - - array (1, 2), - array (0, 1, 2), - array (1, 2, 3), - array (0, 1, 2, 3), - array (1, 2, 3, 4), - array (0, 1, 2, 3, 4), - array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), - array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), - - array ("a" => 1), - array ("b" => 1, "c" => 2), - array ("p" => 1, "q" => 2, "r" => 3, "s" => 4, "u" => 5, "v" => 6), - - array ("a" => "A"), - array ("p" => "A", "q" => "B", "r" => "C", "s" => "D", "u" => "E", "v" => "F"), -); - -foreach ($arrays as $item) { - echo "===========================================\n"; - var_dump ($item); - echo "-------------------------------------------\n"; - for ($i = 0; $i < (sizeof($item) + 1); $i++) { - echo "[$i]\n"; - var_dump (@array_chunk ($item, $i)); - var_dump (@array_chunk ($item, $i, TRUE)); - var_dump (@array_chunk ($item, $i, FALSE)); - echo "\n"; - } +$array = array (); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); echo "\n"; } -echo "end\n"; ?> --EXPECT-- -=========================================== array(0) { } -------------------------------------------- [0] NULL NULL NULL - - -=========================================== -array(1) { - [0]=> - int(0) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(0) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(0) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(0) - } -} - - -=========================================== -array(1) { - [0]=> - int(1) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - - -=========================================== -array(1) { - [0]=> - int(-1) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(-1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(-1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(-1) - } -} - - -=========================================== -array(2) { - [0]=> - int(0) - [1]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [1]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} - - -=========================================== -array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [1]=> - int(2) - } - [2]=> - array(1) { - [2]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [2]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} - -[3] -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} - - -=========================================== -array(1) { - [1]=> - int(0) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(0) - } -} -array(1) { - [0]=> - array(1) { - [1]=> - int(0) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(0) - } -} - - -=========================================== -array(1) { - [2]=> - int(1) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [2]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - - -=========================================== -array(1) { - [3]=> - int(-1) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(-1) - } -} -array(1) { - [0]=> - array(1) { - [3]=> - int(-1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(-1) - } -} - - -=========================================== -array(2) { - [1]=> - int(0) - [2]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [1]=> - int(0) - } - [1]=> - array(1) { - [2]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [1]=> - int(0) - [2]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} - - -=========================================== -array(3) { - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [1]=> - int(1) - } - [1]=> - array(1) { - [2]=> - int(2) - } - [2]=> - array(1) { - [3]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(1) { - [3]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} - -[3] -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} - - -=========================================== -array(2) { - [0]=> - int(0) - [3]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [3]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [3]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(2) - } -} - - -=========================================== -array(3) { - [1]=> - int(1) - [5]=> - int(2) - [8]=> - int(3) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [1]=> - int(1) - } - [1]=> - array(1) { - [5]=> - int(2) - } - [2]=> - array(1) { - [8]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [1]=> - int(1) - [5]=> - int(2) - } - [1]=> - array(1) { - [8]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} - -[3] -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [1]=> - int(1) - [5]=> - int(2) - [8]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} - - -=========================================== -array(2) { - [0]=> - int(1) - [1]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(2) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [1]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(1) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } -} - - -=========================================== -array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(3) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [1]=> - int(1) - } - [2]=> - array(1) { - [2]=> - int(2) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(1) { - [2]=> - int(2) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[3] -array(1) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } -} - - -=========================================== -array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [1]=> - int(2) - } - [2]=> - array(1) { - [2]=> - int(3) - } -} -array(3) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [2]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} - -[3] -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} -array(1) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } -} - - -=========================================== -array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(4) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } -} -array(4) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [1]=> - int(1) - } - [2]=> - array(1) { - [2]=> - int(2) - } - [3]=> - array(1) { - [3]=> - int(3) - } -} -array(4) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [2]=> - int(2) - [3]=> - int(3) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } -} - -[3] -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(1) { - [3]=> - int(3) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(1) { - [0]=> - int(3) - } -} - -[4] -array(1) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } -} -array(1) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } -} -array(1) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } -} - - -=========================================== -array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(4) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } -} -array(4) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [1]=> - int(2) - } - [2]=> - array(1) { - [2]=> - int(3) - } - [3]=> - array(1) { - [3]=> - int(4) - } -} -array(4) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } -} - -[2] -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [2]=> - int(3) - [3]=> - int(4) - } -} -array(2) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } -} - -[3] -array(2) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(1) { - [0]=> - int(4) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(1) { - [3]=> - int(4) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(1) { - [0]=> - int(4) - } -} - -[4] -array(1) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } -} -array(1) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } -} -array(1) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } -} - - -=========================================== -array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(5) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } - [4]=> - array(1) { - [0]=> - int(4) - } -} -array(5) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [1]=> - int(1) - } - [2]=> - array(1) { - [2]=> - int(2) - } - [3]=> - array(1) { - [3]=> - int(3) - } - [4]=> - array(1) { - [4]=> - int(4) - } -} -array(5) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } - [4]=> - array(1) { - [0]=> - int(4) - } -} - -[2] -array(3) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } - [2]=> - array(1) { - [0]=> - int(4) - } -} -array(3) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [2]=> - int(2) - [3]=> - int(3) - } - [2]=> - array(1) { - [4]=> - int(4) - } -} -array(3) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } - [2]=> - array(1) { - [0]=> - int(4) - } -} - -[3] -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(2) { - [3]=> - int(3) - [4]=> - int(4) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } -} - -[4] -array(2) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(1) { - [0]=> - int(4) - } -} -array(2) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(1) { - [4]=> - int(4) - } -} -array(2) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(1) { - [0]=> - int(4) - } -} - -[5] -array(1) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } -} -array(1) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } -} -array(1) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } -} - - -=========================================== -array(10) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(10) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } - [4]=> - array(1) { - [0]=> - int(5) - } - [5]=> - array(1) { - [0]=> - int(6) - } - [6]=> - array(1) { - [0]=> - int(7) - } - [7]=> - array(1) { - [0]=> - int(8) - } - [8]=> - array(1) { - [0]=> - int(9) - } - [9]=> - array(1) { - [0]=> - int(10) - } -} -array(10) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [1]=> - int(2) - } - [2]=> - array(1) { - [2]=> - int(3) - } - [3]=> - array(1) { - [3]=> - int(4) - } - [4]=> - array(1) { - [4]=> - int(5) - } - [5]=> - array(1) { - [5]=> - int(6) - } - [6]=> - array(1) { - [6]=> - int(7) - } - [7]=> - array(1) { - [7]=> - int(8) - } - [8]=> - array(1) { - [8]=> - int(9) - } - [9]=> - array(1) { - [9]=> - int(10) - } -} -array(10) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } - [4]=> - array(1) { - [0]=> - int(5) - } - [5]=> - array(1) { - [0]=> - int(6) - } - [6]=> - array(1) { - [0]=> - int(7) - } - [7]=> - array(1) { - [0]=> - int(8) - } - [8]=> - array(1) { - [0]=> - int(9) - } - [9]=> - array(1) { - [0]=> - int(10) - } -} - -[2] -array(5) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } - [2]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } - [3]=> - array(2) { - [0]=> - int(7) - [1]=> - int(8) - } - [4]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} -array(5) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [2]=> - int(3) - [3]=> - int(4) - } - [2]=> - array(2) { - [4]=> - int(5) - [5]=> - int(6) - } - [3]=> - array(2) { - [6]=> - int(7) - [7]=> - int(8) - } - [4]=> - array(2) { - [8]=> - int(9) - [9]=> - int(10) - } -} -array(5) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } - [2]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } - [3]=> - array(2) { - [0]=> - int(7) - [1]=> - int(8) - } - [4]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} - -[3] -array(4) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(3) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - } - [2]=> - array(3) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - } - [3]=> - array(1) { - [0]=> - int(10) - } -} -array(4) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(3) { - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } - [2]=> - array(3) { - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - } - [3]=> - array(1) { - [9]=> - int(10) - } -} -array(4) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(3) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - } - [2]=> - array(3) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - } - [3]=> - array(1) { - [0]=> - int(10) - } -} - -[4] -array(3) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } - [1]=> - array(4) { - [0]=> - int(5) - [1]=> - int(6) - [2]=> - int(7) - [3]=> - int(8) - } - [2]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} -array(3) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } - [1]=> - array(4) { - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - } - [2]=> - array(2) { - [8]=> - int(9) - [9]=> - int(10) - } -} -array(3) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } - [1]=> - array(4) { - [0]=> - int(5) - [1]=> - int(6) - [2]=> - int(7) - [3]=> - int(8) - } - [2]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} - -[5] -array(2) { - [0]=> - array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - } - [1]=> - array(5) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - [3]=> - int(9) - [4]=> - int(10) - } -} -array(2) { - [0]=> - array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - } - [1]=> - array(5) { - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} -array(2) { - [0]=> - array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - } - [1]=> - array(5) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - [3]=> - int(9) - [4]=> - int(10) - } -} - -[6] -array(2) { - [0]=> - array(6) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } - [1]=> - array(4) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - [3]=> - int(10) - } -} -array(2) { - [0]=> - array(6) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } - [1]=> - array(4) { - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} -array(2) { - [0]=> - array(6) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } - [1]=> - array(4) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - [3]=> - int(10) - } -} - -[7] -array(2) { - [0]=> - array(7) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - } - [1]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} -array(2) { - [0]=> - array(7) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - } - [1]=> - array(3) { - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} -array(2) { - [0]=> - array(7) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - } - [1]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} - -[8] -array(2) { - [0]=> - array(8) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - } - [1]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} -array(2) { - [0]=> - array(8) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - } - [1]=> - array(2) { - [8]=> - int(9) - [9]=> - int(10) - } -} -array(2) { - [0]=> - array(8) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - } - [1]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} - -[9] -array(2) { - [0]=> - array(9) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - } - [1]=> - array(1) { - [0]=> - int(10) - } -} -array(2) { - [0]=> - array(9) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - } - [1]=> - array(1) { - [9]=> - int(10) - } -} -array(2) { - [0]=> - array(9) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - } - [1]=> - array(1) { - [0]=> - int(10) - } -} - -[10] -array(1) { - [0]=> - array(10) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} -array(1) { - [0]=> - array(10) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} -array(1) { - [0]=> - array(10) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - [6]=> - int(7) - [7]=> - int(8) - [8]=> - int(9) - [9]=> - int(10) - } -} - - -=========================================== -array(11) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(11) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } - [4]=> - array(1) { - [0]=> - int(4) - } - [5]=> - array(1) { - [0]=> - int(5) - } - [6]=> - array(1) { - [0]=> - int(6) - } - [7]=> - array(1) { - [0]=> - int(7) - } - [8]=> - array(1) { - [0]=> - int(8) - } - [9]=> - array(1) { - [0]=> - int(9) - } - [10]=> - array(1) { - [0]=> - int(10) - } -} -array(11) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [1]=> - int(1) - } - [2]=> - array(1) { - [2]=> - int(2) - } - [3]=> - array(1) { - [3]=> - int(3) - } - [4]=> - array(1) { - [4]=> - int(4) - } - [5]=> - array(1) { - [5]=> - int(5) - } - [6]=> - array(1) { - [6]=> - int(6) - } - [7]=> - array(1) { - [7]=> - int(7) - } - [8]=> - array(1) { - [8]=> - int(8) - } - [9]=> - array(1) { - [9]=> - int(9) - } - [10]=> - array(1) { - [10]=> - int(10) - } -} -array(11) { - [0]=> - array(1) { - [0]=> - int(0) - } - [1]=> - array(1) { - [0]=> - int(1) - } - [2]=> - array(1) { - [0]=> - int(2) - } - [3]=> - array(1) { - [0]=> - int(3) - } - [4]=> - array(1) { - [0]=> - int(4) - } - [5]=> - array(1) { - [0]=> - int(5) - } - [6]=> - array(1) { - [0]=> - int(6) - } - [7]=> - array(1) { - [0]=> - int(7) - } - [8]=> - array(1) { - [0]=> - int(8) - } - [9]=> - array(1) { - [0]=> - int(9) - } - [10]=> - array(1) { - [0]=> - int(10) - } -} - -[2] -array(6) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } - [2]=> - array(2) { - [0]=> - int(4) - [1]=> - int(5) - } - [3]=> - array(2) { - [0]=> - int(6) - [1]=> - int(7) - } - [4]=> - array(2) { - [0]=> - int(8) - [1]=> - int(9) - } - [5]=> - array(1) { - [0]=> - int(10) - } -} -array(6) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [2]=> - int(2) - [3]=> - int(3) - } - [2]=> - array(2) { - [4]=> - int(4) - [5]=> - int(5) - } - [3]=> - array(2) { - [6]=> - int(6) - [7]=> - int(7) - } - [4]=> - array(2) { - [8]=> - int(8) - [9]=> - int(9) - } - [5]=> - array(1) { - [10]=> - int(10) - } -} -array(6) { - [0]=> - array(2) { - [0]=> - int(0) - [1]=> - int(1) - } - [1]=> - array(2) { - [0]=> - int(2) - [1]=> - int(3) - } - [2]=> - array(2) { - [0]=> - int(4) - [1]=> - int(5) - } - [3]=> - array(2) { - [0]=> - int(6) - [1]=> - int(7) - } - [4]=> - array(2) { - [0]=> - int(8) - [1]=> - int(9) - } - [5]=> - array(1) { - [0]=> - int(10) - } -} - -[3] -array(4) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(3) { - [0]=> - int(3) - [1]=> - int(4) - [2]=> - int(5) - } - [2]=> - array(3) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - } - [3]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} -array(4) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(3) { - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - } - [2]=> - array(3) { - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - } - [3]=> - array(2) { - [9]=> - int(9) - [10]=> - int(10) - } -} -array(4) { - [0]=> - array(3) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - } - [1]=> - array(3) { - [0]=> - int(3) - [1]=> - int(4) - [2]=> - int(5) - } - [2]=> - array(3) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - } - [3]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} - -[4] -array(3) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(4) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - [3]=> - int(7) - } - [2]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} -array(3) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(4) { - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - } - [2]=> - array(3) { - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(3) { - [0]=> - array(4) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - } - [1]=> - array(4) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - [3]=> - int(7) - } - [2]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} - -[5] -array(3) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } - [1]=> - array(5) { - [0]=> - int(5) - [1]=> - int(6) - [2]=> - int(7) - [3]=> - int(8) - [4]=> - int(9) - } - [2]=> - array(1) { - [0]=> - int(10) - } -} -array(3) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } - [1]=> - array(5) { - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - } - [2]=> - array(1) { - [10]=> - int(10) - } -} -array(3) { - [0]=> - array(5) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - } - [1]=> - array(5) { - [0]=> - int(5) - [1]=> - int(6) - [2]=> - int(7) - [3]=> - int(8) - [4]=> - int(9) - } - [2]=> - array(1) { - [0]=> - int(10) - } -} - -[6] -array(2) { - [0]=> - array(6) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - } - [1]=> - array(5) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - [3]=> - int(9) - [4]=> - int(10) - } -} -array(2) { - [0]=> - array(6) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - } - [1]=> - array(5) { - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(2) { - [0]=> - array(6) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - } - [1]=> - array(5) { - [0]=> - int(6) - [1]=> - int(7) - [2]=> - int(8) - [3]=> - int(9) - [4]=> - int(10) - } -} - -[7] -array(2) { - [0]=> - array(7) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - } - [1]=> - array(4) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - [3]=> - int(10) - } -} -array(2) { - [0]=> - array(7) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - } - [1]=> - array(4) { - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(2) { - [0]=> - array(7) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - } - [1]=> - array(4) { - [0]=> - int(7) - [1]=> - int(8) - [2]=> - int(9) - [3]=> - int(10) - } -} - -[8] -array(2) { - [0]=> - array(8) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - } - [1]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} -array(2) { - [0]=> - array(8) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - } - [1]=> - array(3) { - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(2) { - [0]=> - array(8) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - } - [1]=> - array(3) { - [0]=> - int(8) - [1]=> - int(9) - [2]=> - int(10) - } -} - -[9] -array(2) { - [0]=> - array(9) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - } - [1]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} -array(2) { - [0]=> - array(9) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - } - [1]=> - array(2) { - [9]=> - int(9) - [10]=> - int(10) - } -} -array(2) { - [0]=> - array(9) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - } - [1]=> - array(2) { - [0]=> - int(9) - [1]=> - int(10) - } -} - -[10] -array(2) { - [0]=> - array(10) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - } - [1]=> - array(1) { - [0]=> - int(10) - } -} -array(2) { - [0]=> - array(10) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - } - [1]=> - array(1) { - [10]=> - int(10) - } -} -array(2) { - [0]=> - array(10) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - } - [1]=> - array(1) { - [0]=> - int(10) - } -} - -[11] -array(1) { - [0]=> - array(11) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(1) { - [0]=> - array(11) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} -array(1) { - [0]=> - array(11) { - [0]=> - int(0) - [1]=> - int(1) - [2]=> - int(2) - [3]=> - int(3) - [4]=> - int(4) - [5]=> - int(5) - [6]=> - int(6) - [7]=> - int(7) - [8]=> - int(8) - [9]=> - int(9) - [10]=> - int(10) - } -} - - -=========================================== -array(1) { - ["a"]=> - int(1) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - ["a"]=> - int(1) - } -} -array(1) { - [0]=> - array(1) { - [0]=> - int(1) - } -} - - -=========================================== -array(2) { - ["b"]=> - int(1) - ["c"]=> - int(2) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(2) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - ["b"]=> - int(1) - } - [1]=> - array(1) { - ["c"]=> - int(2) - } -} -array(2) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } -} - -[2] -array(1) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - ["b"]=> - int(1) - ["c"]=> - int(2) - } -} -array(1) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } -} - - -=========================================== -array(6) { - ["p"]=> - int(1) - ["q"]=> - int(2) - ["r"]=> - int(3) - ["s"]=> - int(4) - ["u"]=> - int(5) - ["v"]=> - int(6) -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(6) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } - [4]=> - array(1) { - [0]=> - int(5) - } - [5]=> - array(1) { - [0]=> - int(6) - } -} -array(6) { - [0]=> - array(1) { - ["p"]=> - int(1) - } - [1]=> - array(1) { - ["q"]=> - int(2) - } - [2]=> - array(1) { - ["r"]=> - int(3) - } - [3]=> - array(1) { - ["s"]=> - int(4) - } - [4]=> - array(1) { - ["u"]=> - int(5) - } - [5]=> - array(1) { - ["v"]=> - int(6) - } -} -array(6) { - [0]=> - array(1) { - [0]=> - int(1) - } - [1]=> - array(1) { - [0]=> - int(2) - } - [2]=> - array(1) { - [0]=> - int(3) - } - [3]=> - array(1) { - [0]=> - int(4) - } - [4]=> - array(1) { - [0]=> - int(5) - } - [5]=> - array(1) { - [0]=> - int(6) - } -} - -[2] -array(3) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } - [2]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } -} -array(3) { - [0]=> - array(2) { - ["p"]=> - int(1) - ["q"]=> - int(2) - } - [1]=> - array(2) { - ["r"]=> - int(3) - ["s"]=> - int(4) - } - [2]=> - array(2) { - ["u"]=> - int(5) - ["v"]=> - int(6) - } -} -array(3) { - [0]=> - array(2) { - [0]=> - int(1) - [1]=> - int(2) - } - [1]=> - array(2) { - [0]=> - int(3) - [1]=> - int(4) - } - [2]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } -} - -[3] -array(2) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(3) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - } -} -array(2) { - [0]=> - array(3) { - ["p"]=> - int(1) - ["q"]=> - int(2) - ["r"]=> - int(3) - } - [1]=> - array(3) { - ["s"]=> - int(4) - ["u"]=> - int(5) - ["v"]=> - int(6) - } -} -array(2) { - [0]=> - array(3) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - } - [1]=> - array(3) { - [0]=> - int(4) - [1]=> - int(5) - [2]=> - int(6) - } -} - -[4] -array(2) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } - [1]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } -} -array(2) { - [0]=> - array(4) { - ["p"]=> - int(1) - ["q"]=> - int(2) - ["r"]=> - int(3) - ["s"]=> - int(4) - } - [1]=> - array(2) { - ["u"]=> - int(5) - ["v"]=> - int(6) - } -} -array(2) { - [0]=> - array(4) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - } - [1]=> - array(2) { - [0]=> - int(5) - [1]=> - int(6) - } -} - -[5] -array(2) { - [0]=> - array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - } - [1]=> - array(1) { - [0]=> - int(6) - } -} -array(2) { - [0]=> - array(5) { - ["p"]=> - int(1) - ["q"]=> - int(2) - ["r"]=> - int(3) - ["s"]=> - int(4) - ["u"]=> - int(5) - } - [1]=> - array(1) { - ["v"]=> - int(6) - } -} -array(2) { - [0]=> - array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - } - [1]=> - array(1) { - [0]=> - int(6) - } -} - -[6] -array(1) { - [0]=> - array(6) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } -} -array(1) { - [0]=> - array(6) { - ["p"]=> - int(1) - ["q"]=> - int(2) - ["r"]=> - int(3) - ["s"]=> - int(4) - ["u"]=> - int(5) - ["v"]=> - int(6) - } -} -array(1) { - [0]=> - array(6) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) - [5]=> - int(6) - } -} - - -=========================================== -array(1) { - ["a"]=> - string(1) "A" -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(1) { - [0]=> - array(1) { - [0]=> - string(1) "A" - } -} -array(1) { - [0]=> - array(1) { - ["a"]=> - string(1) "A" - } -} -array(1) { - [0]=> - array(1) { - [0]=> - string(1) "A" - } -} - - -=========================================== -array(6) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - ["r"]=> - string(1) "C" - ["s"]=> - string(1) "D" - ["u"]=> - string(1) "E" - ["v"]=> - string(1) "F" -} -------------------------------------------- -[0] -NULL -NULL -NULL - -[1] -array(6) { - [0]=> - array(1) { - [0]=> - string(1) "A" - } - [1]=> - array(1) { - [0]=> - string(1) "B" - } - [2]=> - array(1) { - [0]=> - string(1) "C" - } - [3]=> - array(1) { - [0]=> - string(1) "D" - } - [4]=> - array(1) { - [0]=> - string(1) "E" - } - [5]=> - array(1) { - [0]=> - string(1) "F" - } -} -array(6) { - [0]=> - array(1) { - ["p"]=> - string(1) "A" - } - [1]=> - array(1) { - ["q"]=> - string(1) "B" - } - [2]=> - array(1) { - ["r"]=> - string(1) "C" - } - [3]=> - array(1) { - ["s"]=> - string(1) "D" - } - [4]=> - array(1) { - ["u"]=> - string(1) "E" - } - [5]=> - array(1) { - ["v"]=> - string(1) "F" - } -} -array(6) { - [0]=> - array(1) { - [0]=> - string(1) "A" - } - [1]=> - array(1) { - [0]=> - string(1) "B" - } - [2]=> - array(1) { - [0]=> - string(1) "C" - } - [3]=> - array(1) { - [0]=> - string(1) "D" - } - [4]=> - array(1) { - [0]=> - string(1) "E" - } - [5]=> - array(1) { - [0]=> - string(1) "F" - } -} - -[2] -array(3) { - [0]=> - array(2) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - } - [1]=> - array(2) { - [0]=> - string(1) "C" - [1]=> - string(1) "D" - } - [2]=> - array(2) { - [0]=> - string(1) "E" - [1]=> - string(1) "F" - } -} -array(3) { - [0]=> - array(2) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - } - [1]=> - array(2) { - ["r"]=> - string(1) "C" - ["s"]=> - string(1) "D" - } - [2]=> - array(2) { - ["u"]=> - string(1) "E" - ["v"]=> - string(1) "F" - } -} -array(3) { - [0]=> - array(2) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - } - [1]=> - array(2) { - [0]=> - string(1) "C" - [1]=> - string(1) "D" - } - [2]=> - array(2) { - [0]=> - string(1) "E" - [1]=> - string(1) "F" - } -} - -[3] -array(2) { - [0]=> - array(3) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - } - [1]=> - array(3) { - [0]=> - string(1) "D" - [1]=> - string(1) "E" - [2]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(3) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - ["r"]=> - string(1) "C" - } - [1]=> - array(3) { - ["s"]=> - string(1) "D" - ["u"]=> - string(1) "E" - ["v"]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(3) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - } - [1]=> - array(3) { - [0]=> - string(1) "D" - [1]=> - string(1) "E" - [2]=> - string(1) "F" - } -} - -[4] -array(2) { - [0]=> - array(4) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - } - [1]=> - array(2) { - [0]=> - string(1) "E" - [1]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(4) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - ["r"]=> - string(1) "C" - ["s"]=> - string(1) "D" - } - [1]=> - array(2) { - ["u"]=> - string(1) "E" - ["v"]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(4) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - } - [1]=> - array(2) { - [0]=> - string(1) "E" - [1]=> - string(1) "F" - } -} - -[5] -array(2) { - [0]=> - array(5) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - [4]=> - string(1) "E" - } - [1]=> - array(1) { - [0]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(5) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - ["r"]=> - string(1) "C" - ["s"]=> - string(1) "D" - ["u"]=> - string(1) "E" - } - [1]=> - array(1) { - ["v"]=> - string(1) "F" - } -} -array(2) { - [0]=> - array(5) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - [4]=> - string(1) "E" - } - [1]=> - array(1) { - [0]=> - string(1) "F" - } -} - -[6] -array(1) { - [0]=> - array(6) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - [4]=> - string(1) "E" - [5]=> - string(1) "F" - } -} -array(1) { - [0]=> - array(6) { - ["p"]=> - string(1) "A" - ["q"]=> - string(1) "B" - ["r"]=> - string(1) "C" - ["s"]=> - string(1) "D" - ["u"]=> - string(1) "E" - ["v"]=> - string(1) "F" - } -} -array(1) { - [0]=> - array(6) { - [0]=> - string(1) "A" - [1]=> - string(1) "B" - [2]=> - string(1) "C" - [3]=> - string(1) "D" - [4]=> - string(1) "E" - [5]=> - string(1) "F" - } -} - - -end diff --git a/ext/standard/tests/array/array_chunk_variation10.phpt b/ext/standard/tests/array/array_chunk_variation10.phpt new file mode 100644 index 000000000..7b4bee172 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation10.phpt @@ -0,0 +1,159 @@ +--TEST-- +array_chunk() - variation 10 +--FILE-- + 1, 2 => 2, 3 => 3); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(3) { + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} +[0] +NULL +NULL +NULL + +[1] +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [1]=> + int(1) + } + [1]=> + array(1) { + [2]=> + int(2) + } + [2]=> + array(1) { + [3]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(1) { + [3]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} + +[3] +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation11.phpt b/ext/standard/tests/array/array_chunk_variation11.phpt new file mode 100644 index 000000000..dca366652 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation11.phpt @@ -0,0 +1,93 @@ +--TEST-- +array_chunk() - variation 11 +--FILE-- + 0, 3 => 2); + +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(2) { + [0]=> + int(0) + [3]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [3]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [3]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation12.phpt b/ext/standard/tests/array/array_chunk_variation12.phpt new file mode 100644 index 000000000..3b87dbab9 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation12.phpt @@ -0,0 +1,159 @@ +--TEST-- +array_chunk() - variation 12 +--FILE-- + 1, 5 => 2, 8 => 3); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(3) { + [1]=> + int(1) + [5]=> + int(2) + [8]=> + int(3) +} +[0] +NULL +NULL +NULL + +[1] +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [1]=> + int(1) + } + [1]=> + array(1) { + [5]=> + int(2) + } + [2]=> + array(1) { + [8]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [1]=> + int(1) + [5]=> + int(2) + } + [1]=> + array(1) { + [8]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} + +[3] +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [1]=> + int(1) + [5]=> + int(2) + [8]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation13.phpt b/ext/standard/tests/array/array_chunk_variation13.phpt new file mode 100644 index 000000000..f6369df1c --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation13.phpt @@ -0,0 +1,92 @@ +--TEST-- +array_chunk() - variation 13 +--FILE-- + +--EXPECT-- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(2) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [1]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(1) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation14.phpt b/ext/standard/tests/array/array_chunk_variation14.phpt new file mode 100644 index 000000000..f8d1b1179 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation14.phpt @@ -0,0 +1,159 @@ +--TEST-- +array_chunk() - variation 14 +--FILE-- + +--EXPECT-- +array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(3) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [1]=> + int(1) + } + [2]=> + array(1) { + [2]=> + int(2) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(1) { + [2]=> + int(2) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[3] +array(1) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation15.phpt b/ext/standard/tests/array/array_chunk_variation15.phpt new file mode 100644 index 000000000..abec754a3 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation15.phpt @@ -0,0 +1,159 @@ +--TEST-- +array_chunk() - variation 15 +--FILE-- + +--EXPECT-- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +[0] +NULL +NULL +NULL + +[1] +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [1]=> + int(2) + } + [2]=> + array(1) { + [2]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [2]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} + +[3] +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation16.phpt b/ext/standard/tests/array/array_chunk_variation16.phpt new file mode 100644 index 000000000..18179c8b0 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation16.phpt @@ -0,0 +1,238 @@ +--TEST-- +array_chunk() - variation 16 +--FILE-- + +--EXPECT-- +array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) +} +[0] +NULL +NULL +NULL + +[1] +array(4) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } +} +array(4) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [1]=> + int(1) + } + [2]=> + array(1) { + [2]=> + int(2) + } + [3]=> + array(1) { + [3]=> + int(3) + } +} +array(4) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [2]=> + int(2) + [3]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } +} + +[3] +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(1) { + [3]=> + int(3) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} + +[4] +array(1) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } +} +array(1) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } +} +array(1) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation17.phpt b/ext/standard/tests/array/array_chunk_variation17.phpt new file mode 100644 index 000000000..27507ea8c --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation17.phpt @@ -0,0 +1,238 @@ +--TEST-- +array_chunk() - variation 17 +--FILE-- + +--EXPECT-- +array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) +} +[0] +NULL +NULL +NULL + +[1] +array(4) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } +} +array(4) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [1]=> + int(2) + } + [2]=> + array(1) { + [2]=> + int(3) + } + [3]=> + array(1) { + [3]=> + int(4) + } +} +array(4) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [2]=> + int(3) + [3]=> + int(4) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } +} + +[3] +array(2) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(1) { + [0]=> + int(4) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(1) { + [3]=> + int(4) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(1) { + [0]=> + int(4) + } +} + +[4] +array(1) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } +} +array(1) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } +} +array(1) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation18.phpt b/ext/standard/tests/array/array_chunk_variation18.phpt new file mode 100644 index 000000000..7f0946f49 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation18.phpt @@ -0,0 +1,338 @@ +--TEST-- +array_chunk() - variation 18 +--FILE-- + +--EXPECT-- +array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) +} +[0] +NULL +NULL +NULL + +[1] +array(5) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } + [4]=> + array(1) { + [0]=> + int(4) + } +} +array(5) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [1]=> + int(1) + } + [2]=> + array(1) { + [2]=> + int(2) + } + [3]=> + array(1) { + [3]=> + int(3) + } + [4]=> + array(1) { + [4]=> + int(4) + } +} +array(5) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } + [4]=> + array(1) { + [0]=> + int(4) + } +} + +[2] +array(3) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } + [2]=> + array(1) { + [0]=> + int(4) + } +} +array(3) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [2]=> + int(2) + [3]=> + int(3) + } + [2]=> + array(1) { + [4]=> + int(4) + } +} +array(3) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } + [2]=> + array(1) { + [0]=> + int(4) + } +} + +[3] +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(2) { + [3]=> + int(3) + [4]=> + int(4) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } +} + +[4] +array(2) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(1) { + [0]=> + int(4) + } +} +array(2) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(1) { + [4]=> + int(4) + } +} +array(2) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(1) { + [0]=> + int(4) + } +} + +[5] +array(1) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } +} +array(1) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } +} +array(1) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation19.phpt b/ext/standard/tests/array/array_chunk_variation19.phpt new file mode 100644 index 000000000..d51389c9f --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation19.phpt @@ -0,0 +1,1018 @@ +--TEST-- +array_chunk() - variation 19 +--FILE-- + +--EXPECT-- +array(10) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) +} +[0] +NULL +NULL +NULL + +[1] +array(10) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } + [4]=> + array(1) { + [0]=> + int(5) + } + [5]=> + array(1) { + [0]=> + int(6) + } + [6]=> + array(1) { + [0]=> + int(7) + } + [7]=> + array(1) { + [0]=> + int(8) + } + [8]=> + array(1) { + [0]=> + int(9) + } + [9]=> + array(1) { + [0]=> + int(10) + } +} +array(10) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [1]=> + int(2) + } + [2]=> + array(1) { + [2]=> + int(3) + } + [3]=> + array(1) { + [3]=> + int(4) + } + [4]=> + array(1) { + [4]=> + int(5) + } + [5]=> + array(1) { + [5]=> + int(6) + } + [6]=> + array(1) { + [6]=> + int(7) + } + [7]=> + array(1) { + [7]=> + int(8) + } + [8]=> + array(1) { + [8]=> + int(9) + } + [9]=> + array(1) { + [9]=> + int(10) + } +} +array(10) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } + [4]=> + array(1) { + [0]=> + int(5) + } + [5]=> + array(1) { + [0]=> + int(6) + } + [6]=> + array(1) { + [0]=> + int(7) + } + [7]=> + array(1) { + [0]=> + int(8) + } + [8]=> + array(1) { + [0]=> + int(9) + } + [9]=> + array(1) { + [0]=> + int(10) + } +} + +[2] +array(5) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } + [2]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } + [3]=> + array(2) { + [0]=> + int(7) + [1]=> + int(8) + } + [4]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} +array(5) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [2]=> + int(3) + [3]=> + int(4) + } + [2]=> + array(2) { + [4]=> + int(5) + [5]=> + int(6) + } + [3]=> + array(2) { + [6]=> + int(7) + [7]=> + int(8) + } + [4]=> + array(2) { + [8]=> + int(9) + [9]=> + int(10) + } +} +array(5) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } + [2]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } + [3]=> + array(2) { + [0]=> + int(7) + [1]=> + int(8) + } + [4]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} + +[3] +array(4) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } + [2]=> + array(3) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + } + [3]=> + array(1) { + [0]=> + int(10) + } +} +array(4) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(3) { + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } + [2]=> + array(3) { + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + } + [3]=> + array(1) { + [9]=> + int(10) + } +} +array(4) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } + [2]=> + array(3) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + } + [3]=> + array(1) { + [0]=> + int(10) + } +} + +[4] +array(3) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } + [1]=> + array(4) { + [0]=> + int(5) + [1]=> + int(6) + [2]=> + int(7) + [3]=> + int(8) + } + [2]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} +array(3) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } + [1]=> + array(4) { + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + } + [2]=> + array(2) { + [8]=> + int(9) + [9]=> + int(10) + } +} +array(3) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } + [1]=> + array(4) { + [0]=> + int(5) + [1]=> + int(6) + [2]=> + int(7) + [3]=> + int(8) + } + [2]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} + +[5] +array(2) { + [0]=> + array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + } + [1]=> + array(5) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + [3]=> + int(9) + [4]=> + int(10) + } +} +array(2) { + [0]=> + array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + } + [1]=> + array(5) { + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} +array(2) { + [0]=> + array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + } + [1]=> + array(5) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + [3]=> + int(9) + [4]=> + int(10) + } +} + +[6] +array(2) { + [0]=> + array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } + [1]=> + array(4) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + [3]=> + int(10) + } +} +array(2) { + [0]=> + array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } + [1]=> + array(4) { + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} +array(2) { + [0]=> + array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } + [1]=> + array(4) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + [3]=> + int(10) + } +} + +[7] +array(2) { + [0]=> + array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + } + [1]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} +array(2) { + [0]=> + array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + } + [1]=> + array(3) { + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} +array(2) { + [0]=> + array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + } + [1]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} + +[8] +array(2) { + [0]=> + array(8) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + } + [1]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} +array(2) { + [0]=> + array(8) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + } + [1]=> + array(2) { + [8]=> + int(9) + [9]=> + int(10) + } +} +array(2) { + [0]=> + array(8) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + } + [1]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} + +[9] +array(2) { + [0]=> + array(9) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + } + [1]=> + array(1) { + [0]=> + int(10) + } +} +array(2) { + [0]=> + array(9) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + } + [1]=> + array(1) { + [9]=> + int(10) + } +} +array(2) { + [0]=> + array(9) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + } + [1]=> + array(1) { + [0]=> + int(10) + } +} + +[10] +array(1) { + [0]=> + array(10) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} +array(1) { + [0]=> + array(10) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} +array(1) { + [0]=> + array(10) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + [6]=> + int(7) + [7]=> + int(8) + [8]=> + int(9) + [9]=> + int(10) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation20.phpt b/ext/standard/tests/array/array_chunk_variation20.phpt new file mode 100644 index 000000000..cd5314ff0 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation20.phpt @@ -0,0 +1,1199 @@ +--TEST-- +array_chunk() - variation 20 +--FILE-- + +--EXPECT-- +array(11) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) +} +[0] +NULL +NULL +NULL + +[1] +array(11) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } + [4]=> + array(1) { + [0]=> + int(4) + } + [5]=> + array(1) { + [0]=> + int(5) + } + [6]=> + array(1) { + [0]=> + int(6) + } + [7]=> + array(1) { + [0]=> + int(7) + } + [8]=> + array(1) { + [0]=> + int(8) + } + [9]=> + array(1) { + [0]=> + int(9) + } + [10]=> + array(1) { + [0]=> + int(10) + } +} +array(11) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [1]=> + int(1) + } + [2]=> + array(1) { + [2]=> + int(2) + } + [3]=> + array(1) { + [3]=> + int(3) + } + [4]=> + array(1) { + [4]=> + int(4) + } + [5]=> + array(1) { + [5]=> + int(5) + } + [6]=> + array(1) { + [6]=> + int(6) + } + [7]=> + array(1) { + [7]=> + int(7) + } + [8]=> + array(1) { + [8]=> + int(8) + } + [9]=> + array(1) { + [9]=> + int(9) + } + [10]=> + array(1) { + [10]=> + int(10) + } +} +array(11) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(1) + } + [2]=> + array(1) { + [0]=> + int(2) + } + [3]=> + array(1) { + [0]=> + int(3) + } + [4]=> + array(1) { + [0]=> + int(4) + } + [5]=> + array(1) { + [0]=> + int(5) + } + [6]=> + array(1) { + [0]=> + int(6) + } + [7]=> + array(1) { + [0]=> + int(7) + } + [8]=> + array(1) { + [0]=> + int(8) + } + [9]=> + array(1) { + [0]=> + int(9) + } + [10]=> + array(1) { + [0]=> + int(10) + } +} + +[2] +array(6) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } + [2]=> + array(2) { + [0]=> + int(4) + [1]=> + int(5) + } + [3]=> + array(2) { + [0]=> + int(6) + [1]=> + int(7) + } + [4]=> + array(2) { + [0]=> + int(8) + [1]=> + int(9) + } + [5]=> + array(1) { + [0]=> + int(10) + } +} +array(6) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [2]=> + int(2) + [3]=> + int(3) + } + [2]=> + array(2) { + [4]=> + int(4) + [5]=> + int(5) + } + [3]=> + array(2) { + [6]=> + int(6) + [7]=> + int(7) + } + [4]=> + array(2) { + [8]=> + int(8) + [9]=> + int(9) + } + [5]=> + array(1) { + [10]=> + int(10) + } +} +array(6) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(1) + } + [1]=> + array(2) { + [0]=> + int(2) + [1]=> + int(3) + } + [2]=> + array(2) { + [0]=> + int(4) + [1]=> + int(5) + } + [3]=> + array(2) { + [0]=> + int(6) + [1]=> + int(7) + } + [4]=> + array(2) { + [0]=> + int(8) + [1]=> + int(9) + } + [5]=> + array(1) { + [0]=> + int(10) + } +} + +[3] +array(4) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(3) { + [0]=> + int(3) + [1]=> + int(4) + [2]=> + int(5) + } + [2]=> + array(3) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + } + [3]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} +array(4) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(3) { + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + } + [2]=> + array(3) { + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + } + [3]=> + array(2) { + [9]=> + int(9) + [10]=> + int(10) + } +} +array(4) { + [0]=> + array(3) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + } + [1]=> + array(3) { + [0]=> + int(3) + [1]=> + int(4) + [2]=> + int(5) + } + [2]=> + array(3) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + } + [3]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} + +[4] +array(3) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(4) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + [3]=> + int(7) + } + [2]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} +array(3) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(4) { + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + } + [2]=> + array(3) { + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(3) { + [0]=> + array(4) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + } + [1]=> + array(4) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + [3]=> + int(7) + } + [2]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} + +[5] +array(3) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } + [1]=> + array(5) { + [0]=> + int(5) + [1]=> + int(6) + [2]=> + int(7) + [3]=> + int(8) + [4]=> + int(9) + } + [2]=> + array(1) { + [0]=> + int(10) + } +} +array(3) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } + [1]=> + array(5) { + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + } + [2]=> + array(1) { + [10]=> + int(10) + } +} +array(3) { + [0]=> + array(5) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + } + [1]=> + array(5) { + [0]=> + int(5) + [1]=> + int(6) + [2]=> + int(7) + [3]=> + int(8) + [4]=> + int(9) + } + [2]=> + array(1) { + [0]=> + int(10) + } +} + +[6] +array(2) { + [0]=> + array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + } + [1]=> + array(5) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + [3]=> + int(9) + [4]=> + int(10) + } +} +array(2) { + [0]=> + array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + } + [1]=> + array(5) { + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(2) { + [0]=> + array(6) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + } + [1]=> + array(5) { + [0]=> + int(6) + [1]=> + int(7) + [2]=> + int(8) + [3]=> + int(9) + [4]=> + int(10) + } +} + +[7] +array(2) { + [0]=> + array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + } + [1]=> + array(4) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + [3]=> + int(10) + } +} +array(2) { + [0]=> + array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + } + [1]=> + array(4) { + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(2) { + [0]=> + array(7) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + } + [1]=> + array(4) { + [0]=> + int(7) + [1]=> + int(8) + [2]=> + int(9) + [3]=> + int(10) + } +} + +[8] +array(2) { + [0]=> + array(8) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + } + [1]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} +array(2) { + [0]=> + array(8) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + } + [1]=> + array(3) { + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(2) { + [0]=> + array(8) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + } + [1]=> + array(3) { + [0]=> + int(8) + [1]=> + int(9) + [2]=> + int(10) + } +} + +[9] +array(2) { + [0]=> + array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + } + [1]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} +array(2) { + [0]=> + array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + } + [1]=> + array(2) { + [9]=> + int(9) + [10]=> + int(10) + } +} +array(2) { + [0]=> + array(9) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + } + [1]=> + array(2) { + [0]=> + int(9) + [1]=> + int(10) + } +} + +[10] +array(2) { + [0]=> + array(10) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + } + [1]=> + array(1) { + [0]=> + int(10) + } +} +array(2) { + [0]=> + array(10) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + } + [1]=> + array(1) { + [10]=> + int(10) + } +} +array(2) { + [0]=> + array(10) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + } + [1]=> + array(1) { + [0]=> + int(10) + } +} + +[11] +array(1) { + [0]=> + array(11) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(1) { + [0]=> + array(11) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} +array(1) { + [0]=> + array(11) { + [0]=> + int(0) + [1]=> + int(1) + [2]=> + int(2) + [3]=> + int(3) + [4]=> + int(4) + [5]=> + int(5) + [6]=> + int(6) + [7]=> + int(7) + [8]=> + int(8) + [9]=> + int(9) + [10]=> + int(10) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation21.phpt b/ext/standard/tests/array/array_chunk_variation21.phpt new file mode 100644 index 000000000..678bf1675 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation21.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 21 +--FILE-- + 1); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(1) { + ["a"]=> + int(1) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + ["a"]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation22.phpt b/ext/standard/tests/array/array_chunk_variation22.phpt new file mode 100644 index 000000000..45c458ebf --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation22.phpt @@ -0,0 +1,92 @@ +--TEST-- +array_chunk() - variation 22 +--FILE-- + 1, "c" => 2); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(2) { + ["b"]=> + int(1) + ["c"]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(2) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + ["b"]=> + int(1) + } + [1]=> + array(1) { + ["c"]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(1) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + ["b"]=> + int(1) + ["c"]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation23.phpt b/ext/standard/tests/array/array_chunk_variation23.phpt new file mode 100644 index 000000000..80b92985b --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation23.phpt @@ -0,0 +1,441 @@ +--TEST-- +array_chunk() - variation 23 +--FILE-- + 1, "q" => 2, "r" => 3, "s" => 4, "u" => 5, "v" => 6); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(6) { + ["p"]=> + int(1) + ["q"]=> + int(2) + ["r"]=> + int(3) + ["s"]=> + int(4) + ["u"]=> + int(5) + ["v"]=> + int(6) +} +[0] +NULL +NULL +NULL + +[1] +array(6) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } + [4]=> + array(1) { + [0]=> + int(5) + } + [5]=> + array(1) { + [0]=> + int(6) + } +} +array(6) { + [0]=> + array(1) { + ["p"]=> + int(1) + } + [1]=> + array(1) { + ["q"]=> + int(2) + } + [2]=> + array(1) { + ["r"]=> + int(3) + } + [3]=> + array(1) { + ["s"]=> + int(4) + } + [4]=> + array(1) { + ["u"]=> + int(5) + } + [5]=> + array(1) { + ["v"]=> + int(6) + } +} +array(6) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } + [3]=> + array(1) { + [0]=> + int(4) + } + [4]=> + array(1) { + [0]=> + int(5) + } + [5]=> + array(1) { + [0]=> + int(6) + } +} + +[2] +array(3) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } + [2]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } +} +array(3) { + [0]=> + array(2) { + ["p"]=> + int(1) + ["q"]=> + int(2) + } + [1]=> + array(2) { + ["r"]=> + int(3) + ["s"]=> + int(4) + } + [2]=> + array(2) { + ["u"]=> + int(5) + ["v"]=> + int(6) + } +} +array(3) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(2) { + [0]=> + int(3) + [1]=> + int(4) + } + [2]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } +} + +[3] +array(2) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } +} +array(2) { + [0]=> + array(3) { + ["p"]=> + int(1) + ["q"]=> + int(2) + ["r"]=> + int(3) + } + [1]=> + array(3) { + ["s"]=> + int(4) + ["u"]=> + int(5) + ["v"]=> + int(6) + } +} +array(2) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } + [1]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } +} + +[4] +array(2) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } + [1]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } +} +array(2) { + [0]=> + array(4) { + ["p"]=> + int(1) + ["q"]=> + int(2) + ["r"]=> + int(3) + ["s"]=> + int(4) + } + [1]=> + array(2) { + ["u"]=> + int(5) + ["v"]=> + int(6) + } +} +array(2) { + [0]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } + [1]=> + array(2) { + [0]=> + int(5) + [1]=> + int(6) + } +} + +[5] +array(2) { + [0]=> + array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + } + [1]=> + array(1) { + [0]=> + int(6) + } +} +array(2) { + [0]=> + array(5) { + ["p"]=> + int(1) + ["q"]=> + int(2) + ["r"]=> + int(3) + ["s"]=> + int(4) + ["u"]=> + int(5) + } + [1]=> + array(1) { + ["v"]=> + int(6) + } +} +array(2) { + [0]=> + array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + } + [1]=> + array(1) { + [0]=> + int(6) + } +} + +[6] +array(1) { + [0]=> + array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } +} +array(1) { + [0]=> + array(6) { + ["p"]=> + int(1) + ["q"]=> + int(2) + ["r"]=> + int(3) + ["s"]=> + int(4) + ["u"]=> + int(5) + ["v"]=> + int(6) + } +} +array(1) { + [0]=> + array(6) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + [4]=> + int(5) + [5]=> + int(6) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation24.phpt b/ext/standard/tests/array/array_chunk_variation24.phpt new file mode 100644 index 000000000..e25f53f6b --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation24.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 24 +--FILE-- + "A"); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(1) { + ["a"]=> + string(1) "A" +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + string(1) "A" + } +} +array(1) { + [0]=> + array(1) { + ["a"]=> + string(1) "A" + } +} +array(1) { + [0]=> + array(1) { + [0]=> + string(1) "A" + } +} diff --git a/ext/standard/tests/array/array_chunk_variation25.phpt b/ext/standard/tests/array/array_chunk_variation25.phpt new file mode 100644 index 000000000..eae89e952 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation25.phpt @@ -0,0 +1,441 @@ +--TEST-- +array_chunk() - variation 25 +--FILE-- + "A", "q" => "B", "r" => "C", "s" => "D", "u" => "E", "v" => "F"); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(6) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + ["r"]=> + string(1) "C" + ["s"]=> + string(1) "D" + ["u"]=> + string(1) "E" + ["v"]=> + string(1) "F" +} +[0] +NULL +NULL +NULL + +[1] +array(6) { + [0]=> + array(1) { + [0]=> + string(1) "A" + } + [1]=> + array(1) { + [0]=> + string(1) "B" + } + [2]=> + array(1) { + [0]=> + string(1) "C" + } + [3]=> + array(1) { + [0]=> + string(1) "D" + } + [4]=> + array(1) { + [0]=> + string(1) "E" + } + [5]=> + array(1) { + [0]=> + string(1) "F" + } +} +array(6) { + [0]=> + array(1) { + ["p"]=> + string(1) "A" + } + [1]=> + array(1) { + ["q"]=> + string(1) "B" + } + [2]=> + array(1) { + ["r"]=> + string(1) "C" + } + [3]=> + array(1) { + ["s"]=> + string(1) "D" + } + [4]=> + array(1) { + ["u"]=> + string(1) "E" + } + [5]=> + array(1) { + ["v"]=> + string(1) "F" + } +} +array(6) { + [0]=> + array(1) { + [0]=> + string(1) "A" + } + [1]=> + array(1) { + [0]=> + string(1) "B" + } + [2]=> + array(1) { + [0]=> + string(1) "C" + } + [3]=> + array(1) { + [0]=> + string(1) "D" + } + [4]=> + array(1) { + [0]=> + string(1) "E" + } + [5]=> + array(1) { + [0]=> + string(1) "F" + } +} + +[2] +array(3) { + [0]=> + array(2) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + } + [1]=> + array(2) { + [0]=> + string(1) "C" + [1]=> + string(1) "D" + } + [2]=> + array(2) { + [0]=> + string(1) "E" + [1]=> + string(1) "F" + } +} +array(3) { + [0]=> + array(2) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + } + [1]=> + array(2) { + ["r"]=> + string(1) "C" + ["s"]=> + string(1) "D" + } + [2]=> + array(2) { + ["u"]=> + string(1) "E" + ["v"]=> + string(1) "F" + } +} +array(3) { + [0]=> + array(2) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + } + [1]=> + array(2) { + [0]=> + string(1) "C" + [1]=> + string(1) "D" + } + [2]=> + array(2) { + [0]=> + string(1) "E" + [1]=> + string(1) "F" + } +} + +[3] +array(2) { + [0]=> + array(3) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + } + [1]=> + array(3) { + [0]=> + string(1) "D" + [1]=> + string(1) "E" + [2]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(3) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + ["r"]=> + string(1) "C" + } + [1]=> + array(3) { + ["s"]=> + string(1) "D" + ["u"]=> + string(1) "E" + ["v"]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(3) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + } + [1]=> + array(3) { + [0]=> + string(1) "D" + [1]=> + string(1) "E" + [2]=> + string(1) "F" + } +} + +[4] +array(2) { + [0]=> + array(4) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + } + [1]=> + array(2) { + [0]=> + string(1) "E" + [1]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(4) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + ["r"]=> + string(1) "C" + ["s"]=> + string(1) "D" + } + [1]=> + array(2) { + ["u"]=> + string(1) "E" + ["v"]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(4) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + } + [1]=> + array(2) { + [0]=> + string(1) "E" + [1]=> + string(1) "F" + } +} + +[5] +array(2) { + [0]=> + array(5) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + [4]=> + string(1) "E" + } + [1]=> + array(1) { + [0]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(5) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + ["r"]=> + string(1) "C" + ["s"]=> + string(1) "D" + ["u"]=> + string(1) "E" + } + [1]=> + array(1) { + ["v"]=> + string(1) "F" + } +} +array(2) { + [0]=> + array(5) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + [4]=> + string(1) "E" + } + [1]=> + array(1) { + [0]=> + string(1) "F" + } +} + +[6] +array(1) { + [0]=> + array(6) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + [4]=> + string(1) "E" + [5]=> + string(1) "F" + } +} +array(1) { + [0]=> + array(6) { + ["p"]=> + string(1) "A" + ["q"]=> + string(1) "B" + ["r"]=> + string(1) "C" + ["s"]=> + string(1) "D" + ["u"]=> + string(1) "E" + ["v"]=> + string(1) "F" + } +} +array(1) { + [0]=> + array(6) { + [0]=> + string(1) "A" + [1]=> + string(1) "B" + [2]=> + string(1) "C" + [3]=> + string(1) "D" + [4]=> + string(1) "E" + [5]=> + string(1) "F" + } +} diff --git a/ext/standard/tests/array/array_chunk_variation26.phpt b/ext/standard/tests/array/array_chunk_variation26.phpt new file mode 100644 index 000000000..487f6b4f6 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation26.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 26 +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + int(0) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(0) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(0) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(0) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation27.phpt b/ext/standard/tests/array/array_chunk_variation27.phpt new file mode 100644 index 000000000..a83a16b7f --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation27.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 27 +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + int(1) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation28.phpt b/ext/standard/tests/array/array_chunk_variation28.phpt new file mode 100644 index 000000000..bdbaf45cb --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation28.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 28 +--FILE-- + +--EXPECT-- +array(1) { + [0]=> + int(-1) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(-1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(-1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(-1) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation29.phpt b/ext/standard/tests/array/array_chunk_variation29.phpt new file mode 100644 index 000000000..12f50c119 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation29.phpt @@ -0,0 +1,92 @@ +--TEST-- +array_chunk() - variation 29 +--FILE-- + +--EXPECT-- +array(2) { + [0]=> + int(0) + [1]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [1]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation30.phpt b/ext/standard/tests/array/array_chunk_variation30.phpt new file mode 100644 index 000000000..281537a87 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation30.phpt @@ -0,0 +1,159 @@ +--TEST-- +array_chunk() - variation 30 +--FILE-- + +--EXPECT-- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +[0] +NULL +NULL +NULL + +[1] +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [1]=> + int(2) + } + [2]=> + array(1) { + [2]=> + int(3) + } +} +array(3) { + [0]=> + array(1) { + [0]=> + int(1) + } + [1]=> + array(1) { + [0]=> + int(2) + } + [2]=> + array(1) { + [0]=> + int(3) + } +} + +[2] +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [2]=> + int(3) + } +} +array(2) { + [0]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(3) + } +} + +[3] +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} +array(1) { + [0]=> + array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation31.phpt b/ext/standard/tests/array/array_chunk_variation31.phpt new file mode 100644 index 000000000..159267983 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation31.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 31 +--FILE-- + 0); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(1) { + [1]=> + int(0) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(0) + } +} +array(1) { + [0]=> + array(1) { + [1]=> + int(0) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(0) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation32.phpt b/ext/standard/tests/array/array_chunk_variation32.phpt new file mode 100644 index 000000000..cf65993c0 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation32.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 32 +--FILE-- + 1); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(1) { + [2]=> + int(1) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [2]=> + int(1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(1) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation8.phpt b/ext/standard/tests/array/array_chunk_variation8.phpt new file mode 100644 index 000000000..6a6e752ec --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation8.phpt @@ -0,0 +1,46 @@ +--TEST-- +array_chunk() - variation 8 +--FILE-- + -1); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(1) { + [3]=> + int(-1) +} +[0] +NULL +NULL +NULL + +[1] +array(1) { + [0]=> + array(1) { + [0]=> + int(-1) + } +} +array(1) { + [0]=> + array(1) { + [3]=> + int(-1) + } +} +array(1) { + [0]=> + array(1) { + [0]=> + int(-1) + } +} diff --git a/ext/standard/tests/array/array_chunk_variation9.phpt b/ext/standard/tests/array/array_chunk_variation9.phpt new file mode 100644 index 000000000..ec57da4f8 --- /dev/null +++ b/ext/standard/tests/array/array_chunk_variation9.phpt @@ -0,0 +1,92 @@ +--TEST-- +array_chunk() - variation 9 +--FILE-- + 0, 2 => 2); +var_dump ($array); +for ($i = 0; $i < (sizeof($array) + 1); $i++) { + echo "[$i]\n"; + var_dump (@array_chunk ($array, $i)); + var_dump (@array_chunk ($array, $i, TRUE)); + var_dump (@array_chunk ($array, $i, FALSE)); + echo "\n"; +} +?> +--EXPECT-- +array(2) { + [1]=> + int(0) + [2]=> + int(2) +} +[0] +NULL +NULL +NULL + +[1] +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [1]=> + int(0) + } + [1]=> + array(1) { + [2]=> + int(2) + } +} +array(2) { + [0]=> + array(1) { + [0]=> + int(0) + } + [1]=> + array(1) { + [0]=> + int(2) + } +} + +[2] +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [1]=> + int(0) + [2]=> + int(2) + } +} +array(1) { + [0]=> + array(2) { + [0]=> + int(0) + [1]=> + int(2) + } +} diff --git a/ext/standard/tests/array/array_count_values_error.phpt b/ext/standard/tests/array/array_count_values_error.phpt new file mode 100644 index 000000000..10aa883fb --- /dev/null +++ b/ext/standard/tests/array/array_count_values_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test array_count_values() function : Invalid parameters +--FILE-- + +--EXPECTF-- +*** Testing array_count_values() : error conditions *** + +-- Testing array_count_values() function with Zero arguments -- + +Warning: Wrong parameter count for array_count_values() in %sarray_count_values_error.php on line 16 +NULL + +-- Testing array_count_values() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for array_count_values() in %sarray_count_values_error.php on line 22 +NULL + +-- Testing array_count_values() function integer arguments -- + +Warning: array_count_values(): The argument should be an array in %sarray_count_values_error.php on line 26 +NULL +Done diff --git a/ext/standard/tests/array/array_count_values_variation.phpt b/ext/standard/tests/array/array_count_values_variation.phpt new file mode 100644 index 000000000..efd3c81cc --- /dev/null +++ b/ext/standard/tests/array/array_count_values_variation.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test array_count_values() function : Test all normal paramter variations +--FILE-- + "bobv", "val", 6 => "val6", $fp, $ob); + +var_dump (@array_count_values ($arrays)); +echo "\n"; + + +echo "Done"; +?> + +--EXPECTF-- +*** Testing array_count_values() : parameter variations *** +array(3) { + ["bobv"]=> + int(1) + ["val"]=> + int(1) + ["val6"]=> + int(1) +} + +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_assoc_error.phpt b/ext/standard/tests/array/array_diff_assoc_error.phpt index 0c9da2f2c..e8b259bf7 100644 --- a/ext/standard/tests/array/array_diff_assoc_error.phpt +++ b/ext/standard/tests/array/array_diff_assoc_error.phpt @@ -15,7 +15,7 @@ Test array_diff_assoc() function : error conditions - pass array_diff_assoc() to echo "*** Testing array_diff_assoc() : error conditions ***\n"; // Zero arguments -echo "\n-- Testing array_diff() function with zero arguments --\n"; +echo "\n-- Testing array_diff_assoc() function with zero arguments --\n"; var_dump( array_diff_assoc() ); // Testing array_diff_assoc with one less than the expected number of arguments @@ -29,7 +29,7 @@ echo "Done"; --EXPECTF-- *** Testing array_diff_assoc() : error conditions *** --- Testing array_diff() function with zero arguments -- +-- Testing array_diff_assoc() function with zero arguments -- Warning: Wrong parameter count for array_diff_assoc() in %s on line %d NULL @@ -38,4 +38,5 @@ NULL Warning: Wrong parameter count for array_diff_assoc() in %s on line %d NULL -Done \ No newline at end of file +Done + diff --git a/ext/standard/tests/array/array_diff_key_error.phpt b/ext/standard/tests/array/array_diff_key_error.phpt new file mode 100644 index 000000000..786c1f30c --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_error.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_diff_key() function : error conditions +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); + +// Testing array_diff_key with one less than the expected number of arguments +echo "\n-- Testing array_diff_key() function with less than expected no. of arguments --\n"; +var_dump( array_diff_key($array1) ); + +// Testing array_diff_key with no arguments +echo "\n-- Testing array_diff_key() function with no arguments --\n"; +var_dump( array_diff_key() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : error conditions *** + +-- Testing array_diff_key() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_diff_key() in %s on line %d +NULL + +-- Testing array_diff_key() function with no arguments -- + +Warning: Wrong parameter count for array_diff_key() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_key_variation1.phpt b/ext/standard/tests/array/array_diff_key_variation1.phpt index 00da7afa9..9f2c20b2e 100644 --- a/ext/standard/tests/array/array_diff_key_variation1.phpt +++ b/ext/standard/tests/array/array_diff_key_variation1.phpt @@ -1,89 +1,310 @@ --TEST-- -array_diff_key() : type variations +Test array_diff_key() function : usage variation - Passing unexpected values to first argument --FILE-- 'a', 2 => 'b', 3 => 'c', 'key1' => 'value'); -$arr2 = array(1.00 => 'a', 2.00 => 'b', 3.00 => 'c', 'key2' => 'value'); -$arr3 = array('1' => 'a', '2' => 'b', '3' => 'c', 'key3' => 'value'); -$arr4 = array('1.00' => 'a', '2.00' => 'b', '3.00' => 'c', 'key4' => 'value'); //$arr4 looks different to the other three arrays. -print "Result of comparing integers and floating point value:\n"; //1 and 1.00 are treated as the same thing -print_r(array_diff_key($arr1, $arr2)); -print_r(array_diff_key($arr2, $arr1)); -print "Result of comparing integers and strings containing an integers:\n"; //1 and the string 1 are treated as the same thing -print_r(array_diff_key($arr1, $arr3)); -print_r(array_diff_key($arr3, $arr1)); -print "Result of comparing integers and strings containing floating points:\n"; //1 and the string 1.00 are not treated as the same thing -print_r(array_diff_key($arr1, $arr4)); -print_r(array_diff_key($arr4, $arr1)); -print "Result of comparing floating points and strings containing integers:\n"; -print_r(array_diff_key($arr2, $arr3)); //1.00 and the string 1 are treated as the same thing -print_r(array_diff_key($arr3, $arr2)); -print "Result of comparing strings containing integers and strings containing floating points:\n"; //the strings 1 and 1.00 are not treated as the same thing. -print_r(array_diff_key($arr3, $arr4)); -print_r(array_diff_key($arr4, $arr3)); +/* Prototype : array array_diff_key(array arr1, array arr2 [, array ...]) + * Description: Returns the entries of arr1 that have keys which are not present in any of the others arguments. + * Source code: ext/standard/array.c + */ + +echo "*** Testing array_diff_key() : usage variation ***\n"; + +// Initialise function arguments not being substituted (if any) +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array(1, 2, 3, 4, 5); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_key($value, $array2) ); + var_dump( array_diff_key($value, $array2, $array3) ); +}; + +fclose($fp); ?> +===DONE=== --EXPECTF-- -Result of comparing integers and floating point value: -Array -( - [key1] => value -) -Array -( - [key2] => value -) -Result of comparing integers and strings containing an integers: -Array -( - [key1] => value -) -Array -( - [key3] => value -) -Result of comparing integers and strings containing floating points: -Array -( - [1] => a - [2] => b - [3] => c - [key1] => value -) -Array -( - [1.00] => a - [2.00] => b - [3.00] => c - [key4] => value -) -Result of comparing floating points and strings containing integers: -Array -( - [key2] => value -) -Array -( - [key3] => value -) -Result of comparing strings containing integers and strings containing floating points: -Array -( - [1] => a - [2] => b - [3] => c - [key3] => value -) -Array -( - [1.00] => a - [2.00] => b - [3.00] => c - [key4] => value -) +*** Testing array_diff_key() : usage variation *** + +--int 0-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation2.phpt b/ext/standard/tests/array/array_diff_key_variation2.phpt new file mode 100644 index 000000000..7293d3a0a --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation2.phpt @@ -0,0 +1,310 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing unexpected values to second argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array(1, 2, 3, 4, 5); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_key($array1, $value) ); + var_dump( array_diff_key($array1, $value, $array3) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +--int 0-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_key(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation3.phpt b/ext/standard/tests/array/array_diff_key_variation3.phpt new file mode 100644 index 000000000..4cb8e51fb --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation3.phpt @@ -0,0 +1,231 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing unexpected values to third optional argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_key($array1, $array2, $value) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +--int 0-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_key(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation4.phpt b/ext/standard/tests/array/array_diff_key_variation4.phpt new file mode 100644 index 000000000..d3ef45c46 --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation4.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing integer indexed array +--FILE-- + '-07', 0xA => '0xA'); + +$input_arrays = array( + 'decimal indexed' => array(10 => '10', '-17' => '-17'), + 'octal indexed' => array(-011 => '-011', 012 => '012'), + 'hexa indexed' => array(0x12 => '0x12', -0x7 => '-0x7', ), +); + +// loop through each element of the array for arr1 +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_key($input_array, $value) ); + var_dump( array_diff_key($value, $input_array) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +--decimal indexed-- +array(1) { + [-7]=> + string(3) "-07" +} +array(1) { + [-17]=> + string(3) "-17" +} + +--octal indexed-- +array(1) { + [-7]=> + string(3) "-07" +} +array(1) { + [-9]=> + string(4) "-011" +} + +--hexa indexed-- +array(1) { + [10]=> + string(3) "0xA" +} +array(1) { + [18]=> + string(4) "0x12" +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation5.phpt b/ext/standard/tests/array/array_diff_key_variation5.phpt new file mode 100644 index 000000000..f777953c5 --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation5.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing float indexed array +--FILE-- + '0', 10 => '10', -10 => '-10', 20 =>'20', -20 => '-20'); +$float_indx_array = array(0.0 => '0.0', 10.5 => '10.5', -10.5 => '-10.5', 0.5 => '0.5'); + +echo "\n-- Testing array_diff_key() function with float indexed array --\n"; +// loop through each element of the array for arr1 +var_dump( array_diff_key($input_array, $float_indx_array) ); +var_dump( array_diff_key($float_indx_array, $input_array) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +-- Testing array_diff_key() function with float indexed array -- +array(2) { + [20]=> + string(2) "20" + [-20]=> + string(3) "-20" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation6.phpt b/ext/standard/tests/array/array_diff_key_variation6.phpt new file mode 100644 index 000000000..48334fc0a --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation6.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing boolean indexed array +--FILE-- + '0', 1 => '1', -10 => '-10', 'true' => 1, 'false' => 0); +$boolean_indx_array = array(true => 'boolt', false => 'boolf', TRUE => 'boolT', FALSE => 'boolF'); + +echo "\n-- Testing array_diff_key() function with boolean indexed array --\n"; +// loop through each element of the array for arr1 +var_dump( array_diff_key($input_array, $boolean_indx_array) ); +var_dump( array_diff_key($boolean_indx_array, $input_array) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +-- Testing array_diff_key() function with boolean indexed array -- +array(3) { + [-10]=> + string(3) "-10" + ["true"]=> + int(1) + ["false"]=> + int(0) +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation7.phpt b/ext/standard/tests/array/array_diff_key_variation7.phpt new file mode 100644 index 000000000..c2e806c00 --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation7.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing null,unset and undefined variable indexed array +--FILE-- + '10', "" => 'empty'); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +$input_arrays = array( + 'null indexed' => array(NULL => 'null 1', null => 'null 2'), + 'undefined indexed' => array(@$undefined_var => 'undefined'), + 'unset indexed' => array(@$unset_var => 'unset'), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + // loop through each element of the array for arr1 + var_dump( array_diff_key($input_array, $value) ); + var_dump( array_diff_key($value, $input_array) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +--null indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} + +--undefined indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} + +--unset indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_key_variation8.phpt b/ext/standard/tests/array/array_diff_key_variation8.phpt new file mode 100644 index 000000000..3242e6970 --- /dev/null +++ b/ext/standard/tests/array/array_diff_key_variation8.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test array_diff_key() function : usage variation - Passing multi-dimensional array +--FILE-- + array('blue' => 1, 'red' => 2), + + 'second' => array('yellow' => 7), + + 'third' => array(0 => 'zero'), +); + +$array2 = array ( + + 'first' => array('blue' => 1, 'red' => 2,), + + 'second' => array('cyan' => 8), + + 'fourth' => array(2 => 'two'), +); + +echo "\n-- Testing array_diff_key() function with multi dimensional array --\n"; +var_dump( array_diff_key($array1, $array2) ); +var_dump( array_diff_key($array2, $array1) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_key() : usage variation *** + +-- Testing array_diff_key() function with multi dimensional array -- +array(1) { + ["third"]=> + array(1) { + [0]=> + string(4) "zero" + } +} +array(1) { + ["fourth"]=> + array(1) { + [2]=> + string(3) "two" + } +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_uassoc_error.phpt b/ext/standard/tests/array/array_diff_uassoc_error.phpt new file mode 100644 index 000000000..e3006958d --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_error.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test array_diff_uassoc() function : error conditions +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); +$array3 = array("a" => "green", "red"); +$array4 = array(); +$extra_arg = array(1, 2, 3, 4); + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +//Test array_diff_uassoc with one more than the expected number of arguments +echo "\n-- Testing array_diff_uassoc() function with more than expected no. of arguments --\n"; + +var_dump( array_diff_uassoc($array1, $array2, "key_compare_func", $extra_arg) ); +var_dump( array_diff_uassoc($array1, $array2, $array3, $array4, "key_compare_func", $extra_arg) ); + +// Testing array_diff_uassoc with one less than the expected number of arguments +echo "\n-- Testing array_diff_uassoc() function with less than expected no. of arguments --\n"; +var_dump( array_diff_uassoc($array1, $array2) ); + +// Testing array_diff_uassoc with no arguments +echo "\n-- Testing array_diff_uassoc() function with no arguments --\n"; +var_dump( array_diff_uassoc() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : error conditions *** + +-- Testing array_diff_uassoc() function with more than expected no. of arguments -- + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +-- Testing array_diff_uassoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_diff_uassoc() in %s on line %d +NULL + +-- Testing array_diff_uassoc() function with no arguments -- + +Warning: Wrong parameter count for array_diff_uassoc() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation1.phpt b/ext/standard/tests/array/array_diff_uassoc_variation1.phpt new file mode 100644 index 000000000..75494c7e5 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Passing unexpected values to first argument +--FILE-- + "green", "yellow", "red"); + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($value, $array2, "key_compare_func") ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_uassoc(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation10.phpt b/ext/standard/tests/array/array_diff_uassoc_variation10.phpt new file mode 100644 index 000000000..57b17d1bc --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation10.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Passing float indexed array +--FILE-- + '0', 10 => '10', -10 => '-10', 20 =>'20', -20 => '-20'); +$float_indx_array = array(0.0 => '0.0', 10.5 => '10.5', -10.5 => '-10.5', 0.5 => '0.5'); + +echo "\n-- Testing array_diff_key() function with float indexed array --\n"; +var_dump( array_diff_uassoc($input_array, $float_indx_array, "strcasecmp") ); +var_dump( array_diff_uassoc($float_indx_array, $input_array, "strcasecmp") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Testing array_diff_key() function with float indexed array -- +array(5) { + [0]=> + string(1) "0" + [10]=> + string(2) "10" + [-10]=> + string(3) "-10" + [20]=> + string(2) "20" + [-20]=> + string(3) "-20" +} +array(3) { + [0]=> + string(3) "0.5" + [10]=> + string(4) "10.5" + [-10]=> + string(5) "-10.5" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation11.phpt b/ext/standard/tests/array/array_diff_uassoc_variation11.phpt new file mode 100644 index 000000000..b77df3279 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation11.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Passing boolean indexed array +--FILE-- + '0', 1 => '1', -10 => '-10', 'true' => 1, 'false' => 0); +$boolean_indx_array = array(true => 'boolt', false => 'boolf', TRUE => 'boolT', FALSE => 'boolF'); + +echo "\n-- Testing array_diff_key() function with float indexed array --\n"; +var_dump( array_diff_uassoc($input_array, $boolean_indx_array, "strcasecmp") ); +var_dump( array_diff_uassoc($boolean_indx_array, $input_array, "strcasecmp") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Testing array_diff_key() function with float indexed array -- +array(5) { + [0]=> + string(1) "0" + [1]=> + string(1) "1" + [-10]=> + string(3) "-10" + ["true"]=> + int(1) + ["false"]=> + int(0) +} +array(2) { + [1]=> + string(5) "boolT" + [0]=> + string(5) "boolF" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation12.phpt b/ext/standard/tests/array/array_diff_uassoc_variation12.phpt new file mode 100644 index 000000000..9d48231a3 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation12.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Passing null,unset and undefined variable indexed array +--FILE-- + '10', "" => ''); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +$input_arrays = array( + 'null indexed' => array(NULL => NULL, null => null), + 'undefined indexed' => array(@$undefined_var => @$undefined_var), + 'unset indexed' => array(@$unset_var => @$unset_var), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($input_array, $value, "strcasecmp") ); + var_dump( array_diff_uassoc($value, $input_array, "strcasecmp") ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--null indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} + +--undefined indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} + +--unset indexed-- +array(1) { + [10]=> + string(2) "10" +} +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation13.phpt b/ext/standard/tests/array/array_diff_uassoc_variation13.phpt new file mode 100644 index 000000000..92194262a --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation13.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test array_diff_uassoc() function : usage variations - arrays containing referenced variables +--FILE-- + 1, &$ref_var); + +echo "\n-- Testing array_diff_uassoc() function with referenced variable \$ref_var has value '$ref_var' --\n"; +var_dump( array_diff_uassoc($array1, $array2, "strcasecmp") ); +var_dump( array_diff_uassoc($array2, $array1, "strcasecmp") ); + +// re-assign reference variable to different value +$ref_var = 10.00; +echo "\n-- Testing array_diff_uassoc() function with referenced variable \$ref_var value changed to $ref_var --\n"; +var_dump( array_diff_uassoc($array1, $array2, "strcasecmp") ); +var_dump( array_diff_uassoc($array2, $array1, "strcasecmp") ); + +//When array are refenced +$array2 = &$array1; +echo "\n-- Testing array_diff_uassoc() function when \$array2 is referenced to \$array1 --\n"; +var_dump( array_diff_uassoc($array1, $array2, "strcasecmp") ); +var_dump( array_diff_uassoc($array2, $array1, "strcasecmp") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Testing array_diff_uassoc() function with referenced variable $ref_var has value 'a' -- +array(1) { + [1]=> + string(1) "a" +} +array(1) { + ["a"]=> + int(1) +} + +-- Testing array_diff_uassoc() function with referenced variable $ref_var value changed to 10 -- +array(2) { + [0]=> + string(1) "a" + [1]=> + string(1) "a" +} +array(2) { + ["a"]=> + int(1) + [0]=> + &float(10) +} + +-- Testing array_diff_uassoc() function when $array2 is referenced to $array1 -- +array(0) { +} +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation14.phpt b/ext/standard/tests/array/array_diff_uassoc_variation14.phpt new file mode 100644 index 000000000..4ff5a90a0 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation14.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation -Passing classWithoutToString (handling fatal error) to callback +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + +class classWithoutToString +{ +} + +// Define error handler +function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) { + if (error_reporting() != 0) { + // report non-silenced errors + echo "Error: $err_no - $err_msg, $filename($linenum)\n"; + } +} +set_error_handler('test_error_handler'); + +$value = new classWithoutToString(); +var_dump( array_diff_uassoc($array1, $array2, $value) ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_diff_uassoc(): Not a valid callback , %s(%d) +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation2.phpt b/ext/standard/tests/array/array_diff_uassoc_variation2.phpt new file mode 100644 index 000000000..4ecf4455b --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation2.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation -Passing unexpected values to second argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($array1, $value, "key_compare_func") ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_uassoc(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_uassoc_variation3.phpt b/ext/standard/tests/array/array_diff_uassoc_variation3.phpt new file mode 100644 index 000000000..0246f9455 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation3.phpt @@ -0,0 +1,256 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation -Passing unexpected values to callback argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for key_comp_func +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($array1, $array2, $value) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_diff_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_uassoc(): Not a valid callback -12345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_diff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_uassoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_uassoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_uassoc(): Not a valid callback in %s on line %d +NULL + +--resource-- + +Warning: array_diff_uassoc(): Not a valid callback Resource id #5 in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation4.phpt b/ext/standard/tests/array/array_diff_uassoc_variation4.phpt new file mode 100644 index 000000000..ab8744981 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation4.phpt @@ -0,0 +1,246 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation -Passing unexpected values as third optional argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($array1, $array2, $value, "key_compare_func") ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_uassoc(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation5.phpt b/ext/standard/tests/array/array_diff_uassoc_variation5.phpt new file mode 100644 index 000000000..c35b2ebd9 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation5.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Comparing integers and floating point numbers +--FILE-- + 1.00, 1.00 => 2.00, 2.00 => 3.00, 3.00 => 4.00); + + +function key_compare_func($key1, $key2) +{ + if ($key1 === $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of comparing integers and floating point numbers --\n"; +var_dump( array_diff_uassoc($arr_default_int, $arr_float, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_float, $arr_default_int, "key_compare_func") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Result of comparing integers and floating point numbers -- +array(0) { +} +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation6.phpt b/ext/standard/tests/array/array_diff_uassoc_variation6.phpt new file mode 100644 index 000000000..ad4e8ffda --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation6.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Comparing floating points with strings having integers and float +--FILE-- + 1.00, 1.00 => 2.00); +$arr_string_int = array('1', '2'); +$arr_string_float = array('0' => '1.00', '1.00' => '2.00'); + +function key_compare_func($key1, $key2) +{ + if ($key1 === $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of comparing floating points and strings containing integers --\n"; +var_dump( array_diff_uassoc($arr_float, $arr_string_int, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_string_int, $arr_float, "key_compare_func") ); + +echo "\n-- Result of comparing floating points and strings containing floating point --\n"; +var_dump( array_diff_uassoc($arr_float, $arr_string_float, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_string_float, $arr_float, "key_compare_func") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Result of comparing floating points and strings containing integers -- +array(0) { +} +array(0) { +} + +-- Result of comparing floating points and strings containing floating point -- +array(2) { + [0]=> + float(1) + [1]=> + float(2) +} +array(2) { + [0]=> + string(4) "1.00" + ["1.00"]=> + string(4) "2.00" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation7.phpt b/ext/standard/tests/array/array_diff_uassoc_variation7.phpt new file mode 100644 index 000000000..da2030cf1 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation7.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Comparing strings containing integers and float +--FILE-- + '1.00', '1.00' => '2.00'); + +function key_compare_func($key1, $key2) +{ + if ($key1 === $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of comparing strings containing integers and strings containing floating points --\n"; +var_dump( array_diff_uassoc($arr_string_int, $arr_string_float, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_string_float, $arr_string_int, "key_compare_func") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Result of comparing strings containing integers and strings containing floating points -- +array(2) { + [0]=> + string(1) "1" + [1]=> + string(1) "2" +} +array(2) { + [0]=> + string(4) "1.00" + ["1.00"]=> + string(4) "2.00" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation8.phpt b/ext/standard/tests/array/array_diff_uassoc_variation8.phpt new file mode 100644 index 000000000..d450def21 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation8.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Comparing integers with strings containing integers and float +--FILE-- + '1.00', '1.00' => '2.00'); + +function key_compare_func($key1, $key2) +{ + if ($key1 === $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of comparing integers and strings containing an integers --\n"; +var_dump( array_diff_uassoc($arr_default_int, $arr_string_int, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_string_int, $arr_default_int, "key_compare_func") ); + +echo "\n-- Result of comparing integers and strings containing floating points --\n"; +var_dump( array_diff_uassoc($arr_default_int, $arr_string_float, "key_compare_func") ); +var_dump( array_diff_uassoc($arr_string_float, $arr_default_int, "key_compare_func") ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +-- Result of comparing integers and strings containing an integers -- +array(1) { + [2]=> + int(3) +} +array(0) { +} + +-- Result of comparing integers and strings containing floating points -- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +array(2) { + [0]=> + string(4) "1.00" + ["1.00"]=> + string(4) "2.00" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_uassoc_variation9.phpt b/ext/standard/tests/array/array_diff_uassoc_variation9.phpt new file mode 100644 index 000000000..72746bb90 --- /dev/null +++ b/ext/standard/tests/array/array_diff_uassoc_variation9.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test array_diff_uassoc() function : usage variation - Passing integer indexed array +--FILE-- + 10, 12 => 12); + +$input_arrays = array( + 'decimal indexed' => array(10 => 10, -17 => -17), + 'octal indexed' => array( 012 => 10, -011 => -011,), + 'hexa indexed' => array(0xA => 10, -0x7 => -0x7 ), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_uassoc($input_array, $value, "strcasecmp") ); + var_dump( array_diff_uassoc($value, $input_array, "strcasecmp") ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_uassoc() : usage variation *** + +--decimal indexed-- +array(1) { + [12]=> + int(12) +} +array(1) { + [-17]=> + int(-17) +} + +--octal indexed-- +array(1) { + [12]=> + int(12) +} +array(1) { + [-9]=> + int(-9) +} + +--hexa indexed-- +array(1) { + [12]=> + int(12) +} +array(1) { + [-7]=> + int(-7) +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_error.phpt b/ext/standard/tests/array/array_diff_ukey_error.phpt new file mode 100644 index 000000000..d96324fea --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_error.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test array_diff_ukey() function : error conditions +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$extra_arg = 10; + +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +//Test array_diff_ukey with one more than the expected number of arguments +echo "\n-- Testing array_diff_ukey() function with more than expected no. of arguments --\n"; +var_dump( array_diff_ukey($array1, $array2, 'key_compare_func', $extra_arg) ); + +// Testing array_diff_ukey with one less than the expected number of arguments +echo "\n-- Testing array_diff_ukey() function with less than expected no. of arguments --\n"; +var_dump( array_diff_ukey($array1, $array2) ); + +// Testing array_diff_ukey with one less than the expected number of arguments +echo "\n-- Testing array_diff_ukey() function with no arguments --\n"; +var_dump( array_diff_ukey() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : error conditions *** + +-- Testing array_diff_ukey() function with more than expected no. of arguments -- + +Warning: array_diff_ukey(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_diff_ukey() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_diff_ukey() in %s on line %d +NULL + +-- Testing array_diff_ukey() function with no arguments -- + +Warning: Wrong parameter count for array_diff_ukey() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation1.phpt b/ext/standard/tests/array/array_diff_ukey_variation1.phpt new file mode 100644 index 000000000..9a849e0eb --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation1.phpt @@ -0,0 +1,318 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing unexpected values to first argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); + +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($value, $array2, 'key_compare_func') ); + var_dump( array_diff_ukey($value, $array2, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--int 0-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation10.phpt b/ext/standard/tests/array/array_diff_ukey_variation10.phpt new file mode 100644 index 000000000..7658ed379 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation10.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing non-existing function name to callback +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + +//function name within double quotes +var_dump( array_diff_ukey($array1, $array1, "unknown_function") ); + +//function name within single quotes +var_dump( array_diff_ukey($array1, $array1, 'unknown_function') ); + +//function name without quotes +var_dump( array_diff_ukey($array1, $array1, unknown_function) ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +Warning: array_diff_ukey(): Not a valid callback unknown_function in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback unknown_function in %s on line %d +NULL + +Notice: Use of undefined constant unknown_function - assumed 'unknown_function' in %s on line %d + +Warning: array_diff_ukey(): Not a valid callback unknown_function in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation11.phpt b/ext/standard/tests/array/array_diff_ukey_variation11.phpt new file mode 100644 index 000000000..4882e729b --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation11.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing class without string to callback (Handling fatal error) +--SKIPIF-- + +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array2 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array3 = array(1, 2, 3, 4, 5); + +// Define error handler +function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) { + if (error_reporting() != 0) { + // report non-silenced errors + echo "Error: $err_no - $err_msg, $filename($linenum)\n"; + } +} +set_error_handler('test_error_handler'); + + +class classWithoutToString +{ +} + +$value = new classWithoutToString(); + +var_dump( array_diff_ukey($array1, $array2, $value) ); +var_dump( array_diff_ukey($array1, $array2, $array3, $value) ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_diff_ukey(): Not a valid callback , %s(%d) +NULL +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_diff_ukey(): Not a valid callback , %s(%d) +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_diff_ukey_variation2.phpt b/ext/standard/tests/array/array_diff_ukey_variation2.phpt new file mode 100644 index 000000000..19eab4d62 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation2.phpt @@ -0,0 +1,322 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing unexpected values to second argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); + + +//Initialize key_comp_func of type callback +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, + +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($array1, $value, 'key_compare_func') ); + var_dump( array_diff_ukey($array1, $value, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--int 0-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_diff_ukey(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation3.phpt b/ext/standard/tests/array/array_diff_ukey_variation3.phpt new file mode 100644 index 000000000..f7a2ea862 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation3.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing unexpected values to third optional argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array2 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); + +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) { + return 0; + } + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for key_comp_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($array1, $array2, $value, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--int 0-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_diff_ukey(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation4.phpt b/ext/standard/tests/array/array_diff_ukey_variation4.phpt new file mode 100644 index 000000000..5f9457edf --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation4.phpt @@ -0,0 +1,236 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing unexpected values to callback argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array2 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array3 = array(1, 2, 3, 4, 5); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($array1, $array2, $value) ); + var_dump( array_diff_ukey($array1, $array2, $array3, $value) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--int 0-- + +Warning: array_diff_ukey(): Not a valid callback 0 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_diff_ukey(): Not a valid callback 12345 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_diff_ukey(): Not a valid callback -12345 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback -12345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_diff_ukey(): Not a valid callback 10.5 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_diff_ukey(): Not a valid callback -10.5 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_diff_ukey(): Not a valid callback 123456789000 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_diff_ukey(): Not a valid callback -123456789000 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_diff_ukey(): Not a valid callback 0.5 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 0.5 in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_diff_ukey(): Not a valid callback Class A object in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback in %s on line %d +NULL + +--resource-- + +Warning: array_diff_ukey(): Not a valid callback Resource id #5 in %s on line %d +NULL + +Warning: array_diff_ukey(): Not a valid callback Resource id #5 in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation5.phpt b/ext/standard/tests/array/array_diff_ukey_variation5.phpt new file mode 100644 index 000000000..fb0c97af0 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation5.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing multi-dimensional array +--FILE-- + array('blue' => 1, 'red' => 2), + + 'second' => array('yellow' => 7), + + 'third' => array(0 => 'zero'), +); + +$array2 = array ( + + 'first' => array('blue' => 1, 'red' => 2,), + + 'second' => array('cyan' => 8), + + 'fourth' => array(2 => 'two'), +); + +echo "\n-- Testing array_diff_ukey() function with multi dimensional array --\n"; +var_dump( array_diff_ukey($array1, $array2, 'strcasecmp') ); +var_dump( array_diff_ukey($array2, $array1, 'strcasecmp') ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +-- Testing array_diff_ukey() function with multi dimensional array -- +array(1) { + ["third"]=> + array(1) { + [0]=> + string(4) "zero" + } +} +array(1) { + ["fourth"]=> + array(1) { + [2]=> + string(3) "two" + } +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation6.phpt b/ext/standard/tests/array/array_diff_ukey_variation6.phpt new file mode 100644 index 000000000..2188a88dd --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation6.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing integer indexed array +--FILE-- + '-07', 0xA => '0xA'); + +$input_arrays = array( + 'decimal indexed' => array(10 => '10', '-17' => '-17'), + 'octal indexed' => array(-011 => '-011', 012 => '012'), + 'hexa indexed' => array(0x12 => '0x12', -0x7 => '-0x7', ), +); + +function key_compare_func($key1, $key2) +{ + return strcasecmp($key1, $key2); +} + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($value, $input_array, 'key_compare_func') ); + var_dump( array_diff_ukey($input_array, $value, 'key_compare_func') ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--decimal indexed-- +array(1) { + [-17]=> + string(3) "-17" +} +array(1) { + [-7]=> + string(3) "-07" +} + +--octal indexed-- +array(1) { + [-9]=> + string(4) "-011" +} +array(1) { + [-7]=> + string(3) "-07" +} + +--hexa indexed-- +array(1) { + [18]=> + string(4) "0x12" +} +array(1) { + [10]=> + string(3) "0xA" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation7.phpt b/ext/standard/tests/array/array_diff_ukey_variation7.phpt new file mode 100644 index 000000000..88888d6b3 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation7.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing float indexed array +--FILE-- + '0', 10 => '10', -10 => '-10', 20 =>'20'); +$float_indx_array = array(0.0 => '0.0', 10.5 => '10.5', -30.5 => '-30.5'); + +function key_compare_func($key1, $key2) +{ + return strcasecmp($key1, $key2); +} + +echo "\n-- Testing array_diff_ukey() function with float indexed array --\n"; + +var_dump( array_diff_ukey($float_indx_array, $input_array, 'key_compare_func') ); +var_dump( array_diff_ukey($input_array, $float_indx_array, 'key_compare_func') ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +-- Testing array_diff_ukey() function with float indexed array -- +array(1) { + [-30]=> + string(5) "-30.5" +} +array(2) { + [-10]=> + string(3) "-10" + [20]=> + string(2) "20" +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation8.phpt b/ext/standard/tests/array/array_diff_ukey_variation8.phpt new file mode 100644 index 000000000..9bb949899 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation8.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing boolean indexed array +--FILE-- + '0', 1 => '1', -10 => '-10', 'true' => 1, 'false' => 0); +$boolean_indx_array = array(true => 'boolt', false => 'boolf', TRUE => 'boolT', FALSE => 'boolF'); + +function key_compare_func($key1, $key2) +{ + return strcasecmp($key1, $key2); +} + +echo "\n-- Testing array_diff_ukey() function with boolean indexed array --\n"; + +var_dump( array_diff_ukey($boolean_indx_array, $input_array, 'key_compare_func') ); +var_dump( array_diff_ukey($input_array, $boolean_indx_array, 'key_compare_func') ); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +-- Testing array_diff_ukey() function with boolean indexed array -- +array(0) { +} +array(3) { + [-10]=> + string(3) "-10" + ["true"]=> + int(1) + ["false"]=> + int(0) +} +===DONE=== diff --git a/ext/standard/tests/array/array_diff_ukey_variation9.phpt b/ext/standard/tests/array/array_diff_ukey_variation9.phpt new file mode 100644 index 000000000..024f5f424 --- /dev/null +++ b/ext/standard/tests/array/array_diff_ukey_variation9.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test array_diff_ukey() function : usage variation - Passing null,unset and undefined variable indexed array +--FILE-- + '10', "" => 'empty'); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +$input_arrays = array( + 'null indexed' => array(NULL => 'null 1', null => 'null 2'), + 'undefined indexed' => array(@$undefined_var => 'undefined'), + 'unset indexed' => array(@$unset_var => 'unset'), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_diff_ukey($value, $input_array, 'strcasecmp') ); + var_dump( array_diff_ukey($input_array, $value, 'strcasecmp') ); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing array_diff_ukey() : usage variation *** + +--null indexed-- +array(0) { +} +array(1) { + [10]=> + string(2) "10" +} + +--undefined indexed-- +array(0) { +} +array(1) { + [10]=> + string(2) "10" +} + +--unset indexed-- +array(0) { +} +array(1) { + [10]=> + string(2) "10" +} +===DONE=== diff --git a/ext/standard/tests/array/array_fill_keys_error.phpt b/ext/standard/tests/array/array_fill_keys_error.phpt new file mode 100644 index 000000000..31a03e7f5 --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test array_fill_keys() function : error conditions +--FILE-- + +--EXPECTF-- +*** Testing array_fill_keys() : error conditions *** + +-- Testing array_fill_keys() function with more than expected no. of arguments -- + +Warning: array_fill_keys() expects exactly 2 parameters, 3 given in %sarray_fill_keys_error.php on line %d +NULL + +-- Testing array_fill_keys() function with less than expected no. of arguments -- + +Warning: array_fill_keys() expects exactly 2 parameters, 1 given in %sarray_fill_keys_error.php on line %d +NULL + +-- Testing array_fill_keys() function with no argumets -- + +Warning: array_fill_keys() expects exactly 2 parameters, 0 given in %sarray_fill_keys_error.php on line %d +NULL +Done diff --git a/ext/standard/tests/array/array_fill_keys_variation1.phpt b/ext/standard/tests/array/array_fill_keys_variation1.phpt new file mode 100644 index 000000000..9fab89d7f --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys_variation1.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test array_fill_keys() function : variation of parameter +--FILE-- + 2, "strk1" => "strv1", 4, $simpleStr); +var_dump( array_fill_keys($keyedArray, $simpleStr) ); + +echo "\n-- Testing array_fill_keys() function with mixed array --\n"; +$mixedArray = array($fp, $obj, $simpleStr, $emptyArr, 2, $bool, $float); +var_dump( array_fill_keys($mixedArray, $simpleStr) ); + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing array_fill_keys() : parameter variations *** + +-- Testing array_fill_keys() function with empty arguments -- +array(0) { +} + +-- Testing array_fill_keys() function with keyed array -- +array(4) { + [2]=> + string(6) "simple" + ["strv1"]=> + string(6) "simple" + [4]=> + string(6) "simple" + ["simple"]=> + string(6) "simple" +} + +-- Testing array_fill_keys() function with mixed array -- + +Notice: Array to string conversion in %sarray_fill_keys_variation1.php on line %d +array(7) { + ["Resource id #%d"]=> + string(6) "simple" + ["Class A object"]=> + string(6) "simple" + ["simple"]=> + string(6) "simple" + ["Array"]=> + string(6) "simple" + [2]=> + string(6) "simple" + [""]=> + string(6) "simple" + ["2.4"]=> + string(6) "simple" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_fill_keys_variation2.phpt b/ext/standard/tests/array/array_fill_keys_variation2.phpt new file mode 100644 index 000000000..4f3681aaf --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys_variation2.phpt @@ -0,0 +1,81 @@ +--TEST-- +Test array_fill_keys() function : variation of parameter +--FILE-- + +--EXPECTF-- +*** Testing array_fill_keys() : parameter variations *** + +-- Testing array_fill_keys() function with reference value -- +array(2) { + ["one"]=> + string(6) "simple" + ["two"]=> + string(6) "simple" +} + +-- Testing array_fill_keys() function with reference keys -- +array(2) { + ["one"]=> + string(6) "simple" + ["simple"]=> + string(6) "simple" +} +array(2) { + ["one"]=> + string(6) "simple" + ["simple"]=> + string(6) "simple" +} + +-- Testing array_fill_keys() function with reference array input -- +array(2) { + ["one"]=> + string(3) "bob" + ["two"]=> + string(3) "bob" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_fill_keys_variation3.phpt b/ext/standard/tests/array/array_fill_keys_variation3.phpt new file mode 100644 index 000000000..00f926803 --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys_variation3.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test array_fill_keys() function : variation of parameter +--FILE-- + +--EXPECTF-- +*** Testing array_fill_keys() : parameter variations *** + +-- Testing array_fill_keys() function with both wrong arguments -- + +Warning: array_fill_keys() expects parameter 1 to be array, boolean given in %sarray_fill_keys_variation3.php on line %d +NULL + +-- Testing array_fill_keys() function with resources -- +array(2) { + ["one"]=> + resource(%d) of type (stream) + ["two"]=> + resource(%d) of type (stream) +} + +-- Testing array_fill_keys() function with null -- + +Warning: array_fill_keys() expects parameter 1 to be array, null given in %sarray_fill_keys_variation3.php on line %d +NULL +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_fill_keys_variation4.phpt b/ext/standard/tests/array/array_fill_keys_variation4.phpt new file mode 100644 index 000000000..209443db0 --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys_variation4.phpt @@ -0,0 +1,91 @@ +--TEST-- +Test array_fill_keys() function : variation of parameter +--FILE-- + +--EXPECTF-- +*** Testing array_fill_keys() : parameter variations *** + +-- Testing array_fill_keys() function with float -- +array(1) { + ["one"]=> + float(2.4) +} + +-- Testing array_fill_keys() function with null -- +array(1) { + ["one"]=> + NULL +} + +-- Testing array_fill_keys() function with object -- +array(1) { + ["one"]=> + object(classA)#%d (0) { + } +} + +-- Testing array_fill_keys() function with boolean -- +array(1) { + ["one"]=> + bool(false) +} + +-- Testing array_fill_keys() function with resource -- +array(1) { + ["one"]=> + resource(%d) of type (stream) +} + +-- Testing array_fill_keys() function with unset var -- + +Notice: Undefined variable: unset_var in %sarray_fill_keys_variation4.php on line %d +array(1) { + ["one"]=> + NULL +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_assoc_variation5.phpt b/ext/standard/tests/array/array_intersect_assoc_variation5.phpt index b85dd7cee..7d8e09eb2 100644 --- a/ext/standard/tests/array/array_intersect_assoc_variation5.phpt +++ b/ext/standard/tests/array/array_intersect_assoc_variation5.phpt @@ -20,17 +20,6 @@ echo "*** Testing array_intersect_assoc() : assoc array with diff keys to \$arr1 $unset_var = 10; unset ($unset_var); -// get a resource variable -$fp = fopen(__FILE__, "r"); - -// get a class -class classA -{ - public function __toString(){ - return "Class A object"; - } -} - // get a heredoc string $heredoc = << "string"), // heredoc // array with object, unset variable and resource variable -/*10*/ array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'), +/*10*/ array(@$unset_var => "hello"), // array with mixed keys -/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2, - $fp => 'resource', 133 => "int", 444.432 => "float", +/*11*/ array('hello' => 1, "fruit" => 2.2, + 133 => "int", 444.432 => "float", @$unset_var => "unset", $heredoc => "heredoc") ); // array to be passsed to $arr2 argument $arr2 = array(0 => 0, 2 => "float", 4 => "f3", 33333333 => "f4", "\tHello" => 111, 2.2, 'color', "Hello world" => "string", - "pen\n" => 33, new classA() => 11, 133 => "int"); + "pen\n" => 33, 133 => "int"); // loop through each sub-array within $arrrays to check the behavior of array_intersect_assoc() $iterator = 1; @@ -88,23 +77,10 @@ foreach($arrays as $arr1) { $iterator++; } -// close the file resource used -fclose($fp); - echo "Done"; ?> --EXPECTF-- *** Testing array_intersect_assoc() : assoc array with diff keys to $arr1 argument *** - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d -- Iteration 1 -- array(0) { } diff --git a/ext/standard/tests/array/array_intersect_assoc_variation6.phpt b/ext/standard/tests/array/array_intersect_assoc_variation6.phpt index ed96d3276..75806225c 100644 --- a/ext/standard/tests/array/array_intersect_assoc_variation6.phpt +++ b/ext/standard/tests/array/array_intersect_assoc_variation6.phpt @@ -20,17 +20,6 @@ echo "*** Testing array_intersect_assoc() : assoc array with diff keys to \$arr2 $unset_var = 10; unset ($unset_var); -// get a resource variable -$fp = fopen(__FILE__, "r"); - -// get a class -class classA -{ - public function __toString(){ - return "Class A object"; - } -} - // get a heredoc string $heredoc = << 2.2, "pen\n" => 33), array("hello", $heredoc => "string"), // heredoc - // array with object, unset variable and resource variable -/*10*/ array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'), + // array with unset variable +/*10*/ array( @$unset_var => "hello"), // array with mixed keys -/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2, - $fp => 'resource', 133 => "int", 444.432 => "float", +/*11*/ array('hello' => 1, "fruit" => 2.2, + 133 => "int", 444.432 => "float", @$unset_var => "unset", $heredoc => "heredoc") ); // array to be passsed to $arr1 argument $arr1 = array(0 => 0, 2 => "float", 4 => "f3", 33333333 => "f4", "\tHello" => 111, 2.2, 'color', "Hello world" => "string", - "pen\n" => 33, new classA() => 11, 133 => "int"); + "pen\n" => 33, 133 => "int"); // loop through each sub-array within $arrrays to check the behavior of array_intersect_assoc() $iterator = 1; @@ -88,23 +77,10 @@ foreach($arrays as $arr2) { $iterator++; } -// close the file resource used -fclose($fp); - echo "Done"; ?> --EXPECTF-- *** Testing array_intersect_assoc() : assoc array with diff keys to $arr2 argument *** - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d -- Iteration 1 -- array(0) { } diff --git a/ext/standard/tests/array/array_intersect_key_error.phpt b/ext/standard/tests/array/array_intersect_key_error.phpt new file mode 100644 index 000000000..78f074fe4 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_error.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_intersect_key() function : error conditions +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); + +// Testing array_intersect_key with one less than the expected number of arguments +echo "\n-- Testing array_intersect_key() function with less than expected no. of arguments --\n"; +var_dump( array_intersect_key($array1) ); + +// Testing array_intersect_key with one less than the expected number of arguments +echo "\n-- Testing array_intersect_key() function with no arguments --\n"; +var_dump( array_intersect_key() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : error conditions *** + +-- Testing array_intersect_key() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_intersect_key() in %s on line %d +NULL + +-- Testing array_intersect_key() function with no arguments -- + +Warning: Wrong parameter count for array_intersect_key() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation1.phpt b/ext/standard/tests/array/array_intersect_key_variation1.phpt new file mode 100644 index 000000000..c28394ba8 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation1.phpt @@ -0,0 +1,315 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing unexpected values to first argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array3 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_key($value, $array2) ); + var_dump( array_intersect_key($value, $array2, $array3) ); +} + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +--int 0-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation2.phpt b/ext/standard/tests/array/array_intersect_key_variation2.phpt new file mode 100644 index 000000000..59b769be6 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation2.phpt @@ -0,0 +1,314 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing unexpected values to second argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array3 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr2 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_key($array1, $value) ); + var_dump( array_intersect_key($array1, $value, $array3) ); +} + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +--int 0-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_key(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation3.phpt b/ext/standard/tests/array/array_intersect_key_variation3.phpt new file mode 100644 index 000000000..8fd3d3c77 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation3.phpt @@ -0,0 +1,235 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing unexpected values to optional argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr2 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_key($array1, $array2, $value) ); +} + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +--int 0-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_key(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation4.phpt b/ext/standard/tests/array/array_intersect_key_variation4.phpt new file mode 100644 index 000000000..1223d2153 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation4.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing integer indexed array +--FILE-- + '0', -1 => '-1' , 02 => 'two', -07 => '-07', 0xA => '0xA', -0xC => '-0xc'); + +$input_arrays = array( + 'decimal indexed' => array(10 => '10', '-17' => '-17'), + 'octal indexed' => array(-011 => '-011', 012 => '012'), + 'hexa indexed' => array(0x12 => '0x12', -0x7 => '-0x7', ), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_key($input_array, $value) ); + var_dump( array_intersect_key($value, $input_array ) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +--decimal indexed-- +array(1) { + [10]=> + string(3) "0xA" +} +array(1) { + [10]=> + string(2) "10" +} + +--octal indexed-- +array(1) { + [10]=> + string(3) "0xA" +} +array(1) { + [10]=> + string(3) "012" +} + +--hexa indexed-- +array(1) { + [-7]=> + string(3) "-07" +} +array(1) { + [-7]=> + string(4) "-0x7" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation5.phpt b/ext/standard/tests/array/array_intersect_key_variation5.phpt new file mode 100644 index 000000000..c286de6e3 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation5.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing float indexed array +--FILE-- + '0', 10 => '10' , -10 => '-10'); +$float_indx_array = array(0.0 => '0.0', 10.5 => '10.5' , -10.5 => '-10.5', 0.5 => '0.5'); + +echo "\n-- Testing array_intersect_key() function with float indexed array --\n"; +var_dump( array_intersect_key($input_array, $float_indx_array) ); +var_dump( array_intersect_key($float_indx_array,$input_array ) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +-- Testing array_intersect_key() function with float indexed array -- +array(3) { + [0]=> + string(1) "0" + [10]=> + string(2) "10" + [-10]=> + string(3) "-10" +} +array(3) { + [0]=> + string(3) "0.5" + [10]=> + string(4) "10.5" + [-10]=> + string(5) "-10.5" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation6.phpt b/ext/standard/tests/array/array_intersect_key_variation6.phpt new file mode 100644 index 000000000..823b0707d --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation6.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing boolean indexed array +--FILE-- + '0', 1 => '1' , -10 => '-10'); +$boolean_indx_array = array(true => 'boolt', false => 'boolf', TRUE => 'boolT', FALSE => 'boolF'); + +echo "\n-- Testing array_intersect_key() function with boolean indexed array --\n"; +var_dump( array_intersect_key($input_array, $boolean_indx_array) ); +var_dump( array_intersect_key($boolean_indx_array,$input_array ) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +-- Testing array_intersect_key() function with boolean indexed array -- +array(2) { + [0]=> + string(1) "0" + [1]=> + string(1) "1" +} +array(2) { + [1]=> + string(5) "boolT" + [0]=> + string(5) "boolF" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation7.phpt b/ext/standard/tests/array/array_intersect_key_variation7.phpt new file mode 100644 index 000000000..fe4446a24 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation7.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing null,unset and undefeined variable indexed array +--FILE-- + '0', 1 => '1' , -10 => '-10' , null => 'null'); +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +$input_arrays = array( + 'null indexed' => array(NULL => 'null 1', null => 'null 2'), + 'undefined indexed' => array(@$undefined_var => 'undefined'), + 'unset indexed' => array(@$unset_var => 'unset'), +); + +foreach($input_arrays as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_key($input_array, $value) ); + var_dump( array_intersect_key($value,$input_array ) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** + +--null indexed-- +array(1) { + [""]=> + string(4) "null" +} +array(1) { + [""]=> + string(6) "null 2" +} + +--undefined indexed-- +array(1) { + [""]=> + string(4) "null" +} +array(1) { + [""]=> + string(9) "undefined" +} + +--unset indexed-- +array(1) { + [""]=> + string(4) "null" +} +array(1) { + [""]=> + string(5) "unset" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_key_variation8.phpt b/ext/standard/tests/array/array_intersect_key_variation8.phpt new file mode 100644 index 000000000..2b889b596 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_key_variation8.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test array_intersect_key() function : usage variation - Passing Multi dimensional array +--FILE-- + array('blue' => 1, 'red' => 2), + + 'second' => array('yellow' => 7), + + 'third' => array(0 =>'zero'), +); + +$array2 = array ( + + 'first' => array('blue' => 1, 'red' => 2,), + + 'second' => array('cyan' => 8), + + 'fourth' => array(2 => 'two'), +); +var_dump( array_intersect_key($array1, $array2) ); +var_dump( array_intersect_key($array2,$array1 ) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_key() : usage variation *** +array(2) { + ["first"]=> + array(2) { + ["blue"]=> + int(1) + ["red"]=> + int(2) + } + ["second"]=> + array(1) { + ["yellow"]=> + int(7) + } +} +array(2) { + ["first"]=> + array(2) { + ["blue"]=> + int(1) + ["red"]=> + int(2) + } + ["second"]=> + array(1) { + ["cyan"]=> + int(8) + } +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_error.phpt b/ext/standard/tests/array/array_intersect_uassoc_error.phpt new file mode 100644 index 000000000..80e1d2a1a --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_error.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test array_intersect_uassoc() function : error conditions +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); +$array3 = array("a"=>"green", "brown"); +$extra_arg = 10; + +//Callback function +function key_compare_func($key1, $key2) { + if ($key1 === $key2) { + return 0; + } + return ($a > $b) ? 1 : -1; +} + +//Test array_intersect_uassoc with one more than the expected number of arguments +echo "\n-- Testing array_intersect_uassoc() function with more than expected no. of arguments --\n"; +var_dump( array_intersect_uassoc($array1, $array2, 'key_compare_func',$extra_arg) ); + +// Testing array_intersect_uassoc with one less than the expected number of arguments +echo "\n-- Testing array_intersect_uassoc() function with less than expected no. of arguments --\n"; +var_dump( array_intersect_uassoc($array1, $array2) ); +var_dump( array_intersect_uassoc($array1, $array2, $array3) ); + +// Testing array_intersect_uassoc with no arguments +echo "\n-- Testing array_intersect_uassoc() function with no arguments --\n"; +var_dump( array_intersect_uassoc() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : error conditions *** + +-- Testing array_intersect_uassoc() function with more than expected no. of arguments -- + +Warning: array_intersect_uassoc(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_intersect_uassoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_intersect_uassoc() in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +-- Testing array_intersect_uassoc() function with no arguments -- + +Warning: Wrong parameter count for array_intersect_uassoc() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation1.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation1.phpt new file mode 100644 index 000000000..86dec03d2 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation1.phpt @@ -0,0 +1,323 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing unexpected values to first argument +--FILE-- + "green", "yellow", "red"); +$array3 = array("a"=>"green", "brown"); + +//Callback function +function key_compare_func($a, $b) { + if ($a === $b) { + return 0; + } + return ($a > $b) ? 1 : -1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_uassoc($value, $array2, 'key_compare_func') ); + var_dump( array_intersect_uassoc($value, $array2, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- + +*** Testing array_intersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation10.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation10.phpt new file mode 100644 index 000000000..aa0c82d15 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation10.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing class/object methods to callback +--FILE-- + "green", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); +// define some class with method +class MyClass +{ + static function static_compare_func($a, $b) { + return strcasecmp($a, $b); + } + + public function class_compare_func($a, $b) { + return strcasecmp($a, $b); + } + +} + +echo "\n-- Testing array_intersect_uassoc() function using class with static method as callback --\n"; +var_dump( array_intersect_uassoc($array1, $array2, array('MyClass','static_compare_func')) ); +var_dump( array_intersect_uassoc($array1, $array2, 'MyClass::static_compare_func')); + +echo "\n-- Testing array_intersect_uassoc() function using class with regular method as callback --\n"; +$obj = new MyClass(); +var_dump( array_intersect_uassoc($array1, $array2, array($obj,'class_compare_func')) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +-- Testing array_intersect_uassoc() function using class with static method as callback -- +array(1) { + ["a"]=> + string(5) "green" +} +array(1) { + ["a"]=> + string(5) "green" +} + +-- Testing array_intersect_uassoc() function using class with regular method as callback -- +array(1) { + ["a"]=> + string(5) "green" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation11.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation11.phpt new file mode 100644 index 000000000..ba3776e20 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation11.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing class without string to callback (Handling fatal error) +--SKIPIF-- + +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); +$array3 = array("a"=>"green", "brown"); +// Define error handler +function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) { + if (error_reporting() != 0) { + // report non-silenced errors + echo "Error: $err_no - $err_msg, $filename($linenum)\n"; + } +} +set_error_handler('test_error_handler'); + + +class classWithoutToString +{ +} + +$value = new classWithoutToString(); + +var_dump( array_intersect_uassoc($array1, $array2, $value) ); +var_dump( array_intersect_uassoc($array1, $array2, $array3, $value) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_intersect_uassoc(): Not a valid callback , %s(%d) +NULL +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_intersect_uassoc(): Not a valid callback , %s(%d) +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation2.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation2.phpt new file mode 100644 index 000000000..51341bb45 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation2.phpt @@ -0,0 +1,323 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing unexpected values to second argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array3 = array("a"=>"green", "brown"); + +//Callback function +function key_compare_func($a, $b) { + if ($a === $b) { + return 0; + } + return ($a > $b) ? 1 : -1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_uassoc($array1, $value, 'key_compare_func') ); + var_dump( array_intersect_uassoc($array1, $value, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- + +*** Testing array_intersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation3.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation3.phpt new file mode 100644 index 000000000..f596e9c32 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation3.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing unexpected values to optional third argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + +//Callback function +function key_compare_func($a, $b) { + if ($a === $b) { + return 0; + } + return ($a > $b) ? 1 : -1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_uassoc($array1, $array2, $value, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- + +*** Testing array_intersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL + +--resource-- + +Warning: array_intersect_uassoc(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation4.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation4.phpt new file mode 100644 index 000000000..42a1755bf --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation4.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing unexpected values to mandatory third argument +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); +$array3 = array("a"=>"green", "brown"); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = << 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource' => $fp, +); + +// loop through each element of the array for arr1 +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_uassoc($array1, $array2, $value) ); + var_dump( array_intersect_uassoc($array1, $array2, $array3, $value) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_intersect_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_uassoc(): Not a valid callback -12345 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback -12345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--resource-- + +Warning: array_intersect_uassoc(): Not a valid callback Resource id #5 in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback Resource id #5 in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation5.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation5.phpt new file mode 100644 index 000000000..0733eadf3 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation5.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Intersection of integers with floats and strings. +--FILE-- + 1.00, 1.00 => 2.00, 2.00 => 3.00); +$arr_string = array('1', '2', '3'); +$arr_string_float = array('1.00', '2.00'); + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +echo "\n-- Result of integers and floating point intersection --\n"; +var_dump( array_intersect_uassoc($arr_default_int, $arr_float, "key_compare_func") ); + +echo "\n-- Result of integers and strings containing integers intersection --\n"; +var_dump( array_intersect_uassoc($arr_default_int, $arr_string, "key_compare_func") ); + +echo "\n-- Result of integers and strings containing floating points intersection --\n"; +var_dump( array_intersect_uassoc($arr_default_int, $arr_string_float, "key_compare_func") ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +-- Result of integers and floating point intersection -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + +-- Result of integers and strings containing integers intersection -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + +-- Result of integers and strings containing floating points intersection -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation6.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation6.phpt new file mode 100644 index 000000000..55dd46d48 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation6.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Intersection of floating points with strings. +--FILE-- + 1.00, 1.00 => 2.00); +$arr_string = array('1', '2', '3'); +$arr_string_float = array('1.00', '2.00'); + +function key_compare_func($a, $b) +{ + if ($a === $b) { + return 0; + } + return ($a > $b)? 1:-1; +} + +echo "\n-- Result of floating points and strings containing integers intersection --\n"; +var_dump( array_intersect_uassoc($arr_float, $arr_string, "key_compare_func") ); + +echo "\n-- Result of floating points and strings containing floating point intersection --\n"; +var_dump( array_intersect_uassoc($arr_float, $arr_string_float, "key_compare_func") ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +-- Result of floating points and strings containing integers intersection -- +array(2) { + [0]=> + float(1) + [1]=> + float(2) +} + +-- Result of floating points and strings containing floating point intersection -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation7.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation7.phpt new file mode 100644 index 000000000..7fa053a91 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation7.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Intersection of strings containing integers, float +--FILE-- + $b)? 1:-1; +} + +echo "\n-- Result of strings containing integers intersection --\n"; +var_dump( array_intersect_uassoc($arr1_string_int, $arr2_string_int, "key_compare_func") ); + +echo "\n-- Result of strings containing floating points intersection --\n"; +var_dump( array_intersect_uassoc($arr1_string_float, $arr2_string_float, "key_compare_func") ); + +echo "\n-- Result of strings containing integers and strings containing floating points intersection --\n"; +var_dump( array_intersect_uassoc($arr1_string_int, $arr2_string_float, "key_compare_func") ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +-- Result of strings containing integers intersection -- +array(1) { + [0]=> + string(1) "1" +} + +-- Result of strings containing floating points intersection -- +array(1) { + [0]=> + string(4) "1.00" +} + +-- Result of strings containing integers and strings containing floating points intersection -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation8.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation8.phpt new file mode 100644 index 000000000..7b218f7fa --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation8.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - arrays containing referenced variables +--FILE-- + 1, &$ref_var); + +echo "\n-- Testing array_intersect_uassoc() function with referenced variable \$ref_var has value '$ref_var' --\n"; +var_dump( array_intersect_uassoc($array1, $array2, "strcasecmp") ); + +// re-assign reference variable to different value +$ref_var = 10; +echo "\n-- Testing array_intersect_uassoc() function with referenced variable \$ref_var value changed to $ref_var --\n"; +var_dump( array_intersect_uassoc($array1, $array2, "strcasecmp") ); + +//When array are referenced +$array2 = &$array1; +echo "\n-- Testing array_intersect_uassoc() function when \$array2 is referencd to \$array1 --\n"; +var_dump( array_intersect_uassoc($array1, $array2, "strcasecmp") ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +-- Testing array_intersect_uassoc() function with referenced variable $ref_var has value 'a' -- +array(1) { + [0]=> + string(1) "a" +} + +-- Testing array_intersect_uassoc() function with referenced variable $ref_var value changed to 10 -- +array(0) { +} + +-- Testing array_intersect_uassoc() function when $array2 is referencd to $array1 -- +array(2) { + [0]=> + string(1) "a" + [1]=> + string(1) "a" +} +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_uassoc_variation9.phpt b/ext/standard/tests/array/array_intersect_uassoc_variation9.phpt new file mode 100644 index 000000000..c47980b6b --- /dev/null +++ b/ext/standard/tests/array/array_intersect_uassoc_variation9.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test array_intersect_uassoc() function : usage variation - Passing non-existing function name to callback +--FILE-- + "green", "b" => "brown", "c" => "blue", "red"); +$array2 = array("a" => "green", "yellow", "red"); + +//function name within double quotes +var_dump( array_intersect_uassoc($array1, $array2, "unknown_function") ); + +//function name within single quotes +var_dump( array_intersect_uassoc($array1, $array2, 'unknown_function') ); + +//function name without quotes +var_dump( array_intersect_uassoc($array1, $array2, unknown_function) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** + +Warning: array_intersect_uassoc(): Not a valid callback unknown_function in %s on line %d +NULL + +Warning: array_intersect_uassoc(): Not a valid callback unknown_function in %s on line %d +NULL + +Notice: Use of undefined constant unknown_function - assumed 'unknown_function' in %s on line %d + +Warning: array_intersect_uassoc(): Not a valid callback unknown_function in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_intersect_ukey_error.phpt b/ext/standard/tests/array/array_intersect_ukey_error.phpt new file mode 100644 index 000000000..1ae85f4ba --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_error.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test array_intersect_ukey() function : error conditions +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +//Test array_intersect_ukey with one more than the expected number of arguments +echo "\n-- Testing array_intersect_ukey() function with more than expected no. of arguments --\n"; +$extra_arg = 10; +var_dump( array_intersect_ukey($array1, $array2, 'key_compare_func',$extra_arg) ); + +// Testing array_intersect_ukey with one less than the expected number of arguments +echo "\n-- Testing array_intersect_ukey() function with less than expected no. of arguments --\n"; +var_dump( array_intersect_ukey($array1, $array2) ); + +// Testing array_intersect_ukey with no arguments +echo "\n-- Testing array_intersect_ukey() function with no arguments --\n"; +var_dump( array_intersect_ukey() ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : error conditions *** + +-- Testing array_intersect_ukey() function with more than expected no. of arguments -- + +Warning: array_intersect_ukey(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_intersect_ukey() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_intersect_ukey() in %s on line %d +NULL + +-- Testing array_intersect_ukey() function with no arguments -- + +Warning: Wrong parameter count for array_intersect_ukey() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation1.phpt b/ext/standard/tests/array/array_intersect_ukey_variation1.phpt new file mode 100644 index 000000000..701205780 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation1.phpt @@ -0,0 +1,320 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing unexpected values to first argument +--FILE-- + 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array('green' => 5, 'cyan' => 8); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_ukey($value, $array2, 'key_compare_func') ); + var_dump( array_intersect_ukey($value, $array2, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +--int 0-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation10.phpt b/ext/standard/tests/array/array_intersect_ukey_variation10.phpt new file mode 100644 index 000000000..b080eb230 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation10.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing class without string to callback (Handling fatal error) +--SKIPIF-- + +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array("a"=>"green", "cyan"); + +// Define error handler +function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) { + if (error_reporting() != 0) { + // report non-silenced errors + echo "Error: $err_no - $err_msg, $filename($linenum)\n"; + } +} +set_error_handler('test_error_handler'); + + +class classWithoutToString +{ +} + +$value = new classWithoutToString(); + +var_dump( array_intersect_ukey($array1, $array2, $value) ); +var_dump( array_intersect_ukey($array1, $array2, $array3, $value) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_uassoc() : usage variation *** +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_intersect_ukey(): Not a valid callback , %s(%d) +NULL +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 2 - array_intersect_ukey(): Not a valid callback , %s(%d) +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation2.phpt b/ext/standard/tests/array/array_intersect_ukey_variation2.phpt new file mode 100644 index 000000000..b7a1b078f --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation2.phpt @@ -0,0 +1,320 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing unexpected values to second argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array3 = array('green' => 5, 'cyan' => 8); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_ukey($array1, $value, 'key_compare_func') ); + var_dump( array_intersect_ukey($array1, $value, $array3, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +--int 0-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #2 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation3.phpt b/ext/standard/tests/array/array_intersect_ukey_variation3.phpt new file mode 100644 index 000000000..f7a1c0b4b --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation3.phpt @@ -0,0 +1,277 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing unexpected values to callback argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array3 = array('green' => 5, 'cyan' => 8); + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +// add arrays +$index_array = array (1, 2, 3); +$assoc_array = array ('one' => 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for key_compare_func +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_ukey($array1, $array2, $value) ); + var_dump( array_intersect_ukey($array1, $array2, $array3, $value) ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +--int 0-- + +Warning: array_intersect_ukey(): Not a valid callback 0 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_ukey(): Not a valid callback 12345 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_ukey(): Not a valid callback -12345 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback -12345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_ukey(): Not a valid callback 10.5 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_ukey(): Not a valid callback -10.5 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_ukey(): Not a valid callback 123456789000 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_ukey(): Not a valid callback -123456789000 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_ukey(): Not a valid callback 0.5 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_ukey(): Not a valid callback Class A object in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_ukey(): Not a valid callback Resource id #5 in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback Resource id #5 in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation4.phpt b/ext/standard/tests/array/array_intersect_ukey_variation4.phpt new file mode 100644 index 000000000..88eff1e89 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation4.phpt @@ -0,0 +1,321 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing unexpected values to optional third argument +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); +$array4 = array('green' => 5, 'cyan' => 8); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +//resource variable +$fp = fopen(__FILE__, "r"); + +// define some classes +class classWithToString +{ + public function __toString() { + return "Class A object"; + } +} + +class classWithoutToString +{ +} + +// heredoc string +$heredoc = << 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -12345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource data + 'resource var' => $fp, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_intersect_ukey($array1, $array2, $value, 'key_compare_func') ); + var_dump( array_intersect_ukey($array1, $array2, $value, $array4, 'key_compare_func') ); +}; + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +--int 0-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +--resource var-- + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL + +Warning: array_intersect_ukey(): Argument #3 is not an array in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation5.phpt b/ext/standard/tests/array/array_intersect_ukey_variation5.phpt new file mode 100644 index 000000000..c1520fbb6 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation5.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Intersection of integers with floats and strings. +--FILE-- + 1.00, 1.00 => 2.00, 2.00 => 3.00); +$arr_string = array('0' => '1', '1' => '2', '2' => '3'); +$arr_string_float = array('0.00' => '1.00', '1.00' => '2.00'); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of integers and floating point intersection --\n"; +var_dump( array_intersect_ukey($arr_default_int, $arr_float, "key_compare_func") ); + +echo "\n-- Result of integers and strings containing integers intersection --\n"; +var_dump( array_intersect_ukey($arr_default_int, $arr_string, "key_compare_func") ); + +echo "\n-- Result of integers and strings containing floating points intersection --\n"; +var_dump( array_intersect_ukey($arr_default_int, $arr_string_float, "key_compare_func") ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +-- Result of integers and floating point intersection -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + +-- Result of integers and strings containing integers intersection -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} + +-- Result of integers and strings containing floating points intersection -- +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation6.phpt b/ext/standard/tests/array/array_intersect_ukey_variation6.phpt new file mode 100644 index 000000000..a918660e4 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation6.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Intersection of floating points with strings. +--FILE-- + 1.00, 1.00 => 2.00); +$arr_string = array('0' => '1', '1' => '2', '2' => '3'); +$arr_string_float = array('0.00' => '1.00', '1.00' => '2.00'); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of floating points and strings containing integers intersection --\n"; +var_dump( array_intersect_ukey($arr_float, $arr_string, 'key_compare_func') ); + +echo "\n-- Result of floating points and strings containing floating point intersection --\n"; +var_dump( array_intersect_ukey($arr_float, $arr_string_float, 'key_compare_func') ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +-- Result of floating points and strings containing integers intersection -- +array(2) { + [0]=> + float(1) + [1]=> + float(2) +} + +-- Result of floating points and strings containing floating point intersection -- +array(2) { + [0]=> + float(1) + [1]=> + float(2) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation7.phpt b/ext/standard/tests/array/array_intersect_ukey_variation7.phpt new file mode 100644 index 000000000..75b601c11 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation7.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Intersection of strings containing integer and float +--FILE-- + '1', '1' => '2'); +$arr2_string_int = array('0' => '1', '1' => '3'); +$arr1_string_float = array('0.00' => '1.00', '1.00' => '2.00'); +$arr2_string_float = array('0.00' => '1.00', '1.00' => '3.00'); + +//Call back function +function key_compare_func($key1, $key2) +{ + if ($key1 == $key2) + return 0; + else + return ($key1 > $key2)? 1:-1; +} + +echo "\n-- Result of strings containing integers intersection --\n"; +var_dump( array_intersect_ukey($arr1_string_int, $arr2_string_int, 'key_compare_func') ); + +echo "\n-- Result of strings containing floating points intersection --\n"; +var_dump( array_intersect_ukey($arr1_string_float, $arr2_string_float, 'key_compare_func') ); + +echo "\n-- Result of strings containing integers and strings containing floating points intersection --\n"; +var_dump( array_intersect_ukey($arr1_string_int, $arr2_string_float, 'key_compare_func') ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +-- Result of strings containing integers intersection -- +array(2) { + [0]=> + string(1) "1" + [1]=> + string(1) "2" +} + +-- Result of strings containing floating points intersection -- +array(2) { + ["0.00"]=> + string(4) "1.00" + ["1.00"]=> + string(4) "2.00" +} + +-- Result of strings containing integers and strings containing floating points intersection -- +array(2) { + [0]=> + string(1) "1" + [1]=> + string(1) "2" +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation8.phpt b/ext/standard/tests/array/array_intersect_ukey_variation8.phpt new file mode 100644 index 000000000..98c935590 --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation8.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing non-existing function name to callback +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +//function name within double quotes +var_dump( array_intersect_ukey($array1, $array2, "unknown_function") ); + +//function name within single quotes +var_dump( array_intersect_ukey($array1, $array2, 'unknown_function') ); + +//function name without quotes +var_dump( array_intersect_ukey($array1, $array2, unknown_function) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +Warning: array_intersect_ukey(): Not a valid callback unknown_function in %s on line %d +NULL + +Warning: array_intersect_ukey(): Not a valid callback unknown_function in %s on line %d +NULL + +Notice: Use of undefined constant unknown_function - assumed 'unknown_function' in %s on line %d + +Warning: array_intersect_ukey(): Not a valid callback unknown_function in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_ukey_variation9.phpt b/ext/standard/tests/array/array_intersect_ukey_variation9.phpt new file mode 100644 index 000000000..fe130a86f --- /dev/null +++ b/ext/standard/tests/array/array_intersect_ukey_variation9.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test array_intersect_ukey() function : usage variation - Passing class/object methods to callback +--FILE-- + 1, 'red' => 2, 'green' => 3, 'purple' => 4); +$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); + +class MyClass +{ + static function static_compare_func($key1, $key2) { + return strcasecmp($key1, $key2); + } + + public function class_compare_func($key1, $key2) { + return strcasecmp($key1, $key2); + } + +} + +echo "\n-- Testing array_intersect_ukey() function using class with static method as callback --\n"; +var_dump( array_intersect_ukey($array1, $array2, array('MyClass','static_compare_func')) ); +var_dump( array_intersect_ukey($array1, $array2, 'MyClass::static_compare_func') ); + +echo "\n-- Testing array_intersect_uassoc() function using class with regular method as callback --\n"; +$obj = new MyClass(); +var_dump( array_intersect_ukey($array1, $array2, array($obj,'class_compare_func')) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_intersect_ukey() : usage variation *** + +-- Testing array_intersect_ukey() function using class with static method as callback -- +array(2) { + ["blue"]=> + int(1) + ["green"]=> + int(3) +} +array(2) { + ["blue"]=> + int(1) + ["green"]=> + int(3) +} + +-- Testing array_intersect_uassoc() function using class with regular method as callback -- +array(2) { + ["blue"]=> + int(1) + ["green"]=> + int(3) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_intersect_variation5.phpt b/ext/standard/tests/array/array_intersect_variation5.phpt index 7f36ee3f2..9aaedeb38 100644 --- a/ext/standard/tests/array/array_intersect_variation5.phpt +++ b/ext/standard/tests/array/array_intersect_variation5.phpt @@ -19,17 +19,6 @@ echo "*** Testing array_intersect() : assoc array with diff keys to \$arr1 argum $unset_var = 10; unset ($unset_var); -// get a resource variable -$fp = fopen(__FILE__, "r"); - -// get a class -class classA -{ - public function __toString(){ - return "Class A object"; - } -} - // get a heredoc string $heredoc = << 2.2, "pen\n" => 33), array("hello", $heredoc => "string"), // heredoc - // array with object, unset variable and resource variable -/*10*/ array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'), + // array with unset variable +/*10*/ array( @$unset_var => "hello"), // array with mixed keys -/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2, - $fp => 'resource', 133 => "int", 444.432 => "float", +/*11*/ array('hello' => 1, "fruit" => 2.2, + 133 => "int", 444.432 => "float", @$unset_var => "unset", $heredoc => "heredoc") ); @@ -85,21 +74,10 @@ foreach($arrays as $arr1) { $iterator++; } -// close the file resource used -fclose($fp); - echo "Done"; ?> --EXPECTF-- *** Testing array_intersect() : assoc array with diff keys to $arr1 argument *** - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d -- Iterator 1 -- array(0) { } diff --git a/ext/standard/tests/array/array_intersect_variation6.phpt b/ext/standard/tests/array/array_intersect_variation6.phpt index cecde34db..48d01f7d5 100644 --- a/ext/standard/tests/array/array_intersect_variation6.phpt +++ b/ext/standard/tests/array/array_intersect_variation6.phpt @@ -19,17 +19,6 @@ echo "*** Testing array_intersect() : assoc array with diff keys to \$arr2 argum $unset_var = 10; unset ($unset_var); -// get a resource variable -$fp = fopen(__FILE__, "r"); - -// get a class -class classA -{ - public function __toString(){ - return "Class A object"; - } -} - // get a heredoc string $heredoc = << 2.2, "pen\n" => 33), array("hello", $heredoc => "string"), // heredoc - // array with object, unset variable and resource variable -/*10*/ array(new classA() => 11, @$unset_var => "hello", $fp => 'resource'), + // array with unset variable +/*10*/ array( @$unset_var => "hello"), // array with mixed keys -/*11*/ array('hello' => 1, new classA() => 2, "fruit" => 2.2, - $fp => 'resource', 133 => "int", 444.432 => "float", +/*11*/ array('hello' => 1, "fruit" => 2.2, + 133 => "int", 444.432 => "float", @$unset_var => "unset", $heredoc => "heredoc") ); @@ -85,21 +74,10 @@ foreach($arrays as $arr2) { $iterator++; } -// close the file resource used -fclose($fp); - echo "Done"; ?> --EXPECTF-- *** Testing array_intersect() : assoc array with diff keys to $arr2 argument *** - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d - -Warning: Illegal offset type in %s on line %d -- Iterator 1 -- array(0) { } diff --git a/ext/standard/tests/array/array_map_variation19.phpt b/ext/standard/tests/array/array_map_variation19.phpt new file mode 100644 index 000000000..9478f70ef --- /dev/null +++ b/ext/standard/tests/array/array_map_variation19.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test array_map() function : usage variations - callback pass semantics +--FILE-- + +--EXPECTF-- +array(2) { + [0]=> + string(10) "original.0" + [1]=> + string(10) "original.1" +} +array(2) { + [0]=> + &string(7) "changed" + [1]=> + string(10) "original.1" +} \ No newline at end of file diff --git a/ext/standard/tests/array/array_multisort_basic1.phpt b/ext/standard/tests/array/array_multisort_basic1.phpt new file mode 100644 index 000000000..af5f8df4f --- /dev/null +++ b/ext/standard/tests/array/array_multisort_basic1.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test array_multisort() function : basic functionality +--FILE-- + 2, "row2" => 1, "row3" => 1); +$ar2 = array("row1" => 2, "row2" => "aa", "row3" => "1"); + +echo "\n-- Testing array_multisort() function with all normal arguments --\n"; +var_dump( array_multisort($ar1, SORT_ASC, SORT_REGULAR, $ar2, SORT_DESC, SORT_STRING) ); +var_dump($ar1, $ar2); + +echo "\n-- Testing array_multisort() function with one argument --\n"; +var_dump( array_multisort($ar2) ); +var_dump($ar2); + + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : basic functionality *** + +-- Testing array_multisort() function with all normal arguments -- +bool(true) +array(3) { + ["row2"]=> + int(1) + ["row3"]=> + int(1) + ["row1"]=> + int(2) +} +array(3) { + ["row2"]=> + string(2) "aa" + ["row3"]=> + string(1) "1" + ["row1"]=> + int(2) +} + +-- Testing array_multisort() function with one argument -- +bool(true) +array(3) { + ["row3"]=> + string(1) "1" + ["row2"]=> + string(2) "aa" + ["row1"]=> + int(2) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_multisort_basic2.phpt b/ext/standard/tests/array/array_multisort_basic2.phpt new file mode 100644 index 000000000..d2c7ac20b --- /dev/null +++ b/ext/standard/tests/array/array_multisort_basic2.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test array_multisort() function : basic functionality +--FILE-- + 2, 1, 9 => 1); +$ar2 = array( 2, "aa" , "1"); + +echo "\n-- Testing array_multisort() function with all normal arguments --\n"; +var_dump( array_multisort($ar1, SORT_ASC, SORT_REGULAR, $ar2, SORT_ASC, SORT_NUMERIC) ); +var_dump($ar1, $ar2); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : basic functionality - renumbering of numeric keys *** + +-- Testing array_multisort() function with all normal arguments -- +bool(true) +array(3) { + [0]=> + int(1) + [1]=> + int(1) + ["strkey"]=> + int(2) +} +array(3) { + [0]=> + string(2) "aa" + [1]=> + string(1) "1" + [2]=> + int(2) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_multisort_error.phpt b/ext/standard/tests/array/array_multisort_error.phpt new file mode 100644 index 000000000..2d1c18bc6 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_error.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test array_multisort() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : error conditions *** + +-- Testing array_multisort() function with Zero arguments -- + +Warning: Wrong parameter count for array_multisort() in %sarray_multisort_error.php on line %d +NULL + +-- Testing array_multisort() function with repeated flags -- + +Warning: array_multisort(): Argument #3 is expected to be an array or sorting flag that has not already been specified in %sarray_multisort_error.php on line %d +bool(false) + +-- Testing array_multisort() function with repeated flags -- + +Warning: array_multisort(): Argument #3 is expected to be an array or sorting flag that has not already been specified in %sarray_multisort_error.php on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_multisort_variation1.phpt b/ext/standard/tests/array/array_multisort_variation1.phpt new file mode 100644 index 000000000..084addef4 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation1.phpt @@ -0,0 +1,207 @@ +--TEST-- +Test array_multisort() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ar1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_multisort($value)); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation *** + +--int 0-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or sorting flag that has not already been specified, %sarray_multisort_variation1.php(%d) +bool(false) + +--int 1-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or sorting flag that has not already been specified, %sarray_multisort_variation1.php(%d) +bool(false) + +--int 12345-- +Error: 2 - array_multisort(): Argument #1 is an unknown sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--int -12345-- +Error: 2 - array_multisort(): Argument #1 is an unknown sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--float 10.5-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--float -10.5-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--float .5-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--lowercase null-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--lowercase true-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--lowercase false-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--empty string DQ-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--empty string SQ-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--string DQ-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--string SQ-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--mixed case string-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--heredoc-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--undefined var-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) + +--unset var-- +Error: 2 - array_multisort(): Argument #1 is expected to be an array or a sort flag, %sarray_multisort_variation1.php(%d) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_multisort_variation10.phpt b/ext/standard/tests/array/array_multisort_variation10.phpt new file mode 100644 index 000000000..4e9f4890c --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation10.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test array_multisort() function : usage variation - testing with anonymous arrary arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : Testing with anonymous arguments *** +bool(true) +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation2.phpt b/ext/standard/tests/array/array_multisort_variation2.phpt new file mode 100644 index 000000000..bad20188e --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation2.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_multisort() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_multisort($ar1, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation *** + +--int 0-- +bool(true) + +--int 1-- +bool(true) + +--int 12345-- +Error: 2 - array_multisort(): Argument #2 is an unknown sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--int -12345-- +Error: 2 - array_multisort(): Argument #2 is an unknown sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--float 10.5-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--float -10.5-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--float .5-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--empty array-- +Error: 2 - array_multisort(): Array sizes are inconsistent, %sarray_multisort_variation2.php(%d) +bool(false) + +--int indexed array-- +Error: 2 - array_multisort(): Array sizes are inconsistent, %sarray_multisort_variation2.php(%d) +bool(false) + +--associative array-- +bool(true) + +--nested arrays-- +Error: 2 - array_multisort(): Array sizes are inconsistent, %sarray_multisort_variation2.php(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--lowercase null-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--lowercase true-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--lowercase false-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--empty string DQ-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--empty string SQ-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--string DQ-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--string SQ-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--mixed case string-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--heredoc-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--undefined var-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) + +--unset var-- +Error: 2 - array_multisort(): Argument #2 is expected to be an array or a sort flag, %sarray_multisort_variation2.php(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation3.phpt b/ext/standard/tests/array/array_multisort_variation3.phpt new file mode 100644 index 000000000..534374c43 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation3.phpt @@ -0,0 +1,208 @@ +--TEST-- +Test array_multisort() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ar2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_multisort($ar1, SORT_REGULAR, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation *** + +--int 0-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or sorting flag that has not already been specified, %sarray_multisort_variation3.php(%d) +bool(false) + +--int 1-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or sorting flag that has not already been specified, %sarray_multisort_variation3.php(%d) +bool(false) + +--int 12345-- +Error: 2 - array_multisort(): Argument #3 is an unknown sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--int -12345-- +Error: 2 - array_multisort(): Argument #3 is an unknown sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--float 10.5-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--float -10.5-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--float .5-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--lowercase null-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--lowercase true-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--lowercase false-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--empty string DQ-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--empty string SQ-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--string DQ-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--string SQ-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--mixed case string-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--heredoc-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--undefined var-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) + +--unset var-- +Error: 2 - array_multisort(): Argument #3 is expected to be an array or a sort flag, %sarray_multisort_variation3.php(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation4.phpt b/ext/standard/tests/array/array_multisort_variation4.phpt new file mode 100644 index 000000000..ce2ae2356 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation4.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_multisort() function : usage variation - testing with multiple array arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : Testing with multiple array arguments *** +bool(true) +array(4) { + [0]=> + int(3) + [1]=> + int(3) + [2]=> + int(3) + [3]=> + int(4) +} +array(4) { + [0]=> + int(2) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(9) +} +array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(9) + [3]=> + int(9) +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation5.phpt b/ext/standard/tests/array/array_multisort_variation5.phpt new file mode 100644 index 000000000..87e60f22b --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation5.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test array_multisort() function : usage variation - testing with multiple array arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : Testing all array sort specifiers *** +array(3) { + [0]=> + string(1) "1" + [1]=> + string(2) "aa" + [2]=> + int(2) +} +array(3) { + [0]=> + string(1) "1" + [1]=> + int(2) + [2]=> + string(2) "aa" +} +array(3) { + [0]=> + string(2) "aa" + [1]=> + string(1) "1" + [2]=> + int(2) +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation6.phpt b/ext/standard/tests/array/array_multisort_variation6.phpt new file mode 100644 index 000000000..9774d49ba --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation6.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test array_multisort() function : usage variation - testing with multiple array arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : Testing all array sort specifiers *** +array(3) { + [0]=> + int(2) + [1]=> + string(2) "aa" + [2]=> + string(1) "1" +} +array(3) { + [0]=> + string(2) "aa" + [1]=> + int(2) + [2]=> + string(1) "1" +} +array(3) { + [0]=> + int(2) + [1]=> + string(1) "1" + [2]=> + string(2) "aa" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation7.phpt b/ext/standard/tests/array/array_multisort_variation7.phpt new file mode 100644 index 000000000..c8ca24013 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation7.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test array_multisort() function : usage variation - test sort order of all types +--FILE-- + 0, + 'float -10.5' => -10.5, + array(), + 'uppercase NULL' => NULL, + 'lowercase true' => true, + 'empty string DQ' => "", + 'string DQ' => "string", + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + 'undefined var' => @$undefined_var, +); + +var_dump(array_multisort($inputs)); +var_dump($inputs); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation - test sort order of all types*** +bool(true) +array(10) { + ["empty string DQ"]=> + string(0) "" + ["int 0"]=> + int(0) + ["uppercase NULL"]=> + NULL + ["undefined var"]=> + NULL + [0]=> + array(0) { + } + ["instance of classWithToString"]=> + object(classWithToString)#1 (0) { + } + ["instance of classWithoutToString"]=> + object(classWithoutToString)#2 (0) { + } + ["lowercase true"]=> + bool(true) + ["float -10.5"]=> + float(-10.5) + ["string DQ"]=> + string(6) "string" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation8.phpt b/ext/standard/tests/array/array_multisort_variation8.phpt new file mode 100644 index 000000000..60f7a97e3 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation8.phpt @@ -0,0 +1,74 @@ +--TEST-- +Test array_multisort() function : usage variation - test sort order of all types +--FILE-- + 0, + 'float -10.5' => -10.5, + array(), + 'uppercase NULL' => NULL, + 'lowercase true' => true, + 'empty string DQ' => "", + 'string DQ' => "string", + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + 'undefined var' => @$undefined_var, +); + +var_dump(array_multisort($inputs, SORT_STRING)); +var_dump($inputs); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation - test sort order of all types*** +bool(true) +array(10) { + ["empty string DQ"]=> + string(0) "" + ["uppercase NULL"]=> + NULL + ["undefined var"]=> + NULL + ["instance of classWithoutToString"]=> + object(classWithoutToString)#2 (0) { + } + ["float -10.5"]=> + float(-10.5) + ["int 0"]=> + int(0) + ["lowercase true"]=> + bool(true) + [0]=> + array(0) { + } + ["instance of classWithToString"]=> + object(classWithToString)#1 (0) { + } + ["string DQ"]=> + string(6) "string" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation9.phpt b/ext/standard/tests/array/array_multisort_variation9.phpt new file mode 100644 index 000000000..98ccd06ed --- /dev/null +++ b/ext/standard/tests/array/array_multisort_variation9.phpt @@ -0,0 +1,78 @@ +--TEST-- +Test array_multisort() function : usage variation - test sort order of all types +--FILE-- + 0, + 'float -10.5' => -10.5, + array(), + 'uppercase NULL' => NULL, + 'lowercase true' => true, + 'empty string DQ' => "", + 'string DQ' => "string", + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + 'undefined var' => @$undefined_var, +); + +var_dump(array_multisort($inputs, SORT_NUMERIC)); +var_dump($inputs); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : usage variation - test sort order of all types*** + +Notice: Object of class classWithToString could not be converted to double in %sarray_multisort_variation9.php on line %d + +Notice: Object of class classWithoutToString could not be converted to double in %sarray_multisort_variation9.php on line %d + +Notice: Object of class classWithoutToString could not be converted to double in %sarray_multisort_variation9.php on line %d + +Notice: Object of class classWithoutToString could not be converted to double in %sarray_multisort_variation9.php on line %d + +Notice: Object of class classWithoutToString could not be converted to double in %sarray_multisort_variation9.php on line %d +bool(true) +array(10) { + ["float -10.5"]=> + float(-10.5) + ["string DQ"]=> + string(6) "string" + ["undefined var"]=> + NULL + ["empty string DQ"]=> + string(0) "" + ["uppercase NULL"]=> + NULL + ["int 0"]=> + int(0) + [0]=> + array(0) { + } + ["instance of classWithoutToString"]=> + object(classWithoutToString)#2 (0) { + } + ["lowercase true"]=> + bool(true) + ["instance of classWithToString"]=> + object(classWithToString)#1 (0) { + } +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_next_error1.phpt b/ext/standard/tests/array/array_next_error1.phpt new file mode 100644 index 000000000..72f2cb9f1 --- /dev/null +++ b/ext/standard/tests/array/array_next_error1.phpt @@ -0,0 +1,13 @@ +--TEST-- +next - ensure warning is received when passing an indirect temporary. +--FILE-- + +--EXPECTF-- + +Strict Standards: Only variables should be passed by reference in %s on line %d +int(2) \ No newline at end of file diff --git a/ext/standard/tests/array/array_next_error2.phpt b/ext/standard/tests/array/array_next_error2.phpt new file mode 100644 index 000000000..d4f16666e --- /dev/null +++ b/ext/standard/tests/array/array_next_error2.phpt @@ -0,0 +1,12 @@ +--TEST-- +next - ensure we cannot pass a temporary +--FILE-- + +--EXPECTF-- + +Fatal error: Only variables can be passed by reference in %s on line %d \ No newline at end of file diff --git a/ext/standard/tests/array/array_product_error.phpt b/ext/standard/tests/array/array_product_error.phpt new file mode 100644 index 000000000..fd2cfc4da --- /dev/null +++ b/ext/standard/tests/array/array_product_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test array_product() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_product() : error conditions *** + +-- Testing array_product() function with Zero arguments -- + +Warning: Wrong parameter count for array_product() in %sarray_product_error.php on line %d +NULL + +-- Testing array_product() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for array_product() in %sarray_product_error.php on line %d +NULL + +-- Testing array_product() function incorrect argument type -- + +Warning: array_product(): The argument should be an array in %sarray_product_error.php on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_product_variation1.phpt b/ext/standard/tests/array/array_product_variation1.phpt new file mode 100644 index 000000000..1d47fa5ea --- /dev/null +++ b/ext/standard/tests/array/array_product_variation1.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_product() function : variation +--FILE-- + true, "boolean (false)" => false, + "string" => "hello", "numeric string" => "12", + "resource" => $fp, "object" => new A(), "null" => null, + "array" => array(3,2)); + +foreach ($types as $desc => $type) { + echo $desc . "\n"; + var_dump(array_product(array($type))); + echo "\n"; +} + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing array_product() : variation - using non numeric values *** +boolean (true) +int(1) + +boolean (false) +int(0) + +string +int(0) + +numeric string +int(12) + +resource +int(%d) + +object +int(1) + +null +int(0) + +array +int(1) + +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_product_variation2.phpt b/ext/standard/tests/array/array_product_variation2.phpt new file mode 100644 index 000000000..186987bf1 --- /dev/null +++ b/ext/standard/tests/array/array_product_variation2.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test array_product() function : variation - using a keyed array +--FILE-- + 2, "janet" => 5)) ); +?> +===DONE=== +--EXPECTF-- +*** Testing array_product() : variations *** + +-- Testing array_product() function with a keyed array -- +int(10) +===DONE=== diff --git a/ext/standard/tests/array/array_product_variation3.phpt b/ext/standard/tests/array/array_product_variation3.phpt new file mode 100644 index 000000000..33f8110de --- /dev/null +++ b/ext/standard/tests/array/array_product_variation3.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test array_product() function : variation - negative numbers +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_product() : variations - negative numbers*** + +-- Testing array_product() function with one negative number -- +int(-2) + +-- Testing array_product() function with two negative numbers -- +int(6) + +-- Testing array_product() function with three negative numbers -- +int(-24) + +-- Testing array_product() function with negative floats -- +float(-1.5) + +-- Testing array_product() function with negative floats -- +float(-9.9999999E+15) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_product_variation4.phpt b/ext/standard/tests/array/array_product_variation4.phpt new file mode 100644 index 000000000..1493bbd8e --- /dev/null +++ b/ext/standard/tests/array/array_product_variation4.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test array_product() function : variation - testing with a very large array +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_product() : variations *** + +-- Testing array_product() function with a very large array -- +float(INF) +===DONE=== diff --git a/ext/standard/tests/array/array_product_variation5.phpt b/ext/standard/tests/array/array_product_variation5.phpt new file mode 100644 index 000000000..c938ad466 --- /dev/null +++ b/ext/standard/tests/array/array_product_variation5.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test array_product() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for input + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_product($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_product() : usage variation *** + +--int 0-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--int 1-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--int 12345-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--int -12345-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--float 10.5-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--float -10.5-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--float .5-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--lowercase null-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--lowercase true-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--lowercase false-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--empty string DQ-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--empty string SQ-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--string DQ-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--string SQ-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--mixed case string-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--heredoc-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--undefined var-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL + +--unset var-- + +Warning: array_product(): The argument should be an array in %sarray_product_variation5.php on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_reduce_error.phpt b/ext/standard/tests/array/array_reduce_error.phpt new file mode 100644 index 000000000..59c52a772 --- /dev/null +++ b/ext/standard/tests/array/array_reduce_error.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test array_reduce() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_reduce() : error conditions *** + +-- Testing array_reduce() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for array_reduce() in %s on line %d +NULL + +-- Testing array_reduce() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_reduce() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_reduce_variation1.phpt b/ext/standard/tests/array/array_reduce_variation1.phpt new file mode 100644 index 000000000..b02a82a7c --- /dev/null +++ b/ext/standard/tests/array/array_reduce_variation1.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test array_reduce() function : variation +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_reduce() : variation *** + +--- Testing with a callback with too few parameters --- +int(2) + +--- Testing with a callback with too many parameters --- + +Warning: Missing argument 3 for threeArgs() in %sarray_reduce_variation1.php on line %d + +Notice: Undefined variable: x in %sarray_reduce_variation1.php on line %d +int(3) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_reduce_variation2.phpt b/ext/standard/tests/array/array_reduce_variation2.phpt new file mode 100644 index 000000000..9303f6d0c --- /dev/null +++ b/ext/standard/tests/array/array_reduce_variation2.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_reduce() function : variation - invalid parameters +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_reduce() : variation - invalid parameters *** + +Warning: array_reduce(): The second argument, 'bogusbogus', should be a valid callback in %s on line %d +NULL + +Warning: array_reduce(): The first argument should be an array in %s on line %d +NULL + +Warning: array_reduce(): The first argument should be an array in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_reduce_variation3.phpt b/ext/standard/tests/array/array_reduce_variation3.phpt new file mode 100644 index 000000000..f6301026b --- /dev/null +++ b/ext/standard/tests/array/array_reduce_variation3.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_reduce() function : variation - object callbacks +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_reduce() : variation - object callbacks *** + +--- Static method callback --- +int(1) + +--- Instance method callback --- +int(1) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_slice_variation1.phpt b/ext/standard/tests/array/array_slice_variation1.phpt index 4c7a148c8..daed1d84f 100644 --- a/ext/standard/tests/array/array_slice_variation1.phpt +++ b/ext/standard/tests/array/array_slice_variation1.phpt @@ -1,227 +1,61 @@ --TEST-- -Test array_slice() function : usage variations - Pass different data types as $input arg +Test array_slice() - Third parameter (NULL vs 0) --FILE-- --EXPECTF-- -*** Testing array_slice() : usage variations *** - --- Iteration 1 -- - -Warning: array_slice() expects parameter 1 to be array, integer given in %s on line %d -NULL - --- Iteration 2 -- - -Warning: array_slice() expects parameter 1 to be array, integer given in %s on line %d -NULL - --- Iteration 3 -- - -Warning: array_slice() expects parameter 1 to be array, integer given in %s on line %d -NULL - --- Iteration 4 -- - -Warning: array_slice() expects parameter 1 to be array, integer given in %s on line %d -NULL - --- Iteration 5 -- - -Warning: array_slice() expects parameter 1 to be array, double given in %s on line %d -NULL - --- Iteration 6 -- - -Warning: array_slice() expects parameter 1 to be array, double given in %s on line %d -NULL - --- Iteration 7 -- - -Warning: array_slice() expects parameter 1 to be array, double given in %s on line %d -NULL - --- Iteration 8 -- - -Warning: array_slice() expects parameter 1 to be array, double given in %s on line %d -NULL - --- Iteration 9 -- - -Warning: array_slice() expects parameter 1 to be array, double given in %s on line %d -NULL - --- Iteration 10 -- - -Warning: array_slice() expects parameter 1 to be array, null given in %s on line %d -NULL - --- Iteration 11 -- - -Warning: array_slice() expects parameter 1 to be array, null given in %s on line %d -NULL - --- Iteration 12 -- - -Warning: array_slice() expects parameter 1 to be array, boolean given in %s on line %d -NULL - --- Iteration 13 -- - -Warning: array_slice() expects parameter 1 to be array, boolean given in %s on line %d -NULL - --- Iteration 14 -- - -Warning: array_slice() expects parameter 1 to be array, boolean given in %s on line %d -NULL - --- Iteration 15 -- - -Warning: array_slice() expects parameter 1 to be array, boolean given in %s on line %d -NULL - --- Iteration 16 -- - -Warning: array_slice() expects parameter 1 to be array, string given in %s on line %d -NULL - --- Iteration 17 -- - -Warning: array_slice() expects parameter 1 to be array, string given in %s on line %d -NULL - --- Iteration 18 -- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} array(0) { } - --- Iteration 19 -- - -Warning: array_slice() expects parameter 1 to be array, string given in %s on line %d -NULL - --- Iteration 20 -- - -Warning: array_slice() expects parameter 1 to be array, string given in %s on line %d -NULL - --- Iteration 21 -- - -Warning: array_slice() expects parameter 1 to be array, string given in %s on line %d -NULL - --- Iteration 22 -- - -Warning: array_slice() expects parameter 1 to be array, object given in %s on line %d -NULL - --- Iteration 23 -- - -Warning: array_slice() expects parameter 1 to be array, null given in %s on line %d -NULL - --- Iteration 24 -- - -Warning: array_slice() expects parameter 1 to be array, null given in %s on line %d -NULL - --- Iteration 25 -- - -Warning: array_slice() expects parameter 1 to be array, resource given in %s on line %d -NULL -Done \ No newline at end of file +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +array(0) { +} +array(0) { +} +array(0) { +} +array(1) { + [0]=> + int(3) +} +array(1) { + [2]=> + int(3) +} +array(0) { +} +array(0) { +} +string(3) "foo" diff --git a/ext/standard/tests/array/array_slice_variation2.phpt b/ext/standard/tests/array/array_slice_variation2.phpt index d293ce58d..16b73d41b 100644 --- a/ext/standard/tests/array/array_slice_variation2.phpt +++ b/ext/standard/tests/array/array_slice_variation2.phpt @@ -1,5 +1,9 @@ --TEST-- Test array_slice() function : usage variations - Pass different data types as $offset arg +--SKIPIF-- + 4) die("skip this test is for 32bit platform only"); ?> +--INI-- +precision=12 --FILE-- int(4) } -Done \ No newline at end of file +Done diff --git a/ext/standard/tests/array/array_slice_variation3.phpt b/ext/standard/tests/array/array_slice_variation3.phpt index 0aafa645e..e3ffa21d9 100644 --- a/ext/standard/tests/array/array_slice_variation3.phpt +++ b/ext/standard/tests/array/array_slice_variation3.phpt @@ -1,5 +1,7 @@ --TEST-- Test array_slice() function : usage variations - Pass different data types as $length arg +--SKIPIF-- + --FILE-- + int(3) + [0]=> + int(4) } -- Iteration 8 -- @@ -204,4 +210,4 @@ array(2) { [0]=> int(4) } -Done \ No newline at end of file +Done diff --git a/ext/standard/tests/array/array_splice_errors.phpt b/ext/standard/tests/array/array_splice_errors.phpt index 4f3223900..2414071e3 100644 --- a/ext/standard/tests/array/array_splice_errors.phpt +++ b/ext/standard/tests/array/array_splice_errors.phpt @@ -1,5 +1,5 @@ --TEST-- -Test array_splice() function : error conditions +Test array_splice() function : error conditions --FILE-- +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : error conditions *** + +-- Testing array_udiff_assoc() function with more than expected no. of arguments -- + +Warning: array_udiff_assoc(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_udiff_assoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_udiff_assoc() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_assoc_variation.phpt b/ext/standard/tests/array/array_udiff_assoc_variation.phpt new file mode 100644 index 000000000..84e8841b2 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_udiff_assoc() function : variation +--FILE-- + "one", "02" => "two", '3' => "three", "four", "0.5" => 5, 6.0 => 6, "seven" => "0x7"); +$arr2 = array("one" => "one", "02" => "two", '3' => "three"); +$arr3 = array("four", "0.5" => "five", 6 => 6, "seven" => 7); +$arr4 = array("four", "0.5" => "five", 6 => 6, "seven" => 7); + + +var_dump( array_udiff_assoc($arr1, $arr2, $arr3, $arr4, $key_compare_function) ); + + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : variation - testing with multiple array arguments *** +array(2) { + [4]=> + string(4) "four" + ["0.5"]=> + int(5) +} +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_assoc_variation1.phpt b/ext/standard/tests/array/array_udiff_assoc_variation1.phpt new file mode 100644 index 000000000..9886d73ba --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation1.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_udiff_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_assoc($value, $arr2, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--int 1-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--float .5-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL + +--unset var-- + +Warning: array_udiff_assoc(): Argument #1 is not an array in %sarray_udiff_assoc_variation1.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_assoc_variation2.phpt b/ext/standard/tests/array/array_udiff_assoc_variation2.phpt new file mode 100644 index 000000000..18484a7ad --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation2.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_udiff_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_assoc($arr1, $value, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_udiff_assoc(): Argument #2 is not an array in %sarray_udiff_assoc_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_assoc_variation3.phpt b/ext/standard/tests/array/array_udiff_assoc_variation3.phpt new file mode 100644 index 000000000..36f87eacc --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation3.phpt @@ -0,0 +1,242 @@ +--TEST-- +Test array_udiff_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for key_comp_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_assoc($arr1, $arr2, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_assoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_udiff_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_udiff_assoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_udiff_assoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_assoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_assoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_assoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_assoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_udiff_assoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_udiff_assoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_udiff_assoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_udiff_assoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_udiff_assoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_udiff_assoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_udiff_assoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_assoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_udiff_assoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_assoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_udiff_assoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_assoc_variation4.phpt b/ext/standard/tests/array/array_udiff_assoc_variation4.phpt new file mode 100644 index 000000000..0bf3e2dbb --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation4.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_udiff_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_assoc($arr1, $arr2, $value, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--int 1-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--float .5-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL + +--unset var-- + +Warning: array_udiff_assoc(): Argument #3 is not an array in %sarray_udiff_assoc_variation4.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_assoc_variation5.phpt b/ext/standard/tests/array/array_udiff_assoc_variation5.phpt new file mode 100644 index 000000000..69380767b --- /dev/null +++ b/ext/standard/tests/array/array_udiff_assoc_variation5.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test array_udiff_assoc() function : usage variation - incorrect comparison functions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_udiff_assoc() : usage variation - differing comparison functions*** + +-- comparison function with an incorrect return value -- +array(1) { + [0]=> + int(1) +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_udiff_assoc_variation5.php on line %d +array(1) { + [0]=> + int(1) +} + +-- comparison function taking too few parameters -- +array(1) { + [0]=> + int(1) +} +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_error.phpt b/ext/standard/tests/array/array_udiff_error.phpt new file mode 100644 index 000000000..2b7bac85c --- /dev/null +++ b/ext/standard/tests/array/array_udiff_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test array_udiff() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : error conditions *** + +-- Testing array_udiff() function with more than expected no. of arguments -- + +Warning: array_udiff(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_udiff() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_udiff() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_uassoc_error.phpt b/ext/standard/tests/array/array_udiff_uassoc_error.phpt new file mode 100644 index 000000000..0ee132e28 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test array_udiff_uassoc() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : error conditions *** + +-- Testing array_udiff_uassoc() function with more than expected no. of arguments -- + +Warning: array_udiff_uassoc(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_udiff_uassoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_udiff_uassoc() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation1.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation1.phpt new file mode 100644 index 000000000..366358fa4 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation1.phpt @@ -0,0 +1,219 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_uassoc($value, $arr2, $data_comp_func, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 1-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int 12345-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--int -12345-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--float .5-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string DQ-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--string SQ-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--heredoc-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--undefined var-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL + +--unset var-- + +Warning: array_udiff_uassoc(): Argument #1 is not an array in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation2.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation2.phpt new file mode 100644 index 000000000..c205da73f --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation2.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_uassoc($arr1, $value, $data_comp_func, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_udiff_uassoc(): Argument #2 is not an array in %sarray_udiff_uassoc_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation3.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation3.phpt new file mode 100644 index 000000000..5e77598ef --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation3.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for data_comp_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_uassoc($arr1, $arr2, $value, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_udiff_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_udiff_uassoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_udiff_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_udiff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_udiff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_uassoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_udiff_uassoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation4.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation4.phpt new file mode 100644 index 000000000..112d1244a --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation4.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for key_comp_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_uassoc($arr1, $arr2, $data_comp_func, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_udiff_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_udiff_uassoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_udiff_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_udiff_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_udiff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_udiff_uassoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_uassoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_udiff_uassoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_udiff_uassoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation5.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation5.phpt new file mode 100644 index 000000000..87c707185 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation5.phpt @@ -0,0 +1,229 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff_uassoc($arr1, $arr2, $value, $data_comp_func, $key_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation *** + +--int 0-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--int 1-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--float .5-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL + +--unset var-- + +Warning: array_udiff_uassoc(): Argument #3 is not an array in %sarray_udiff_uassoc_variation5.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_uassoc_variation6.phpt b/ext/standard/tests/array/array_udiff_uassoc_variation6.phpt new file mode 100644 index 000000000..ec752a31b --- /dev/null +++ b/ext/standard/tests/array/array_udiff_uassoc_variation6.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_udiff_uassoc() function : usage variation +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_udiff_uassoc() : usage variation - differing comparison functions*** + +-- comparison function with an incorrect return value -- +array(1) { + [0]=> + int(1) +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_udiff_uassoc_variation6.php on line %d +array(1) { + [0]=> + int(1) +} + +-- comparison function taking too few parameters -- +array(1) { + [0]=> + int(1) +} +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_variation1.phpt b/ext/standard/tests/array/array_udiff_variation1.phpt new file mode 100644 index 000000000..d2c0e2409 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_variation1.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_udiff() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff($value, $arr2, $data_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : usage variation *** + +--int 0-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--int 1-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--float .5-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL + +--unset var-- + +Warning: array_udiff(): Argument #1 is not an array in %sarray_udiff_variation1.php on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_udiff_variation2.phpt b/ext/standard/tests/array/array_udiff_variation2.phpt new file mode 100644 index 000000000..fd2c12d8a --- /dev/null +++ b/ext/standard/tests/array/array_udiff_variation2.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_udiff() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff($arr1, $value, $data_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : usage variation *** + +--int 0-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_udiff(): Argument #2 is not an array in %sarray_udiff_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_variation3.phpt b/ext/standard/tests/array/array_udiff_variation3.phpt new file mode 100644 index 000000000..6abb2a033 --- /dev/null +++ b/ext/standard/tests/array/array_udiff_variation3.phpt @@ -0,0 +1,242 @@ +--TEST-- +Test array_udiff() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for data_comp_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff($arr1, $arr2, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : usage variation *** + +--int 0-- + +Warning: array_udiff(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_udiff(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_udiff(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_udiff(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_udiff(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_udiff(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_udiff(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_udiff(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_udiff(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_udiff(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_udiff(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_udiff(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_udiff(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_udiff(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_udiff(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_udiff(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_udiff(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_udiff_variation4.phpt b/ext/standard/tests/array/array_udiff_variation4.phpt new file mode 100644 index 000000000..09dec4f9e --- /dev/null +++ b/ext/standard/tests/array/array_udiff_variation4.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_udiff() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_udiff($arr1, $arr2, $value, $data_comp_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : usage variation *** + +--int 0-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--int 1-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--int 12345-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--int -12345-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--float 10.5-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--float -10.5-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--float .5-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--lowercase null-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--lowercase true-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--lowercase false-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--empty string DQ-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--empty string SQ-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--string DQ-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--string SQ-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--mixed case string-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--heredoc-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--undefined var-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL + +--unset var-- + +Warning: array_udiff(): Argument #3 is not an array in %sarray_udiff_variation4.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_udiff_variation5.phpt b/ext/standard/tests/array/array_udiff_variation5.phpt new file mode 100644 index 000000000..49405d40b --- /dev/null +++ b/ext/standard/tests/array/array_udiff_variation5.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test array_udiff() function : usage variation +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_udiff() : usage variation *** + +-- comparison function with an incorrect return value -- +array(1) { + [0]=> + int(1) +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_udiff_variation5.php on line %d +array(0) { +} + +-- comparison function taking too few parameters -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_assoc_basic2.phpt b/ext/standard/tests/array/array_uintersect_assoc_basic2.phpt new file mode 100644 index 000000000..f0c7ecc80 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_basic2.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test array_uintersect_assoc() function : basic functionality - testing with multiple array arguments +--FILE-- + "one", "02" => "two", '3' => "three", "four", "0.5" => 5, 0.6 => 6, "0x7" => "seven"); +$arr2 = array("one" => "one", "02" => "two", '3' => "three"); +$arr3 = array("one" => "one", '3' => "three", "0.5" => 5); +$arr4 = array("one" => "one", '3' => "three", "0.5" => 5); + + +var_dump( array_uintersect_assoc($arr1, $arr2, $arr3, $arr4, $data_compare_function) ); + + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : basic functionality - testing with multiple array arguments *** +array(2) { + ["one"]=> + string(3) "one" + [3]=> + string(5) "three" +} +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_assoc_error.phpt b/ext/standard/tests/array/array_uintersect_assoc_error.phpt new file mode 100644 index 000000000..6114224ac --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_error.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test array_uintersect_assoc() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : error conditions *** + +-- Testing array_uintersect_assoc() function with more than expected no. of arguments -- + +Warning: array_uintersect_assoc(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_uintersect_assoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_uintersect_assoc() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_assoc_variation1.phpt b/ext/standard/tests/array/array_uintersect_assoc_variation1.phpt new file mode 100644 index 000000000..45d0a8da7 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_variation1.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_uintersect_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_assoc($value, $arr2, $data_compare_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_assoc(): Argument #1 is not an array in %sarray_uintersect_assoc_variation1.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_assoc_variation2.phpt b/ext/standard/tests/array/array_uintersect_assoc_variation2.phpt new file mode 100644 index 000000000..a421c252a --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_variation2.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_uintersect_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_assoc($arr1, $value, $data_compare_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_assoc(): Argument #2 is not an array in %sarray_uintersect_assoc_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_assoc_variation3.phpt b/ext/standard/tests/array/array_uintersect_assoc_variation3.phpt new file mode 100644 index 000000000..2654b1008 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_variation3.phpt @@ -0,0 +1,242 @@ +--TEST-- +Test array_uintersect_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for data_compare_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_assoc($arr1, $arr2, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_assoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_uintersect_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_assoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_assoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_assoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_assoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_assoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_assoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_uintersect_assoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_uintersect_assoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_uintersect_assoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_uintersect_assoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_uintersect_assoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_assoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_assoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_assoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_assoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_assoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_assoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_uintersect_assoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_assoc_variation4.phpt b/ext/standard/tests/array/array_uintersect_assoc_variation4.phpt new file mode 100644 index 000000000..abff23ad5 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_variation4.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_uintersect_assoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_assoc($arr1, $arr2, $value, $data_compare_function ) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_assoc(): Argument #3 is not an array in %sarray_uintersect_assoc_variation4.php on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/array_uintersect_assoc_variation5.phpt b/ext/standard/tests/array/array_uintersect_assoc_variation5.phpt new file mode 100644 index 000000000..e2d7bd03a --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_assoc_variation5.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test array_uintersect_assoc() function : usage variation - differing comparison functions +--FILE-- + + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_assoc() : usage variation - differing comparison functions*** + +-- comparison function with an incorrect return value -- +array(0) { +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_assoc_variation5.php on line %d +array(0) { +} + +-- comparison function taking too few parameters -- +array(0) { +} + +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_error.phpt b/ext/standard/tests/array/array_uintersect_error.phpt new file mode 100644 index 000000000..eb111c5fd --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test array_uintersect() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : error conditions *** + +-- Testing array_uintersect() function with more than expected no. of arguments -- + +Warning: array_uintersect(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_uintersect() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_uintersect() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_uassoc_error.phpt b/ext/standard/tests/array/array_uintersect_uassoc_error.phpt new file mode 100644 index 000000000..ee317a5d5 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test array_uintersect_uassoc() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : error conditions *** + +-- Testing array_uintersect_uassoc() function with more than expected no. of arguments -- + +Warning: array_uintersect_uassoc(): Not a valid callback 10 in %s on line %d +NULL + +-- Testing array_uintersect_uassoc() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for array_uintersect_uassoc() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation1.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation1.phpt new file mode 100644 index 000000000..764c584b2 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation1.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_uassoc($value, $arr2, $data_compare_func, $key_compare_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_uassoc(): Argument #1 is not an array in %sarray_uintersect_uassoc_variation1.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation2.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation2.phpt new file mode 100644 index 000000000..2efa93d0c --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation2.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_uassoc($arr1, $value, $data_compare_func, $key_compare_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_uassoc(): Argument #2 is not an array in %sarray_uintersect_uassoc_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation3.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation3.phpt new file mode 100644 index 000000000..29fa37605 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation3.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for data_compare_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_uassoc($arr1, $arr2, $value, $key_compare_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_uassoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_uintersect_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_uassoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_uassoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation4.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation4.phpt new file mode 100644 index 000000000..2398f125d --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation4.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for key_compare_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_uassoc($arr1, $arr2, $data_compare_func, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_uassoc(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_uassoc(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_uassoc(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_uassoc(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_uassoc(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_uintersect_uassoc(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_uintersect_uassoc(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_uassoc(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_uassoc(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_uassoc(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_uassoc(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_uassoc(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_uintersect_uassoc(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation5.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation5.phpt new file mode 100644 index 000000000..061ac60ed --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation5.phpt @@ -0,0 +1,229 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect_uassoc($arr1, $arr2, $value, $data_compare_func, $key_compare_func) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation *** + +--int 0-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect_uassoc(): Argument #3 is not an array in %sarray_uintersect_uassoc_variation5.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_uassoc_variation6.phpt b/ext/standard/tests/array/array_uintersect_uassoc_variation6.phpt new file mode 100644 index 000000000..6ed86f841 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_uassoc_variation6.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test array_uintersect_uassoc() function : usage variation - incorrect callbacks +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect_uassoc() : usage variation - incorrect callbacks *** + +-- comparison function with an incorrect return value -- +array(0) { +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_uassoc_variation6.php on line %d + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_uassoc_variation6.php on line %d + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_uassoc_variation6.php on line %d +array(0) { +} + +-- comparison function taking too few parameters -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_variation1.phpt b/ext/standard/tests/array/array_uintersect_variation1.phpt new file mode 100644 index 000000000..0663a958f --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_variation1.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_uintersect() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr1 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect($value, $arr2, $data_compare_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : usage variation *** + +--int 0-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect(): Argument #1 is not an array in %sarray_uintersect_variation1.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_variation2.phpt b/ext/standard/tests/array/array_uintersect_variation2.phpt new file mode 100644 index 000000000..79f4cd09c --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_variation2.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test array_uintersect() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for arr2 + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect($arr1, $value, $data_compare_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : usage variation *** + +--int 0-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect(): Argument #2 is not an array in %sarray_uintersect_variation2.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_variation3.phpt b/ext/standard/tests/array/array_uintersect_variation3.phpt new file mode 100644 index 000000000..5093f3a27 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_variation3.phpt @@ -0,0 +1,242 @@ +--TEST-- +Test array_uintersect() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for data_compare_func + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect($arr1, $arr2, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : usage variation *** + +--int 0-- + +Warning: array_uintersect(): Not a valid callback 0 in %s on line %d +NULL + +--int 1-- + +Warning: array_uintersect(): Not a valid callback 1 in %s on line %d +NULL + +--int 12345-- + +Warning: array_uintersect(): Not a valid callback 12345 in %s on line %d +NULL + +--int -12345-- + +Warning: array_uintersect(): Not a valid callback -2345 in %s on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect(): Not a valid callback 10.5 in %s on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect(): Not a valid callback -10.5 in %s on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect(): Not a valid callback 123456789000 in %s on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect(): Not a valid callback -123456789000 in %s on line %d +NULL + +--float .5-- + +Warning: array_uintersect(): Not a valid callback 0.5 in %s on line %d +NULL + +--empty array-- + +Warning: array_uintersect(): Not a valid callback Array in %s on line %d +NULL + +--int indexed array-- + +Warning: array_uintersect(): Not a valid callback Array in %s on line %d +NULL + +--associative array-- + +Warning: array_uintersect(): Not a valid callback Array in %s on line %d +NULL + +--nested arrays-- + +Warning: array_uintersect(): Not a valid callback Array in %s on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect(): Not a valid callback 1 in %s on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect(): Not a valid callback 1 in %s on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--string DQ-- + +Warning: array_uintersect(): Not a valid callback string in %s on line %d +NULL + +--string SQ-- + +Warning: array_uintersect(): Not a valid callback string in %s on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect(): Not a valid callback sTrInG in %s on line %d +NULL + +--heredoc-- + +Warning: array_uintersect(): Not a valid callback hello world in %s on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect(): Not a valid callback Class A object in %s on line %d +NULL + +--undefined var-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL + +--unset var-- + +Warning: array_uintersect(): Not a valid callback in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/array_uintersect_variation4.phpt b/ext/standard/tests/array/array_uintersect_variation4.phpt new file mode 100644 index 000000000..45207b3c1 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_variation4.phpt @@ -0,0 +1,228 @@ +--TEST-- +Test array_uintersect() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for ... + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( array_uintersect($arr1, $arr2, $value, $data_compare_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : usage variation *** + +--int 0-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--int 1-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--int 12345-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--int -12345-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--float 10.5-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--float -10.5-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--float 12.3456789000e10-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--float -12.3456789000e10-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--float .5-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--uppercase NULL-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--lowercase null-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--lowercase true-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--lowercase false-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--uppercase TRUE-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--uppercase FALSE-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--empty string DQ-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--empty string SQ-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--string DQ-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--string SQ-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--mixed case string-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--heredoc-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--instance of classWithToString-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--instance of classWithoutToString-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--undefined var-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL + +--unset var-- + +Warning: array_uintersect(): Argument #3 is not an array in %sarray_uintersect_variation4.php on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/array_uintersect_variation5.phpt b/ext/standard/tests/array/array_uintersect_variation5.phpt new file mode 100644 index 000000000..75cf08e27 --- /dev/null +++ b/ext/standard/tests/array/array_uintersect_variation5.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test array_uintersect() function : usage variation - differing comparison functions +--FILE-- + + +===DONE=== +--EXPECTF-- +*** Testing array_uintersect() : usage variation - differing comparison functions*** + +-- comparison function with an incorrect return value -- +array(0) { +} + +-- comparison function taking too many parameters -- + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_variation5.php on line %d + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_variation5.php on line %d + +Warning: Missing argument 3 for too_many_parameters() in %sarray_uintersect_variation5.php on line %d +array(0) { +} + +-- comparison function taking too few parameters -- +array(0) { +} + +===DONE=== diff --git a/ext/standard/tests/array/array_unique_error.phpt b/ext/standard/tests/array/array_unique_error.phpt index 59d458a2a..9da3dfcad 100644 --- a/ext/standard/tests/array/array_unique_error.phpt +++ b/ext/standard/tests/array/array_unique_error.phpt @@ -17,7 +17,7 @@ var_dump( array_unique() ); echo "\n-- Testing array_unique() function with more than expected no. of arguments --\n"; $input = array(1, 2); $extra_arg = 10; -var_dump( array_unique($input, $extra_arg) ); +var_dump( array_unique($input, SORT_NUMERIC, $extra_arg) ); echo "Done"; ?> @@ -26,11 +26,11 @@ echo "Done"; -- Testing array_unique() function with zero arguments -- -Warning: Wrong parameter count for array_unique() in %s on line %d +Warning: array_unique() expects at least 1 parameter, 0 given in %s on line %d NULL -- Testing array_unique() function with more than expected no. of arguments -- -Warning: Wrong parameter count for array_unique() in %s on line %d +Warning: array_unique() expects at most 2 parameters, 3 given in %s on line %d NULL Done diff --git a/ext/standard/tests/array/array_unique_variation1.phpt b/ext/standard/tests/array/array_unique_variation1.phpt index 3a9ae10dd..8029807bb 100644 --- a/ext/standard/tests/array/array_unique_variation1.phpt +++ b/ext/standard/tests/array/array_unique_variation1.phpt @@ -191,4 +191,4 @@ bool(false) Warning: array_unique(): The argument should be an array in %s on line %d bool(false) -Done \ No newline at end of file +Done diff --git a/ext/standard/tests/array/array_unique_variation2.phpt b/ext/standard/tests/array/array_unique_variation2.phpt index 5cdb43a8e..3ec3f288b 100644 --- a/ext/standard/tests/array/array_unique_variation2.phpt +++ b/ext/standard/tests/array/array_unique_variation2.phpt @@ -74,7 +74,7 @@ $inputs = array ( $iterator = 1; foreach($inputs as $input) { echo "-- Iteration $iterator --\n"; - var_dump( array_unique($input) ); + var_dump( array_unique($input, SORT_STRING) ); $iterator++; } diff --git a/ext/standard/tests/array/array_unique_variation6.phpt b/ext/standard/tests/array/array_unique_variation6.phpt index fd8b226fa..15a46518b 100644 --- a/ext/standard/tests/array/array_unique_variation6.phpt +++ b/ext/standard/tests/array/array_unique_variation6.phpt @@ -29,7 +29,7 @@ $input = array( 5 => $value4 ); -var_dump( array_unique($input) ); +var_dump( array_unique($input, SORT_STRING) ); echo "Done"; ?> diff --git a/ext/standard/tests/array/array_unique_variation8.phpt b/ext/standard/tests/array/array_unique_variation8.phpt index ae6e8bb5c..6cf343221 100644 --- a/ext/standard/tests/array/array_unique_variation8.phpt +++ b/ext/standard/tests/array/array_unique_variation8.phpt @@ -22,7 +22,7 @@ $input = array( array(1, 2, 3, 1) ); -var_dump( array_unique($input) ); +var_dump( array_unique($input, SORT_STRING) ); echo "Done"; ?> diff --git a/ext/standard/tests/array/array_unshift_variation1.phpt b/ext/standard/tests/array/array_unshift_variation1.phpt index b1292d626..32b987654 100644 --- a/ext/standard/tests/array/array_unshift_variation1.phpt +++ b/ext/standard/tests/array/array_unshift_variation1.phpt @@ -301,12 +301,12 @@ string(11) "hello world" -- Iteration 21 -- Warning: array_unshift(): The first argument should be an array in %s on line %d bool(false) -object(classA)#%d (0) { +object(classA)#1 (0) { } Warning: array_unshift(): The first argument should be an array in %s on line %d bool(false) -object(classA)#%d (0) { +object(classA)#1 (0) { } -- Iteration 22 -- @@ -330,9 +330,10 @@ NULL -- Iteration 24 -- Warning: array_unshift(): The first argument should be an array in %s on line %d bool(false) -resource(%d) of type (stream) +resource(5) of type (stream) Warning: array_unshift(): The first argument should be an array in %s on line %d bool(false) -resource(%d) of type (stream) +resource(5) of type (stream) Done + diff --git a/ext/standard/tests/array/array_values_error.phpt b/ext/standard/tests/array/array_values_error.phpt new file mode 100644 index 000000000..1c6a92131 --- /dev/null +++ b/ext/standard/tests/array/array_values_error.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test array_values() function : error conditions - Pass incorrect number of functions +--FILE-- + + +--EXPECTF-- +*** Testing array_values() : error conditions *** + +-- Testing array_values() function with Zero arguments -- + +Warning: Wrong parameter count for array_values() in %s on line %d +NULL + +-- Testing array_values() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for array_values() in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/standard/tests/array/arsort_basic.phpt b/ext/standard/tests/array/arsort_basic.phpt new file mode 100644 index 000000000..481a59070 --- /dev/null +++ b/ext/standard/tests/array/arsort_basic.phpt @@ -0,0 +1,133 @@ +--TEST-- +Test arsort() function : basic functionality +--FILE-- + "lemon", "o" => "orange", "b" => "banana" ); +// an array containing unsorted numeric values with indices +$unsorted_numerics = array( 1 => 100, 2 => 33, 3 => 555, 4 => 22 ); + +echo "\n-- Testing arsort() by supplying string array, 'flag' value is default --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying numeric array, 'flag' value is default --\n"; +$temp_array = $unsorted_numerics; +var_dump( arsort($temp_array) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying string array, 'flag' = SORT_REGULAR --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array, SORT_REGULAR) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying numeric array, 'flag' = SORT_REGULAR --\n"; +$temp_array = $unsorted_numerics; +var_dump( arsort($temp_array, SORT_REGULAR) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying string array, 'flag' = SORT_STRING --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array, SORT_STRING) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; +$temp_array = $unsorted_numerics; +var_dump( arsort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "Done\n"; +?> +--EXPECTF-- +*** Testing arsort() : basic functionality *** + +-- Testing arsort() by supplying string array, 'flag' value is default -- +bool(true) +array(3) { + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" +} + +-- Testing arsort() by supplying numeric array, 'flag' value is default -- +bool(true) +array(4) { + [3]=> + int(555) + [1]=> + int(100) + [2]=> + int(33) + [4]=> + int(22) +} + +-- Testing arsort() by supplying string array, 'flag' = SORT_REGULAR -- +bool(true) +array(3) { + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" +} + +-- Testing arsort() by supplying numeric array, 'flag' = SORT_REGULAR -- +bool(true) +array(4) { + [3]=> + int(555) + [1]=> + int(100) + [2]=> + int(33) + [4]=> + int(22) +} + +-- Testing arsort() by supplying string array, 'flag' = SORT_STRING -- +bool(true) +array(3) { + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" +} + +-- Testing arsort() by supplying numeric array, 'flag' = SORT_NUMERIC -- +bool(true) +array(4) { + [3]=> + int(555) + [1]=> + int(100) + [2]=> + int(33) + [4]=> + int(22) +} +Done \ No newline at end of file diff --git a/ext/standard/tests/array/arsort_object1.phpt b/ext/standard/tests/array/arsort_object1.phpt new file mode 100644 index 000000000..8fd80f91b --- /dev/null +++ b/ext/standard/tests/array/arsort_object1.phpt @@ -0,0 +1,90 @@ +--TEST-- +Test arsort() function : object functionality - sort objects +--FILE-- +class_value = $value; + } + +} + +// class declaration for string objects +class for_string_arsort +{ + public $class_value; + // initializing object member value + function __construct($value){ + $this->class_value = $value; + } + + // return string value + function __tostring() { + return (string)$this->value; + } + +} + +// array of integer objects +$unsorted_int_obj = array ( + 1 => new for_integer_arsort(11), 2 => new for_integer_asort(66), + 3 => new for_integer_arsort(23), 4 => new for_integer_asort(-5), + 5 => new for_integer_arsort(0.001), 6 => new for_integer_asort(0) +); + +// array of string objects +$unsorted_str_obj = array ( + "a" => new for_string_arsort("axx"), "b" => new for_string_asort("t"), + "c" => new for_string_arsort("w"), "d" => new for_string_asort("py"), + "e" => new for_string_arsort("apple"), "f" => new for_string_asort("Orange"), + "g" => new for_string_arsort("Lemon"), "h" => new for_string_asort("aPPle") +); + + +echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is defualt --\n"; + +// testing arsort() function by supplying integer object array, flag value is defualt +$temp_array = $unsorted_int_obj; +var_dump(arsort($temp_array) ); +var_dump($temp_array); + +// testing arsort() function by supplying string object array, flag value is defualt +$temp_array = $unsorted_str_obj; +var_dump(arsort($temp_array) ); +var_dump($temp_array); + +echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is SORT_REGULAR --\n"; +// testing arsort() function by supplying integer object array, flag value = SORT_REGULAR +$temp_array = $unsorted_int_obj; +var_dump(arsort($temp_array, SORT_REGULAR) ); +var_dump($temp_array); + +// testing arsort() function by supplying string object array, flag value = SORT_REGULAR +$temp_array = $unsorted_str_obj; +var_dump(arsort($temp_array, SORT_REGULAR) ); +var_dump($temp_array); + +echo "Done\n"; +?> +--EXPECTF-- +*** Testing arsort() : object functionality *** + +Fatal error: Class 'for_integer_asort' not found in %sarsort_object1.php on line %d \ No newline at end of file diff --git a/ext/standard/tests/array/arsort_object2.phpt b/ext/standard/tests/array/arsort_object2.phpt new file mode 100644 index 000000000..24da65787 --- /dev/null +++ b/ext/standard/tests/array/arsort_object2.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test arsort() function : object functionality - sorting objects with diff. accessibility of member vars +--FILE-- +public_class_value = $value1; + $this->private_class_value = $value2; + $this->protected_class_value = $value3; + } + +} + +// class declaration for string objects +class for_string_arsort +{ + public $public_class_value; + private $private_class_value; + protected $protected_class_value; + // initializing object member value + function __construct($value1, $value2,$value3){ + $this->public_class_value = $value1; + $this->private_class_value = $value2; + $this->protected_class_value = $value3; + } + + // return string value + function __tostring() { + return (string)$this->value; + } +} + +// array of integer objects +$unsorted_int_obj = array ( + 1 => new for_integer_arsort(11, 33,2), 2 => new for_integer_asort(44, 66,3), + 3 => new for_integer_arsort(23, 32,6), 4 => new for_integer_asort(-88, -5,-4), +); + +// array of string objects +$unsorted_str_obj = array ( + "a" => new for_string_arsort("axx","AXX","d"), "b" => new for_string_asort("T", "t","q"), + "c" => new for_string_arsort("w", "W","c"), "d" => new for_string_asort("PY", "py","s"), +); + + +echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is default --\n"; + +// testing arsort() function by supplying integer object array, flag value is default +$temp_array = $unsorted_int_obj; +var_dump(arsort($temp_array) ); +var_dump($temp_array); + +// testing arsort() function by supplying string object array, flag value is default +$temp_array = $unsorted_str_obj; +var_dump(arsort($temp_array) ); +var_dump($temp_array); + +echo "\n-- Testing arsort() by supplying various object arrays, 'flag' value is SORT_REGULAR --\n"; +// testing arsort() function by supplying integer object array, flag value = SORT_REGULAR +$temp_array = $unsorted_int_obj; +var_dump(arsort($temp_array, SORT_REGULAR) ); +var_dump($temp_array); + +// testing arsort() function by supplying string object array, flag value = SORT_REGULAR +$temp_array = $unsorted_str_obj; +var_dump(arsort($temp_array, SORT_REGULAR) ); +var_dump($temp_array); + +echo "Done\n"; +?> +--EXPECTF-- +*** Testing arsort() : object functionality *** + +Fatal error: Class 'for_integer_asort' not found in %sarsort_object2.php on line %d \ No newline at end of file diff --git a/ext/standard/tests/array/bug42850.phpt b/ext/standard/tests/array/bug42850.phpt index 737cd170d..7a83f182a 100644 --- a/ext/standard/tests/array/bug42850.phpt +++ b/ext/standard/tests/array/bug42850.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #42850 array_walk_recursive() leaves references, #34982 array_walk_recursive() modifies elements outside function scope +Bug #42850 (array_walk_recursive() leaves references) --FILE-- --EXPECTF-- -Warning: array_merge_recursive(): recursion detected in %s/bug43495.php on line %d +Warning: array_merge_recursive(): recursion detected in %sbug43495.php on line %d Done. diff --git a/ext/standard/tests/array/bug44181.phpt b/ext/standard/tests/array/bug44181.phpt new file mode 100644 index 000000000..92dda674e --- /dev/null +++ b/ext/standard/tests/array/bug44181.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #44181 (extract EXTR_OVERWRITE|EXTR_REFS can fail to create references) +--FILE-- + 'original.foo'); + +$foo = 'test'; +$ref = &$a; + +extract($a, EXTR_OVERWRITE|EXTR_REFS); +$foo = 'changed.foo'; + +var_dump($a['foo']); +echo "Done\n"; +?> +--EXPECTF-- +string(%d) "changed.foo" +Done diff --git a/ext/standard/tests/array/bug44182.phpt b/ext/standard/tests/array/bug44182.phpt new file mode 100644 index 000000000..a77ddc42b --- /dev/null +++ b/ext/standard/tests/array/bug44182.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #44182 (extract EXTR_REFS can fail to split copy-on-write references) +--FILE-- + 'original.foo'); + +$nonref = $a['foo']; +$ref = &$a; + +extract($a, EXTR_REFS); +$a['foo'] = 'changed.foo'; + +var_dump($nonref); +echo "Done\n"; +?> +--EXPECTF-- +string(%d) "original.foo" +Done diff --git a/ext/standard/tests/array/bug45312.phpt b/ext/standard/tests/array/bug45312.phpt new file mode 100644 index 000000000..017defefa --- /dev/null +++ b/ext/standard/tests/array/bug45312.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #45312 (Segmentation fault on second request for array functions) +--FILE-- +priv_member = $val; + } + static function comp_func_cr($a, $b) { + if ($a->priv_member === $b->priv_member) return 0; + return ($a->priv_member > $b->priv_member) ? 1 : -1; + } + static function comp_func_cr2($a, $b) { + echo "."; + if ($a->priv_member === $b->priv_member) return 0; + return ($a->priv_member < $b->priv_member) ? 1 : -1; + } + function dump() { + echo $this->priv_member . "\n"; + } +} +$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1 => new cr(4), 2 => new cr(-15),); +$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1 => new cr(4), 2 => new cr(-15),); +$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr")); +foreach($result as $val) { + $val->dump(); +} +$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr2")); +foreach($result as $val) { + $val->dump(); +} +?> +--EXPECT-- +9 +12 +23 +....9 +12 +23 diff --git a/ext/standard/tests/array/bug46873.phpt b/ext/standard/tests/array/bug46873.phpt new file mode 100644 index 000000000..1f11c9d22 --- /dev/null +++ b/ext/standard/tests/array/bug46873.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #46873 (extract($foo) crashes if $foo['foo'] exists) +--FILE-- + 1, 'bar' => 2, 'test' => 3); +extract($foo); +var_dump($foo, $bar, $test); +?> +--EXPECT-- +int(1) +int(2) +int(3) diff --git a/ext/standard/tests/array/compact_variation2.phpt b/ext/standard/tests/array/compact_variation2.phpt new file mode 100644 index 000000000..79db8ab04 --- /dev/null +++ b/ext/standard/tests/array/compact_variation2.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test compact() function: ensure compact() doesn't pick up variables declared outside of current scope. +--FILE-- + +==Done== +--EXPECTF-- +*** Testing compact() : usage variations - variables outside of current scope *** +array(2) { + ["b"]=> + string(3) "f.b" + ["c"]=> + string(3) "f.c" +} +array(2) { + ["b"]=> + string(3) "f.b" + ["c"]=> + string(3) "f.c" +} +==Done== \ No newline at end of file diff --git a/ext/standard/tests/array/compare_function.inc b/ext/standard/tests/array/compare_function.inc new file mode 100644 index 000000000..e5176802a --- /dev/null +++ b/ext/standard/tests/array/compare_function.inc @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/ext/standard/tests/array/extract_variation10.phpt b/ext/standard/tests/array/extract_variation10.phpt new file mode 100644 index 000000000..d520be775 --- /dev/null +++ b/ext/standard/tests/array/extract_variation10.phpt @@ -0,0 +1,13 @@ +--TEST-- +Test extract() function - ensure EXTR_REFS doesn't mess with isRef flag on COW references to array elements. +--FILE-- + 'original.foo'); +$nonref = $a['foo']; +$ref = &$a; +extract($a, EXTR_REFS); +$a['foo'] = 'changed.foo'; +var_dump($nonref); +?> +--EXPECTF-- +%unicode|string%(12) "original.foo" diff --git a/ext/standard/tests/array/extract_variation11.phpt b/ext/standard/tests/array/extract_variation11.phpt new file mode 100644 index 000000000..7f6e08c98 --- /dev/null +++ b/ext/standard/tests/array/extract_variation11.phpt @@ -0,0 +1,13 @@ +--TEST-- +Test extract() function - ensure EXTR_REFS works when array is referenced and keys clash with variables in current scope. +--FILE-- + 'original.foo'); +$ref = &$a; +$foo = 'test'; +extract($a, EXTR_OVERWRITE|EXTR_REFS); +$foo = 'changed.foo'; +var_dump($a['foo']); +?> +--EXPECTF-- +%unicode|string%(11) "changed.foo" diff --git a/ext/standard/tests/array/natsort_basic.phpt b/ext/standard/tests/array/natsort_basic.phpt new file mode 100644 index 000000000..84d408ed3 --- /dev/null +++ b/ext/standard/tests/array/natsort_basic.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test natsort(): basic functionality +--FILE-- + +--EXPECT-- +Standard sorting +Array +( + [0] => img1.png + [1] => img10.png + [2] => img12.png + [3] => img2.png +) + +Natural order sorting +Array +( + [3] => img1.png + [2] => img2.png + [1] => img10.png + [0] => img12.png +) diff --git a/ext/standard/tests/array/prev_basic.phpt b/ext/standard/tests/array/prev_basic.phpt new file mode 100755 index 000000000..8c1450dd3 --- /dev/null +++ b/ext/standard/tests/array/prev_basic.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test prev() function : basic functionality +--FILE-- + " . current($array) . "\n"; +var_dump(prev($array)); + +echo key($array) . " => " . current($array) . "\n"; +var_dump(prev($array)); + +echo key($array) . " => " . current($array) . "\n"; +var_dump(prev($array)); + +echo "\n*** Testing an array with differing values/keys ***\n"; +$array2 = array('one', 2 => "help", 3, false, 'stringkey2' => 'val2', 'stringkey1' => 'val1'); +end($array2); +$length = count($array2); +for ($i = $length; $i > 0; $i--) { + var_dump(prev($array2)); +} + +?> +===DONE=== +--EXPECTF-- +*** Testing prev() : basic functionality *** +2 => two +string(3) "one" +1 => one +string(4) "zero" +0 => zero +bool(false) + +*** Testing an array with differing values/keys *** +string(4) "val2" +bool(false) +int(3) +string(4) "help" +string(3) "one" +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/prev_error1.phpt b/ext/standard/tests/array/prev_error1.phpt new file mode 100755 index 000000000..35af7d4a4 --- /dev/null +++ b/ext/standard/tests/array/prev_error1.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test prev() function : error conditions - Pass incorrect number of arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing prev() : error conditions *** + +-- Testing prev() function with Zero arguments -- + +Warning: Wrong parameter count for prev() in %s on line %d +NULL + +-- Testing prev() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for prev() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/prev_error2.phpt b/ext/standard/tests/array/prev_error2.phpt new file mode 100755 index 000000000..f26bdd0a4 --- /dev/null +++ b/ext/standard/tests/array/prev_error2.phpt @@ -0,0 +1,28 @@ +--TEST-- +prev - ensure warning is received when passing an indirect temporary. +--FILE-- + +--EXPECTF-- +-- Passing an indirect temporary variable -- + +Strict Standards: Only variables should be passed by reference in %s on line %d +int(1) diff --git a/ext/standard/tests/array/prev_error3.phpt b/ext/standard/tests/array/prev_error3.phpt new file mode 100755 index 000000000..dfac24eac --- /dev/null +++ b/ext/standard/tests/array/prev_error3.phpt @@ -0,0 +1,19 @@ +--TEST-- +prev - ensure we cannot pass a temporary +--FILE-- + +--EXPECTF-- + +Fatal error: Only variables can be passed by reference in %s on line %d \ No newline at end of file diff --git a/ext/standard/tests/array/prev_variation1.phpt b/ext/standard/tests/array/prev_variation1.phpt new file mode 100755 index 000000000..a2f5626c4 --- /dev/null +++ b/ext/standard/tests/array/prev_variation1.phpt @@ -0,0 +1,219 @@ +--TEST-- +Test prev() function : usage variation - Pass different data types as $array_arg +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing prev() : variation *** + +-- Iteration 1 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: prev(): Passed variable is not an array or object in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/prev_variation2.phpt b/ext/standard/tests/array/prev_variation2.phpt new file mode 100755 index 000000000..0ce087781 --- /dev/null +++ b/ext/standard/tests/array/prev_variation2.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test prev() function : usage variation - Multi-dimensional arrays +--FILE-- + 'z'); +end($array_arg); + +echo "\n-- Pass a two-dimensional array as \$array_arg --\n"; +var_dump(prev($array_arg)); +var_dump(prev($array_arg)); + +echo "\n-- Pass a sub-array as \$array_arg --\n"; +var_dump(prev($array_arg[0])); +?> +===DONE=== +--EXPECTF-- +*** Testing prev() : usage variations *** + +-- Pass a two-dimensional array as $array_arg -- +array(3) { + [0]=> + int(9) + [1]=> + int(8) + [2]=> + int(7) +} +bool(false) + +-- Pass a sub-array as $array_arg -- +int(8) +===DONE=== diff --git a/ext/standard/tests/array/rsort_variation3.phpt b/ext/standard/tests/array/rsort_variation3.phpt index 798e148c7..f8c002a6f 100644 --- a/ext/standard/tests/array/rsort_variation3.phpt +++ b/ext/standard/tests/array/rsort_variation3.phpt @@ -322,4 +322,4 @@ array(7) { [6]=> float(-2147483649) } -Done +Done \ No newline at end of file diff --git a/ext/standard/tests/array/uksort_basic.phpt b/ext/standard/tests/array/uksort_basic.phpt new file mode 100644 index 000000000..83b60518b --- /dev/null +++ b/ext/standard/tests/array/uksort_basic.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test uksort(): basic functionality +--FILE-- +0, 2=>1, 5=>2, 6=>3, 1=>4); +uksort($a, "cmp"); +foreach($a as $key => $value) { + echo "$key: $value\n"; +} +?> +--EXPECT-- +1: 4 +2: 1 +3: 0 +5: 2 +6: 3 \ No newline at end of file diff --git a/ext/standard/tests/array/uksort_error.phpt b/ext/standard/tests/array/uksort_error.phpt new file mode 100644 index 000000000..204a5f528 --- /dev/null +++ b/ext/standard/tests/array/uksort_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test uksort() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing uksort() : error conditions *** + +-- Testing uksort() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for uksort() in %s on line %d +NULL + +-- Testing uksort() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for uksort() in %s on line %d +NULL + +-- Testing uksort() function with zero arguments -- + +Warning: Wrong parameter count for uksort() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/array/uksort_variation1.phpt b/ext/standard/tests/array/uksort_variation1.phpt new file mode 100644 index 000000000..dfffdb3e6 --- /dev/null +++ b/ext/standard/tests/array/uksort_variation1.phpt @@ -0,0 +1,225 @@ +--TEST-- +Test uksort() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for array_arg + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( uksort($value, $cmp_function) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing uksort() : usage variation *** + +--int 0-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--int 1-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--int 12345-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--int -12345-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--float 10.5-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--float -10.5-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--float 12.3456789000e10-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--float -12.3456789000e10-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--float .5-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--uppercase NULL-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--lowercase null-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--lowercase true-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--lowercase false-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--uppercase TRUE-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--uppercase FALSE-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--empty string DQ-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--string DQ-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--string SQ-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--mixed case string-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--heredoc-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--undefined var-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) + +--unset var-- + +Warning: uksort(): The argument should be an array in %s on line %d +bool(false) +===DONE=== + diff --git a/ext/standard/tests/array/uksort_variation2.phpt b/ext/standard/tests/array/uksort_variation2.phpt new file mode 100644 index 000000000..e313df31d --- /dev/null +++ b/ext/standard/tests/array/uksort_variation2.phpt @@ -0,0 +1,225 @@ +--TEST-- +Test uksort() function : usage variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for cmp_function + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( uksort($array_arg, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing uksort() : usage variation *** + +--int 0-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--int 1-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--int 12345-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--int -12345-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--float 10.5-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--float -10.5-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--float 12.3456789000e10-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--float -12.3456789000e10-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--float .5-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--empty array-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--int indexed array-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--associative array-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--nested arrays-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--uppercase NULL-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--lowercase null-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--lowercase true-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--lowercase false-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--uppercase TRUE-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--uppercase FALSE-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--empty string DQ-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--empty string SQ-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--instance of classWithToString-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--instance of classWithoutToString-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--undefined var-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) + +--unset var-- + +Warning: uksort(): Invalid comparison function in %s on line %d +bool(false) +===DONE=== + diff --git a/ext/standard/tests/array/usort_basic.phpt b/ext/standard/tests/array/usort_basic.phpt new file mode 100644 index 000000000..eaf30188d --- /dev/null +++ b/ext/standard/tests/array/usort_basic.phpt @@ -0,0 +1,119 @@ +--TEST-- +Test usort() function : basic functionality +--FILE-- + $value2) { + return 1; + } + else + return -1; +} + +// Int array with default keys +$int_values = array(1, 8, 9, 3, 2, 6, 7); + +echo "\n-- Numeric array with default keys --\n"; +var_dump( usort($int_values, 'cmp') ); +var_dump($int_values); + +// String array with default keys +$string_values = array("This", "is", 'a', "test"); + +echo "\n-- String array with default keys --\n"; +var_dump( usort($string_values, 'cmp') ); +var_dump($string_values); + +// Associative array with numeric keys +$numeric_key_arg = array(1=> 1, 2 => 2, 3 => 7, 5 => 4, 4 => 9); + +echo "\n-- Associative array with numeric keys --\n"; +var_dump( usort($numeric_key_arg, 'cmp') ); +var_dump($numeric_key_arg); + +// Associative array with string keys +$string_key_arg = array('one' => 4, 'two' => 2, 'three' => 1, 'four' => 10); + +echo "\n-- Associative array with string keys --\n"; +var_dump( usort($string_key_arg, 'cmp') ); +var_dump($string_key_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : basic functionality *** + +-- Numeric array with default keys -- +bool(true) +array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(6) + [4]=> + int(7) + [5]=> + int(8) + [6]=> + int(9) +} + +-- String array with default keys -- +bool(true) +array(4) { + [0]=> + string(4) "This" + [1]=> + string(1) "a" + [2]=> + string(2) "is" + [3]=> + string(4) "test" +} + +-- Associative array with numeric keys -- +bool(true) +array(5) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(4) + [3]=> + int(7) + [4]=> + int(9) +} + +-- Associative array with string keys -- +bool(true) +array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(4) + [3]=> + int(10) +} +===DONE=== diff --git a/ext/standard/tests/array/usort_error1.phpt b/ext/standard/tests/array/usort_error1.phpt new file mode 100644 index 000000000..42dc6ba3a --- /dev/null +++ b/ext/standard/tests/array/usort_error1.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test usort() function : error conditions - Pass incorrect number of arguments +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing usort() : error conditions *** + +-- Testing usort() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for usort() in %s on line %d +NULL + +-- Testing usort() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for usort() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/usort_error2.phpt b/ext/standard/tests/array/usort_error2.phpt new file mode 100644 index 000000000..916c8f46f --- /dev/null +++ b/ext/standard/tests/array/usort_error2.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test usort() function : error conditions - Pass unknown 'cmp_function' +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +// Initialize 'array_arg' +$array_arg = array(0 => 1, 1 => 10, 2 => 'string', 3 => 3, 4 => 2, 5 => 100, 6 => 25); +$extra_arg = 10; + +// With non existent comparison function +echo "\n-- Testing usort() function with non-existent compare function --\n"; +var_dump( usort($array_arg, 'non_existent') ); + +// With non existent comparison function and extra arguemnt +echo "\n-- Testing usort() function with non-existent compare function and extra argument --\n"; +var_dump( usort($array_arg, 'non_existent', $extra_arg) ); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : error conditions *** + +-- Testing usort() function with non-existent compare function -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Testing usort() function with non-existent compare function and extra argument -- + +Warning: Wrong parameter count for usort() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/array/usort_object1.phpt b/ext/standard/tests/array/usort_object1.phpt new file mode 100644 index 000000000..39c6ec60a --- /dev/null +++ b/ext/standard/tests/array/usort_object1.phpt @@ -0,0 +1,141 @@ +--TEST-- +Test usort() function : object functionality - different number of properties +--FILE-- + $value2) { + return 1; + } + else + return -1; +} + +// comparison function for SimpleClass2 objects which has more than one member +function multiple_cmp($value1, $value2) +{ + if($value1->getValue() == $value2->getValue()) + return 0; + else if($value1->getValue() > $value2->getValue()) + return 1; + else + return -1; +} + +// Simple class with single property +class SimpleClass1 +{ + private $int_value; + + public function __construct($value) { + $this->int_value = $value; + } +} + +// Simple class with more than one property +class SimpleClass2 +{ + private $int_value; + protected $float_value; + public $string_value; + public function __construct($int, $float, $str) { + $this->int_value = $int; + $this->float_value = $float; + $this->string_value = $str; + } + public function getValue() { + return $this->int_value; + } +} + +// array of SimpleClass objects with only one property +$array_arg = array( +0 => new SimpleClass1(10), +1 => new SimpleClass1(1), +2 => new SimpleClass1(100), +3 => new SimpleClass1(50) +); +var_dump( usort($array_arg, 'simple_cmp') ); +var_dump($array_arg); + +// array of SimpleClass objects having more than one properties +$array_arg = array( +0 => new SimpleClass2(2, 3.4, "mango"), +1 => new SimpleClass2(10, 1.2, "apple"), +2 => new SimpleClass2(5, 2.5, "orange"), +); +var_dump( usort($array_arg, 'multiple_cmp') ); +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : object functionality *** +bool(true) +array(4) { + [0]=> + object(SimpleClass1)#%d (1) { + ["int_value:private"]=> + int(1) + } + [1]=> + object(SimpleClass1)#%d (1) { + ["int_value:private"]=> + int(10) + } + [2]=> + object(SimpleClass1)#%d (1) { + ["int_value:private"]=> + int(50) + } + [3]=> + object(SimpleClass1)#%d (1) { + ["int_value:private"]=> + int(100) + } +} +bool(true) +array(3) { + [0]=> + object(SimpleClass2)#%d (3) { + ["int_value:private"]=> + int(2) + ["float_value:protected"]=> + float(3.4) + ["string_value"]=> + string(5) "mango" + } + [1]=> + object(SimpleClass2)#%d (3) { + ["int_value:private"]=> + int(5) + ["float_value:protected"]=> + float(2.5) + ["string_value"]=> + string(6) "orange" + } + [2]=> + object(SimpleClass2)#%d (3) { + ["int_value:private"]=> + int(10) + ["float_value:protected"]=> + float(1.2) + ["string_value"]=> + string(5) "apple" + } +} +===DONE=== diff --git a/ext/standard/tests/array/usort_object2.phpt b/ext/standard/tests/array/usort_object2.phpt new file mode 100644 index 000000000..00d302f35 --- /dev/null +++ b/ext/standard/tests/array/usort_object2.phpt @@ -0,0 +1,165 @@ +--TEST-- +Test usort() function : object functionality - Different types of classes +--FILE-- + $value2) { + return 1; + } + else + return -1; +} + +// Class without any member +class EmptyClass +{ +} + +// Class with static member +class StaticClass +{ + public static $static_value; + public function __construct($value) { + StaticClass::$static_value = $value; + } +} + +// Abstract class +abstract class AbstractClass +{ + public $pub_value; + public abstract function abstractMethod(); +} + +// Child class extending abstract class +class ChildClass extends AbstractClass +{ + public $child_value = 100; + public function abstractMethod() { + $pub_value = 5; + } + public function __construct($value) { + $this->child_value = $value; + } +} + +// Testing uasort with StaticClass objects as elements of 'array_arg' +echo "-- Testing usort() with StaticClass objects --\n"; +$array_arg = array( + 0 => new StaticClass(20), + 1 => new StaticClass(50), + 2 => new StaticClass(15), + 3 => new StaticClass(70), +); +var_dump( usort($array_arg, 'cmp_function') ); +var_dump($array_arg); + +// Testing uasort with EmptyClass objects as elements of 'array_arg' +echo "-- Testing usort() with EmptyClass objects --\n"; +$array_arg = array( + 0 => new EmptyClass(), + 1 => new EmptyClass(), + 2 => new EmptyClass(), + 3 => new EmptyClass(), +); +var_dump( usort($array_arg, 'cmp_function') ); +var_dump($array_arg); + +// Testing uasort with ChildClass objects as elements of 'array_arg' +echo "-- Testing usort() with ChildClass objects --\n"; +$array_arg = array( + 0 => new ChildClass(20), + 1 => new ChildClass(500), + 2 => new ChildClass(15), + 3 => new ChildClass(700), +); +var_dump( usort($array_arg, 'cmp_function') ); +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : object functionality *** +-- Testing usort() with StaticClass objects -- +bool(true) +array(4) { + [0]=> + object(StaticClass)#%d (0) { + } + [1]=> + object(StaticClass)#%d (0) { + } + [2]=> + object(StaticClass)#%d (0) { + } + [3]=> + object(StaticClass)#%d (0) { + } +} +-- Testing usort() with EmptyClass objects -- +bool(true) +array(4) { + [0]=> + object(EmptyClass)#%d (0) { + } + [1]=> + object(EmptyClass)#%d (0) { + } + [2]=> + object(EmptyClass)#%d (0) { + } + [3]=> + object(EmptyClass)#%d (0) { + } +} +-- Testing usort() with ChildClass objects -- +bool(true) +array(4) { + [0]=> + object(ChildClass)#%d (2) { + ["child_value"]=> + int(15) + ["pub_value"]=> + NULL + } + [1]=> + object(ChildClass)#%d (2) { + ["child_value"]=> + int(20) + ["pub_value"]=> + NULL + } + [2]=> + object(ChildClass)#%d (2) { + ["child_value"]=> + int(500) + ["pub_value"]=> + NULL + } + [3]=> + object(ChildClass)#%d (2) { + ["child_value"]=> + int(700) + ["pub_value"]=> + NULL + } +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/usort_variation1.phpt b/ext/standard/tests/array/usort_variation1.phpt new file mode 100644 index 000000000..809e73025 --- /dev/null +++ b/ext/standard/tests/array/usort_variation1.phpt @@ -0,0 +1,234 @@ +--TEST-- +Test usort() function : usage variations - Pass different data types as $array_arg arg +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +//get an unset variable +$unset_var = 10; +unset ($unset_var); + +// get a class +class classA +{ + public function __toString() { + return "Class A object"; + } +} + +// heredoc string +$heredoc = << +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variations *** + +-- Iteration 1 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 18 -- +bool(true) + +-- Iteration 19 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 22 -- +bool(true) + +-- Iteration 23 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: usort(): The argument should be an array in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/usort_variation10.phpt b/ext/standard/tests/array/usort_variation10.phpt new file mode 100644 index 000000000..b343419ce --- /dev/null +++ b/ext/standard/tests/array/usort_variation10.phpt @@ -0,0 +1,79 @@ +--TEST-- +Test usort() function : usage variations - duplicate keys and values +--FILE-- + $value2) { + return 1; + } + else + return -1; +} + +// Array with duplicate string and integer keys and values +$array_arg = array(0 => 2, "a" => 8, "d" => 9, + 3 => 3, 5 => 2, "o" => 6, + "z" => -99, 0 => 1, "z" => 3); + +echo "\n-- Array with duplicate keys --\n"; +var_dump( usort($array_arg, 'cmp') ); +var_dump($array_arg); + +// Array with default and assigned keys +$array_arg = array(0 => "Banana", 1 => "Mango", "Orange", 2 => "Apple", "Pineapple"); + +echo "\n-- Array with default/assigned keys --\n"; +var_dump( usort($array_arg, 'cmp') ); +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Array with duplicate keys -- +bool(true) +array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(3) + [4]=> + int(6) + [5]=> + int(8) + [6]=> + int(9) +} + +-- Array with default/assigned keys -- +bool(true) +array(4) { + [0]=> + string(5) "Apple" + [1]=> + string(6) "Banana" + [2]=> + string(5) "Mango" + [3]=> + string(9) "Pineapple" +} +===DONE=== diff --git a/ext/standard/tests/array/usort_variation2.phpt b/ext/standard/tests/array/usort_variation2.phpt new file mode 100644 index 000000000..0301ce024 --- /dev/null +++ b/ext/standard/tests/array/usort_variation2.phpt @@ -0,0 +1,242 @@ +--TEST-- +Test usort() function : usage variations - Pass different data types as $cmp_function arg +--FILE-- + 1, 1 => -1, 2 => 3, 3 => 10, 4 => 4, 5 => 2, 6 => 8, 7 => 5); + +// Get an unset variable +$unset_var = 10; +unset ($unset_var); + +// Get resource variable +$fp = fopen(__FILE__,'r'); + +// different values for $cmp_function +$inputs = array( + + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 10.1234567e8, + 10.7654321E-8, + .5, + + // array data +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // string data + "string", + 'string', + + // object data +/*25*/ new MyClass(), + + // resource data + $fp, + + // undefined data + @$undefined_var, + + // unset data +/*28*/ @$unset_var, +); + +// loop through each element of $inputs to check the behavior of usort() +$iterator = 1; +foreach($inputs as $input) { + echo "\n-- Iteration $iterator --\n"; + var_dump( usort($array_arg, $input) ); + $iterator++; +}; + +//closing resource +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Iteration 1 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 26 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 27 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Iteration 28 -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/usort_variation3.phpt b/ext/standard/tests/array/usort_variation3.phpt new file mode 100644 index 000000000..3758fe9c9 --- /dev/null +++ b/ext/standard/tests/array/usort_variation3.phpt @@ -0,0 +1,115 @@ +--TEST-- +Test usort() function : usage variations - diff. array values +--FILE-- + $value2) { + return -1; + } + else { + return 1; + } +} + +// different heredoc strings + +// single line heredoc string +$simple_heredoc = << 9, + 8.9 => 8, + 012 => 7, + 0x34 => 6, + + // string keys + 'key' => 5, //single quoted key + "two" => 4, //double quoted key + " " => 0, // space as key + + // bool keys + TRUE => 100, + FALSE => 25, + + // null keys + NULL => 35, + + // binary key + "a".chr(0)."b" => 45, + b"binary" => 30, + + //heredoc keys + $simple_heredoc => 75, + $multiline_heredoc => 200, + + // default key + 1, +); + +var_dump( usort($array_arg, 'cmp_function') ); +echo "\n-- Sorted array after usort() function call --\n"; +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** +bool(true) + +-- Sorted array after usort() function call -- +array(15) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(75) + [3]=> + int(45) + [4]=> + int(35) + [5]=> + int(30) + [6]=> + int(25) + [7]=> + int(9) + [8]=> + int(8) + [9]=> + int(7) + [10]=> + int(6) + [11]=> + int(5) + [12]=> + int(4) + [13]=> + int(1) + [14]=> + int(0) +} +===DONE=== diff --git a/ext/standard/tests/array/usort_variation4.phpt b/ext/standard/tests/array/usort_variation4.phpt new file mode 100644 index 000000000..4de45cc61 --- /dev/null +++ b/ext/standard/tests/array/usort_variation4.phpt @@ -0,0 +1,155 @@ +--TEST-- +Test usort() function : usage variations - numeric data +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +// Int array +$int_values = array(0 => 3, 1 => 2, 3 => 100, + 4 => 150, 5 => 25, 6 => 350, + 7 => 0, 8 => -3, 9 => -1200); + +echo "\n-- Sorting Integer array --\n"; +var_dump( usort($int_values, 'cmp_function') ); +var_dump($int_values); + +// Octal array +$octal_values = array(0 => 056, 1 => 023, 2 => 090, + 3 => 015, 4 => -045, 5 => 01, 6 => -078); + +echo "\n-- Sorting Octal array --\n"; +var_dump( usort($octal_values, 'cmp_function') ); +var_dump($octal_values); + +// Hexadecimal array +$hex_values = array(0 => 0xAE, 1 => 0x2B, 2 => 0X10, + 3 => -0xCF, 4 => 0X12, 5 => -0XF2); + +echo "\n-- Sorting Hex array --\n"; +var_dump( usort($hex_values, 'cmp_function') ); +var_dump($hex_values); + +// Float array +$float_values = array( 0 => 10.2, 1 => 2.4, 2 => -3.4, + 3 => 0, 4 => 0.5, 5 => 7.3e3, 6 => -9.34E-2); + +echo "\n-- Sorting Float array --\n"; +var_dump( usort($float_values, 'cmp_function') ); +var_dump($float_values); + +// empty array +$empty_array = array(); + +echo "\n-- Sorting empty array --\n"; +var_dump( usort($empty_array, 'cmp_function') ); +var_dump($empty_array); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Sorting Integer array -- +bool(true) +array(9) { + [0]=> + int(-1200) + [1]=> + int(-3) + [2]=> + int(0) + [3]=> + int(2) + [4]=> + int(3) + [5]=> + int(25) + [6]=> + int(100) + [7]=> + int(150) + [8]=> + int(350) +} + +-- Sorting Octal array -- +bool(true) +array(7) { + [0]=> + int(-37) + [1]=> + int(-7) + [2]=> + int(0) + [3]=> + int(1) + [4]=> + int(13) + [5]=> + int(19) + [6]=> + int(46) +} + +-- Sorting Hex array -- +bool(true) +array(6) { + [0]=> + int(-242) + [1]=> + int(-207) + [2]=> + int(16) + [3]=> + int(18) + [4]=> + int(43) + [5]=> + int(174) +} + +-- Sorting Float array -- +bool(true) +array(7) { + [0]=> + float(-3.4) + [1]=> + float(-0.0934) + [2]=> + int(0) + [3]=> + float(0.5) + [4]=> + float(2.4) + [5]=> + float(10.2) + [6]=> + float(7300) +} + +-- Sorting empty array -- +bool(true) +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/array/usort_variation5.phpt b/ext/standard/tests/array/usort_variation5.phpt new file mode 100644 index 000000000..922321c23 --- /dev/null +++ b/ext/standard/tests/array/usort_variation5.phpt @@ -0,0 +1,143 @@ +--TEST-- +Test usort() function : usage variations - string data +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +// Different heredoc strings to be sorted +$empty_heredoc =<< ' ', 1 => 'test', 3 => 'Hello', 4 => 'HELLO', + 5 => '', 6 => '\t', 7 => '0', 8 => '123Hello', + 9 => '\'', 10 => '@#$%' +); + +echo "\n-- Sorting Single Quoted String values --\n"; +var_dump( usort($single_quoted_values, 'cmp_function') ); +var_dump($single_quoted_values); + +// Double quoted strings +$double_quoted_values = array( + 0 => " ", 1 => "test", 3 => "Hello", 4 => "HELLO", + 5 => "", 6 => "\t", 7 => "0", 8 => "123Hello", + 9 => "\"", 10 => "@#$%" +); + +echo "\n-- Sorting Double Quoted String values --\n"; +var_dump( usort($double_quoted_values, 'cmp_function') ); +var_dump($double_quoted_values); + +// Heredoc strings +$heredoc_values = array(0 => $empty_heredoc, 1 => $simple_heredoc1, + 2 => $simple_heredoc2, 3 => $multiline_heredoc); + +echo "\n-- Sorting Heredoc String values --\n"; +var_dump( usort($heredoc_values, 'cmp_function') ); +var_dump($heredoc_values); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Sorting Single Quoted String values -- +bool(true) +array(10) { + [0]=> + string(0) "" + [1]=> + string(1) " " + [2]=> + string(1) "'" + [3]=> + string(1) "0" + [4]=> + string(8) "123Hello" + [5]=> + string(4) "@#$%" + [6]=> + string(5) "HELLO" + [7]=> + string(5) "Hello" + [8]=> + string(2) "\t" + [9]=> + string(4) "test" +} + +-- Sorting Double Quoted String values -- +bool(true) +array(10) { + [0]=> + string(0) "" + [1]=> + string(1) " " + [2]=> + string(1) " " + [3]=> + string(1) """ + [4]=> + string(1) "0" + [5]=> + string(8) "123Hello" + [6]=> + string(4) "@#$%" + [7]=> + string(5) "HELLO" + [8]=> + string(5) "Hello" + [9]=> + string(4) "test" +} + +-- Sorting Heredoc String values -- +bool(true) +array(4) { + [0]=> + string(0) "" + [1]=> + string(7) "HEREDOC" + [2]=> + string(7) "Heredoc" + [3]=> + string(%d) "heredoc string with!@# and 123 +Test this!!!" +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/usort_variation6.phpt b/ext/standard/tests/array/usort_variation6.phpt new file mode 100644 index 000000000..ab4b3d410 --- /dev/null +++ b/ext/standard/tests/array/usort_variation6.phpt @@ -0,0 +1,139 @@ +--TEST-- +Test usort() function : usage variations - multi-dimensional arrays +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +$array_args = array( + 0 => array(2, 10, -1), + 1 => array(100), + 2 => array(), + 3 => array(0), + 4 => array(-1), + 5 => array(-9, 34, 54, 0, 20), + 6 => array(''), + 7 => array("apple", "Apple", "APPLE", "aPPle", "aPpLe") +); + +$temp_array = $array_args; + +echo "\n-- Pass usort() a two-dimensional array --\n"; +// sorting array_arg as whole array +var_dump( usort($temp_array, 'cmp_function') ); + +echo "-- Array after call to usort() --\n"; +var_dump($temp_array); + +echo "\n-- Pass usort() a sub-array --\n"; +var_dump( usort($array_args[5], 'cmp_function') ); + +echo "-- Array after call to usort() --\n"; +var_dump($array_args[5]); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Pass usort() a two-dimensional array -- +bool(true) +-- Array after call to usort() -- +array(8) { + [0]=> + array(0) { + } + [1]=> + array(1) { + [0]=> + int(-1) + } + [2]=> + array(1) { + [0]=> + string(0) "" + } + [3]=> + array(1) { + [0]=> + int(0) + } + [4]=> + array(1) { + [0]=> + int(100) + } + [5]=> + array(3) { + [0]=> + int(2) + [1]=> + int(10) + [2]=> + int(-1) + } + [6]=> + array(5) { + [0]=> + int(-9) + [1]=> + int(34) + [2]=> + int(54) + [3]=> + int(0) + [4]=> + int(20) + } + [7]=> + array(5) { + [0]=> + string(5) "apple" + [1]=> + string(5) "Apple" + [2]=> + string(5) "APPLE" + [3]=> + string(5) "aPPle" + [4]=> + string(5) "aPpLe" + } +} + +-- Pass usort() a sub-array -- +bool(true) +-- Array after call to usort() -- +array(5) { + [0]=> + int(-9) + [1]=> + int(0) + [2]=> + int(20) + [3]=> + int(34) + [4]=> + int(54) +} +===DONE=== diff --git a/ext/standard/tests/array/usort_variation7.phpt b/ext/standard/tests/array/usort_variation7.phpt new file mode 100644 index 000000000..e567341b1 --- /dev/null +++ b/ext/standard/tests/array/usort_variation7.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test usort() function : usage variations - Anonymous comparison function +--FILE-- + $value2) {return 1;} else{return -1;}'; + +$array_arg = array(0 => 100, 1 => 3, 2 => -70, 3 => 24, 4 => 90); + +echo "\n-- Anonymous 'cmp_function' with parameters passed by value --\n"; +var_dump( usort($array_arg, create_function('$value1, $value2',$cmp_function) ) ); +var_dump($array_arg); + +$array_arg = array("b" => "Banana", "m" => "Mango", "a" => "Apple", "p" => "Pineapple"); + +echo "\n-- Anonymous 'cmp_function' with parameters passed by reference --\n"; +var_dump( usort($array_arg, create_function('&$value1, &$value2', $cmp_function) ) ); +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Anonymous 'cmp_function' with parameters passed by value -- +bool(true) +array(5) { + [0]=> + int(-70) + [1]=> + int(3) + [2]=> + int(24) + [3]=> + int(90) + [4]=> + int(100) +} + +-- Anonymous 'cmp_function' with parameters passed by reference -- +bool(true) +array(4) { + [0]=> + string(5) "Apple" + [1]=> + string(6) "Banana" + [2]=> + string(5) "Mango" + [3]=> + string(9) "Pineapple" +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/array/usort_variation8.phpt b/ext/standard/tests/array/usort_variation8.phpt new file mode 100644 index 000000000..2c5c02b14 --- /dev/null +++ b/ext/standard/tests/array/usort_variation8.phpt @@ -0,0 +1,85 @@ +--TEST-- +Test usort() function : usage variations - use built in functions as $cmp_function arg +--FILE-- + "Banana", "m" => "Mango", "a" => "apple", + "p" => "Pineapple", "o" => "orange"); + +// Testing library functions as comparison function +echo "\n-- Testing usort() with built-in 'cmp_function': strcasecmp() --\n"; +$temp_array1 = $array_arg; +var_dump( usort($temp_array1, 'strcasecmp') ); +var_dump($temp_array1); + +echo "\n-- Testing usort() with built-in 'cmp_function': strcmp() --\n"; +$temp_array2 = $array_arg; +var_dump( usort($temp_array2, 'strcmp') ); +var_dump($temp_array2); + +// Testing with language construct as comparison function +echo "\n-- Testing usort() with language construct as 'cmp_function' --\n"; +$temp_array3 = $array_arg; +var_dump( usort($temp_array3, 'echo') ); + +echo "\n-- Testing usort() with language construct as 'cmp_function' --\n"; +$temp_array4 = $array_arg; +var_dump( usort($temp_array4, 'exit') ); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Testing usort() with built-in 'cmp_function': strcasecmp() -- +bool(true) +array(5) { + [0]=> + string(5) "apple" + [1]=> + string(6) "Banana" + [2]=> + string(5) "Mango" + [3]=> + string(6) "orange" + [4]=> + string(9) "Pineapple" +} + +-- Testing usort() with built-in 'cmp_function': strcmp() -- +bool(true) +array(5) { + [0]=> + string(6) "Banana" + [1]=> + string(5) "Mango" + [2]=> + string(9) "Pineapple" + [3]=> + string(5) "apple" + [4]=> + string(6) "orange" +} + +-- Testing usort() with language construct as 'cmp_function' -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) + +-- Testing usort() with language construct as 'cmp_function' -- + +Warning: usort(): Invalid comparison function in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/array/usort_variation9.phpt b/ext/standard/tests/array/usort_variation9.phpt new file mode 100644 index 000000000..6a067992e --- /dev/null +++ b/ext/standard/tests/array/usort_variation9.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test usort() function : usage variations - referenced variables +--FILE-- + $value2) { + return 1; + } + else { + return -1; + } +} + +// different variables which are used as elements of $array_arg +$value1 = -5; +$value2 = 100; +$value3 = 0; +$value4 = &$value1; + +// array_args an array containing elements with reference variables +$array_arg = array( + 0 => 10, + 1 => &$value4, + 2 => &$value2, + 3 => 200, + 4 => &$value3, +); + +echo "\n-- Sorting \$array_arg containing different references --\n"; +var_dump( usort($array_arg, 'cmp_function') ); +var_dump($array_arg); +?> +===DONE=== +--EXPECTF-- +*** Testing usort() : usage variation *** + +-- Sorting $array_arg containing different references -- +bool(true) +array(5) { + [0]=> + &int(-5) + [1]=> + &int(0) + [2]=> + int(10) + [3]=> + &int(100) + [4]=> + int(200) +} +===DONE=== diff --git a/ext/standard/tests/array/var_export.phpt b/ext/standard/tests/array/var_export.phpt index acfec7699..8caf40789 100644 --- a/ext/standard/tests/array/var_export.phpt +++ b/ext/standard/tests/array/var_export.phpt @@ -7,5 +7,7 @@ var_export($a); ?> --EXPECT-- stdClass::__set_state(array( + 0 => 1, + 1 => 3, 'foo' => 'bar', )) diff --git a/ext/standard/tests/assert/assert.phpt b/ext/standard/tests/assert/assert.phpt index bced47d8f..44fb6091d 100644 --- a/ext/standard/tests/assert/assert.phpt +++ b/ext/standard/tests/assert/assert.phpt @@ -2,6 +2,11 @@ assert() --INI-- error_reporting = 2039 +assert.active = 0 +assert.warning = 1 +assert.callback = +assert.bail = 0 +assert.quiet_eval = 0 --FILE-- strlen($b) ? 1 : -1; +} +$entries = array(); while(FALSE !== ($file = readdir($dir_handle))){ - var_dump($file); + $entries[] = $file; } closedir($dir_handle); + +usort($entries, "mysort"); +foreach($entries as $entry) { + var_dump($entry); +} ?> ===DONE=== --CLEAN-- diff --git a/ext/standard/tests/dir/rewinddir_basic.phpt b/ext/standard/tests/dir/rewinddir_basic.phpt index e9c027818..2d1f783f5 100644 --- a/ext/standard/tests/dir/rewinddir_basic.phpt +++ b/ext/standard/tests/dir/rewinddir_basic.phpt @@ -32,22 +32,24 @@ echo "\n-- Read and rewind first directory (argument supplied) --\n"; while(FALSE !== $file1 = readdir($dh1)) { $data[] = $file1; } +$first = $data[0]; sort($data); var_dump($data); var_dump(rewinddir($dh1)); -var_dump(readdir($dh1)); +var_dump(readdir($dh1) == $first); $data = array(); echo "\n-- Read and rewind second directory (no argument supplied) --\n"; while(FALSE !== $file2 = readdir()) { $data[] = $file2; } +$first = $data[0]; sort($data); var_dump($data); var_dump(rewinddir()); -var_dump(readdir()); +var_dump(readdir() == $first); closedir($dh1); closedir($dh2); @@ -78,7 +80,7 @@ array(3) { string(9) "file1.tmp" } NULL -string(1) "." +bool(true) -- Read and rewind second directory (no argument supplied) -- array(3) { @@ -90,5 +92,5 @@ array(3) { string(9) "file2.tmp" } NULL -string(1) "." +bool(true) ===DONE=== diff --git a/ext/standard/tests/dir/rewinddir_variation2.phpt b/ext/standard/tests/dir/rewinddir_variation2.phpt index 37ff324ee..7594cc220 100644 --- a/ext/standard/tests/dir/rewinddir_variation2.phpt +++ b/ext/standard/tests/dir/rewinddir_variation2.phpt @@ -36,7 +36,7 @@ rmdir($dir_path); -- Create the directory handle, read and close the directory -- resource(%d) of type (stream) -string(1) "." +string(%d) "%s" -- Call to rewinddir() -- diff --git a/ext/standard/tests/directory/DirectoryClass_basic_001.phpt b/ext/standard/tests/directory/DirectoryClass_basic_001.phpt new file mode 100644 index 000000000..e8ffd5752 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_basic_001.phpt @@ -0,0 +1,53 @@ +--TEST-- +Directory class behaviour. +--FILE-- +read()); + +?> +--EXPECTF-- +Structure of Directory class: +Class [ class Directory ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [3] { + Method [ public method close ] { + } + + Method [ public method rewind ] { + } + + Method [ public method read ] { + } + } +} +Cannot instantiate a valid Directory directly: +object(Directory)#%d (0) { +} + +Warning: Directory::read(): Unable to find my handle property in %s on line 15 +bool(false) \ No newline at end of file diff --git a/ext/standard/tests/directory/DirectoryClass_error_001.phpt b/ext/standard/tests/directory/DirectoryClass_error_001.phpt new file mode 100644 index 000000000..b435d9e66 --- /dev/null +++ b/ext/standard/tests/directory/DirectoryClass_error_001.phpt @@ -0,0 +1,60 @@ +--TEST-- +Directory class behaviour. +--FILE-- + Try all methods with bad handle:\n"; +$d = new Directory(getcwd()); +$d->handle = "Havoc!"; +var_dump($d->read()); +var_dump($d->rewind()); +var_dump($d->close()); + +echo "\n--> Try all methods with no handle:\n"; +$d = new Directory(getcwd()); +unset($d->handle); +var_dump($d->read()); +var_dump($d->rewind()); +var_dump($d->close()); + +echo "\n--> Try all methods with wrong number of args:\n"; +$d = new Directory(getcwd()); +var_dump($d->read(1,2)); +var_dump($d->rewind(1,2)); +var_dump($d->close(1,2)); + +?> +--EXPECTF-- + +--> Try all methods with bad handle: + +Warning: Directory::read(): supplied argument is not a valid Directory resource in %s on line 6 +bool(false) + +Warning: Directory::rewind(): supplied argument is not a valid Directory resource in %s on line 7 +bool(false) + +Warning: Directory::close(): supplied argument is not a valid Directory resource in %s on line 8 +bool(false) + +--> Try all methods with no handle: + +Warning: Directory::read(): Unable to find my handle property in %s on line 13 +bool(false) + +Warning: Directory::rewind(): Unable to find my handle property in %s on line 14 +bool(false) + +Warning: Directory::close(): Unable to find my handle property in %s on line 15 +bool(false) + +--> Try all methods with wrong number of args: + +Warning: Wrong parameter count for Directory::read() in %s on line 19 +NULL + +Warning: Wrong parameter count for Directory::rewind() in %s on line 20 +NULL + +Warning: Wrong parameter count for Directory::close() in %s on line 21 +NULL \ No newline at end of file diff --git a/ext/standard/tests/directory/directory_constants-win32.phpt b/ext/standard/tests/directory/directory_constants-win32.phpt new file mode 100644 index 000000000..6a9a066d6 --- /dev/null +++ b/ext/standard/tests/directory/directory_constants-win32.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test that the Directory extension constants are correctly defined. +--SKIPIF-- + +--FILE-- + +--EXPECT-- +\ +; +done diff --git a/ext/standard/tests/directory/directory_constants.phpt b/ext/standard/tests/directory/directory_constants.phpt new file mode 100644 index 000000000..f8e143bc1 --- /dev/null +++ b/ext/standard/tests/directory/directory_constants.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test that the Directory extension constants are correctly defined. +--SKIPIF-- + +--FILE-- + +--EXPECT-- +/ +: +done diff --git a/ext/standard/tests/file/001-win32.phpt b/ext/standard/tests/file/001-win32.phpt index 09ab2b7a1..69e82ab89 100644 --- a/ext/standard/tests/file/001-win32.phpt +++ b/ext/standard/tests/file/001-win32.phpt @@ -10,7 +10,6 @@ if (substr(PHP_OS, 0, 3) != 'WIN') { +--SKIPIF-- + +--FILE-- + "; + echo fileatime($filename)."\n"; + clearstatcache(); + echo "-- File modification time is => "; + echo filemtime($filename)."\n"; + clearstatcache(); + echo "-- inode change time is => "; + echo filectime($filename)."\n"; + clearstatcache(); + + +} + +echo "*** Testing fileattime(), filemtime(), filectime() & touch() : usage variations ***\n"; +echo "\n*** testing file info ***"; +stat_fn(NULL); +stat_fn(false); +stat_fn(''); +stat_fn(' '); +stat_fn('|'); +echo "\n*** testing touch ***"; +var_dump(touch(NULL)); +var_dump(touch(false)); +var_dump(touch('')); + +//php generates permission denied, we generate No such file or dir. +var_dump(touch(' ')); +var_dump(touch('|')); + + +echo "Done"; +?> +--EXPECTF-- +*** Testing fileattime(), filemtime(), filectime() & touch() : usage variations *** + +*** testing file info *** +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File ' ' -- +-- File access time is => +Warning: fileatime(): stat failed for in %s on line %d + +-- File modification time is => +Warning: filemtime(): stat failed for in %s on line %d + +-- inode change time is => +Warning: filectime(): stat failed for in %s on line %d + + +-- File '|' -- +-- File access time is => +Warning: fileatime(): stat failed for | in %s on line %d + +-- File modification time is => +Warning: filemtime(): stat failed for | in %s on line %d + +-- inode change time is => +Warning: filectime(): stat failed for | in %s on line %d + + +*** testing touch *** +Warning: touch(): Unable to create file because No such file or directory in %s on line %d +bool(false) + +Warning: touch(): Unable to create file because No such file or directory in %s on line %d +bool(false) + +Warning: touch(): Unable to create file because No such file or directory in %s on line %d +bool(false) + +Warning: touch(): Unable to create file because %s in %s on line %d +bool(false) + +Warning: touch(): Unable to create file | because %s in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/file/005_variation2.phpt b/ext/standard/tests/file/005_variation2.phpt new file mode 100644 index 000000000..d70ce1251 --- /dev/null +++ b/ext/standard/tests/file/005_variation2.phpt @@ -0,0 +1,113 @@ +--TEST-- +Test fileatime(), filemtime(), filectime() & touch() functions : usage variation +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + "; + echo fileatime($filename)."\n"; + clearstatcache(); + echo "-- File modification time is => "; + echo filemtime($filename)."\n"; + clearstatcache(); + echo "-- inode change time is => "; + echo filectime($filename)."\n"; + clearstatcache(); + + +} + +echo "*** Testing fileattime(), filemtime(), filectime() & touch() : usage variations ***\n"; +echo "\n*** testing touch ***\n"; +var_dump(touch(NULL)); +var_dump(touch(false)); +var_dump(touch('')); +var_dump(touch(' ')); +var_dump(touch('|')); + +echo "\n*** testing file info ***"; +stat_fn(NULL); +stat_fn(false); +stat_fn(''); +stat_fn(' '); +stat_fn('|'); + +var_dump(unlink(' ')); +var_dump(unlink('|')); + +echo "Done"; +?> +--EXPECTF-- +*** Testing fileattime(), filemtime(), filectime() & touch() : usage variations *** + +*** testing touch *** + +Warning: touch(): Unable to create file because %s in %s on line %d +bool(false) + +Warning: touch(): Unable to create file because %s in %s on line %d +bool(false) + +Warning: touch(): Unable to create file because %s in %s on line %d +bool(false) +bool(true) +bool(true) + +*** testing file info *** +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File '' -- +-- File access time is => +-- File modification time is => +-- inode change time is => + +-- File ' ' -- +-- File access time is => %d +-- File modification time is => %d +-- inode change time is => %d + +-- File '|' -- +-- File access time is => %d +-- File modification time is => %d +-- inode change time is => %d +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/007_error.phpt b/ext/standard/tests/file/007_error.phpt index bf976093a..82cf7278f 100644 --- a/ext/standard/tests/file/007_error.phpt +++ b/ext/standard/tests/file/007_error.phpt @@ -65,6 +65,7 @@ for($loop_counter = 1; $loop_counter <= count($invalid_args); $loop_counter++) { } ?> +===Done=== --EXPECTF-- *** Testing error conditions for fopen(), fclsoe() & feof() *** @@ -74,7 +75,7 @@ bool(false) Warning: fopen() expects at least 2 parameters, 0 given in %s on line %d bool(false) -Warning: fclose(): 5 is not a valid stream resource in %s on line %d +Warning: fclose(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d @@ -83,7 +84,7 @@ bool(false) Warning: Wrong parameter count for fclose() in %s on line %d NULL -Warning: feof(): 5 is not a valid stream resource in %s on line %d +Warning: feof(): %d is not a valid stream resource in %s on line %d bool(false) Warning: feof(): supplied argument is not a valid stream resource in %s on line %d @@ -162,6 +163,8 @@ bool(false) Warning: feof(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Iteration 7 -- + +Warning: fopen(): Filename cannot be empty in %s on line %d bool(false) Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d @@ -170,6 +173,8 @@ bool(false) Warning: feof(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Iteration 8 -- + +Warning: fopen(): Filename cannot be empty in %s on line %d bool(false) Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d @@ -177,3 +182,4 @@ bool(false) Warning: feof(): supplied argument is not a valid stream resource in %s on line %d bool(false) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/file/basename-win32.phpt b/ext/standard/tests/file/basename-win32.phpt new file mode 100644 index 000000000..5fd0f9659 --- /dev/null +++ b/ext/standard/tests/file/basename-win32.phpt @@ -0,0 +1,341 @@ +--TEST-- +basename +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing basic operations *** + +--Iteration 1-- +string(3) "bar" + +--Iteration 2-- +string(3) "bar" + +--Iteration 3-- +string(3) "bar" + +--Iteration 4-- +string(3) "bar" + +--Iteration 5-- +string(3) "bar" + +--Iteration 6-- +string(3) "bar" + +--Iteration 7-- +string(3) "bar" + +--Iteration 8-- +string(3) "bar" + +--Iteration 9-- +string(3) "bar" + +--Iteration 10-- +string(3) "bar" + +--Iteration 11-- +string(7) "bar.zip" + +--Iteration 12-- +string(3) "bar" + +--Iteration 13-- +string(3) "bar" + +--Iteration 14-- +string(3) "bar" + +--Iteration 15-- +string(3) "bar" + +--Iteration 16-- +string(3) "bar" + +--Iteration 17-- +string(3) "bar" + +--Iteration 18-- +string(3) "bar" + +--Iteration 19-- +string(3) "bar" + +--Iteration 20-- +string(4) ".zip" + +--Iteration 21-- +string(4) ".zip" + +--Iteration 22-- +string(4) ".zip" + +--Iteration 23-- +string(4) ".zip" + +--Iteration 24-- +string(4) ".zip" + +--Iteration 25-- +string(4) ".zip" + +*** Testing possible variations in path and suffix *** + +--Iteration 1-- +string(3) "bar" + +--Iteration 2-- +string(3) "bar" + +--Iteration 3-- +string(3) "bar" + +--Iteration 4-- +string(3) "bar" + +--Iteration 5-- +string(3) "bar" + +--Iteration 6-- +string(7) "bar.tar" + +--Iteration 7-- +string(7) "bar.tar" + +--Iteration 8-- +string(7) "bar.tar" + +--Iteration 9-- +string(7) "bar.tar" + +--Iteration 10-- +string(7) "bar.tar" + +--Iteration 11-- +string(7) "bar.tar" + +--Iteration 12-- +string(4) "10.5" + +--Iteration 13-- +string(2) "10" + +--Iteration 14-- +string(4) "10.5" + +--Iteration 15-- +string(2) "10" + +--Iteration 16-- +string(2) "10" + +--Iteration 17-- +string(4) "10.5" + +--Iteration 18-- +string(4) "10.5" + +--Iteration 19-- +string(6) "10.zip" + +--Iteration 20-- +string(1) "0" + +--Iteration 21-- +string(1) "0" + +--Iteration 22-- +string(7) "bar.zip" + +--Iteration 23-- +string(7) "bar.zip" + +--Iteration 24-- +string(7) "bar.zip" + +--Iteration 25-- +string(1) " " + +--Iteration 26-- +string(1) " " + +--Iteration 27-- +string(0) "" + +--Iteration 28-- +string(1) " " + +--Iteration 29-- +string(1) " " + +--Iteration 30-- +string(0) "" + +--Iteration 31-- +string(0) "" + +--Iteration 32-- +string(0) "" + +*** Testing error conditions *** + +Warning: basename() expects at least 1 parameter, 0 given in %s on line %d +NULL + +Warning: basename() expects at most 2 parameters, 3 given in %s on line %d +NULL + +Warning: basename() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: basename() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: basename() expects parameter 2 to be string, array given in %s on line %d +NULL + +Warning: basename() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: basename() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: basename() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: basename() expects parameter 2 to be string, object given in %s on line %d +NULL +Done diff --git a/ext/standard/tests/file/basename.phpt b/ext/standard/tests/file/basename.phpt new file mode 100644 index 000000000..c0e7498f1 Binary files /dev/null and b/ext/standard/tests/file/basename.phpt differ diff --git a/ext/standard/tests/file/basename_basic-win32.phpt b/ext/standard/tests/file/basename_basic-win32.phpt new file mode 100644 index 000000000..f575c5aa6 --- /dev/null +++ b/ext/standard/tests/file/basename_basic-win32.phpt @@ -0,0 +1,101 @@ +--TEST-- +basename() basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(4) "10.5" +string(4) "10.5" +string(4) "10.5" +string(3) "105" +string(4) "10.5" +string(4) "10.5" +string(4) "10.5" +string(4) "10.5" +string(6) "10.zip" +string(1) "0" +string(1) "0" +string(1) " " +string(1) " " +string(0) "" +string(0) "" +string(0) "" diff --git a/ext/standard/tests/file/basename_basic.phpt b/ext/standard/tests/file/basename_basic.phpt new file mode 100644 index 000000000..68aefb2a3 --- /dev/null +++ b/ext/standard/tests/file/basename_basic.phpt @@ -0,0 +1,101 @@ +--TEST-- +basename() basic functionality +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(3) "bar" +string(8) "\foo\bar" +string(7) "foo\bar" +string(4) "\bar" +string(4) "bar\" +string(5) "\bar\" +string(9) "\foo\bar\" +string(8) "foo\bar\" +string(5) "\bar\" +string(9) "10.5\10.5" +string(4) "10.5" +string(4) "10.5" +string(3) "105" +string(4) "10.5" +string(5) "\10.5" +string(4) "10.5" +string(5) "10.5\" +string(6) "10.zip" +string(1) "0" +string(1) "0" +string(1) " " +string(1) " " +string(0) "" +string(0) "" +string(0) "" diff --git a/ext/standard/tests/file/basename_error.phpt b/ext/standard/tests/file/basename_error.phpt new file mode 100644 index 000000000..9b168188b --- /dev/null +++ b/ext/standard/tests/file/basename_error.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test basename() function : error conditions +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing basename() : error conditions *** + +-- Testing basename() function with Zero arguments -- + +Warning: basename() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing basename() function with more than expected no. of arguments -- + +Warning: basename() expects at most 2 parameters, 3 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/file/basename_variation1-win32.phpt b/ext/standard/tests/file/basename_variation1-win32.phpt new file mode 100644 index 000000000..0f4293e0b --- /dev/null +++ b/ext/standard/tests/file/basename_variation1-win32.phpt @@ -0,0 +1,238 @@ +--TEST-- +basename() with various inputs +--SKIPIF-- + +--FILE-- + +--EXPECT-- +basename for path A:/foo is: +string(3) "foo" +basename for path A:/foo/ is: +string(3) "foo" +basename for path A:/foo\ is: +string(3) "foo" +basename for path A:/foo.bar is: +string(7) "foo.bar" +basename for path A:/foo.bar/ is: +string(7) "foo.bar" +basename for path A:/foo.bar\ is: +string(7) "foo.bar" +basename for path A:/dir/foo.bar is: +string(7) "foo.bar" +basename for path A:/dir\foo.bar is: +string(7) "foo.bar" +basename for path A:/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path A:/dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path Z:/foo is: +string(3) "foo" +basename for path Z:/foo/ is: +string(3) "foo" +basename for path Z:/foo\ is: +string(3) "foo" +basename for path Z:/foo.bar is: +string(7) "foo.bar" +basename for path Z:/foo.bar/ is: +string(7) "foo.bar" +basename for path Z:/foo.bar\ is: +string(7) "foo.bar" +basename for path Z:/dir/foo.bar is: +string(7) "foo.bar" +basename for path Z:/dir\foo.bar is: +string(7) "foo.bar" +basename for path Z:/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path Z:/dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path A:\foo is: +string(3) "foo" +basename for path A:\foo/ is: +string(3) "foo" +basename for path A:\foo\ is: +string(3) "foo" +basename for path A:\foo.bar is: +string(7) "foo.bar" +basename for path A:\foo.bar/ is: +string(7) "foo.bar" +basename for path A:\foo.bar\ is: +string(7) "foo.bar" +basename for path A:\dir/foo.bar is: +string(7) "foo.bar" +basename for path A:\dir\foo.bar is: +string(7) "foo.bar" +basename for path A:\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path A:\dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path http://foo is: +string(3) "foo" +basename for path http://foo/ is: +string(3) "foo" +basename for path http://foo\ is: +string(3) "foo" +basename for path http://foo.bar is: +string(7) "foo.bar" +basename for path http://foo.bar/ is: +string(7) "foo.bar" +basename for path http://foo.bar\ is: +string(7) "foo.bar" +basename for path http://dir/foo.bar is: +string(7) "foo.bar" +basename for path http://dir\foo.bar is: +string(7) "foo.bar" +basename for path http://dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path http://dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path blah://foo is: +string(3) "foo" +basename for path blah://foo/ is: +string(3) "foo" +basename for path blah://foo\ is: +string(3) "foo" +basename for path blah://foo.bar is: +string(7) "foo.bar" +basename for path blah://foo.bar/ is: +string(7) "foo.bar" +basename for path blah://foo.bar\ is: +string(7) "foo.bar" +basename for path blah://dir/foo.bar is: +string(7) "foo.bar" +basename for path blah://dir\foo.bar is: +string(7) "foo.bar" +basename for path blah://dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path blah://dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path blah:\foo is: +string(3) "foo" +basename for path blah:\foo/ is: +string(3) "foo" +basename for path blah:\foo\ is: +string(3) "foo" +basename for path blah:\foo.bar is: +string(7) "foo.bar" +basename for path blah:\foo.bar/ is: +string(7) "foo.bar" +basename for path blah:\foo.bar\ is: +string(7) "foo.bar" +basename for path blah:\dir/foo.bar is: +string(7) "foo.bar" +basename for path blah:\dir\foo.bar is: +string(7) "foo.bar" +basename for path blah:\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path blah:\dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path hostname:foo is: +string(12) "hostname:foo" +basename for path hostname:foo/ is: +string(12) "hostname:foo" +basename for path hostname:foo\ is: +string(12) "hostname:foo" +basename for path hostname:foo.bar is: +string(16) "hostname:foo.bar" +basename for path hostname:foo.bar/ is: +string(16) "hostname:foo.bar" +basename for path hostname:foo.bar\ is: +string(16) "hostname:foo.bar" +basename for path hostname:dir/foo.bar is: +string(7) "foo.bar" +basename for path hostname:dir\foo.bar is: +string(7) "foo.bar" +basename for path hostname:dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path hostname:dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path ~/foo is: +string(3) "foo" +basename for path ~/foo/ is: +string(3) "foo" +basename for path ~/foo\ is: +string(3) "foo" +basename for path ~/foo.bar is: +string(7) "foo.bar" +basename for path ~/foo.bar/ is: +string(7) "foo.bar" +basename for path ~/foo.bar\ is: +string(7) "foo.bar" +basename for path ~/dir/foo.bar is: +string(7) "foo.bar" +basename for path ~/dir\foo.bar is: +string(7) "foo.bar" +basename for path ~/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path ~/dir with spaces\foo.bar is: +string(7) "foo.bar" +basename for path ~\foo is: +string(3) "foo" +basename for path ~\foo/ is: +string(3) "foo" +basename for path ~\foo\ is: +string(3) "foo" +basename for path ~\foo.bar is: +string(7) "foo.bar" +basename for path ~\foo.bar/ is: +string(7) "foo.bar" +basename for path ~\foo.bar\ is: +string(7) "foo.bar" +basename for path ~\dir/foo.bar is: +string(7) "foo.bar" +basename for path ~\dir\foo.bar is: +string(7) "foo.bar" +basename for path ~\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path ~\dir with spaces\foo.bar is: +string(7) "foo.bar" + +done diff --git a/ext/standard/tests/file/basename_variation1.phpt b/ext/standard/tests/file/basename_variation1.phpt new file mode 100644 index 000000000..93582389d --- /dev/null +++ b/ext/standard/tests/file/basename_variation1.phpt @@ -0,0 +1,238 @@ +--TEST-- +basename() with various inputs +--SKIPIF-- + +--FILE-- + +--EXPECT-- +basename for path A:/foo is: +string(3) "foo" +basename for path A:/foo/ is: +string(3) "foo" +basename for path A:/foo\ is: +string(4) "foo\" +basename for path A:/foo.bar is: +string(7) "foo.bar" +basename for path A:/foo.bar/ is: +string(7) "foo.bar" +basename for path A:/foo.bar\ is: +string(8) "foo.bar\" +basename for path A:/dir/foo.bar is: +string(7) "foo.bar" +basename for path A:/dir\foo.bar is: +string(11) "dir\foo.bar" +basename for path A:/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path A:/dir with spaces\foo.bar is: +string(23) "dir with spaces\foo.bar" +basename for path Z:/foo is: +string(3) "foo" +basename for path Z:/foo/ is: +string(3) "foo" +basename for path Z:/foo\ is: +string(4) "foo\" +basename for path Z:/foo.bar is: +string(7) "foo.bar" +basename for path Z:/foo.bar/ is: +string(7) "foo.bar" +basename for path Z:/foo.bar\ is: +string(8) "foo.bar\" +basename for path Z:/dir/foo.bar is: +string(7) "foo.bar" +basename for path Z:/dir\foo.bar is: +string(11) "dir\foo.bar" +basename for path Z:/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path Z:/dir with spaces\foo.bar is: +string(23) "dir with spaces\foo.bar" +basename for path A:\foo is: +string(6) "A:\foo" +basename for path A:\foo/ is: +string(6) "A:\foo" +basename for path A:\foo\ is: +string(7) "A:\foo\" +basename for path A:\foo.bar is: +string(10) "A:\foo.bar" +basename for path A:\foo.bar/ is: +string(10) "A:\foo.bar" +basename for path A:\foo.bar\ is: +string(11) "A:\foo.bar\" +basename for path A:\dir/foo.bar is: +string(7) "foo.bar" +basename for path A:\dir\foo.bar is: +string(14) "A:\dir\foo.bar" +basename for path A:\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path A:\dir with spaces\foo.bar is: +string(26) "A:\dir with spaces\foo.bar" +basename for path http://foo is: +string(3) "foo" +basename for path http://foo/ is: +string(3) "foo" +basename for path http://foo\ is: +string(4) "foo\" +basename for path http://foo.bar is: +string(7) "foo.bar" +basename for path http://foo.bar/ is: +string(7) "foo.bar" +basename for path http://foo.bar\ is: +string(8) "foo.bar\" +basename for path http://dir/foo.bar is: +string(7) "foo.bar" +basename for path http://dir\foo.bar is: +string(11) "dir\foo.bar" +basename for path http://dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path http://dir with spaces\foo.bar is: +string(23) "dir with spaces\foo.bar" +basename for path blah://foo is: +string(3) "foo" +basename for path blah://foo/ is: +string(3) "foo" +basename for path blah://foo\ is: +string(4) "foo\" +basename for path blah://foo.bar is: +string(7) "foo.bar" +basename for path blah://foo.bar/ is: +string(7) "foo.bar" +basename for path blah://foo.bar\ is: +string(8) "foo.bar\" +basename for path blah://dir/foo.bar is: +string(7) "foo.bar" +basename for path blah://dir\foo.bar is: +string(11) "dir\foo.bar" +basename for path blah://dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path blah://dir with spaces\foo.bar is: +string(23) "dir with spaces\foo.bar" +basename for path blah:\foo is: +string(9) "blah:\foo" +basename for path blah:\foo/ is: +string(9) "blah:\foo" +basename for path blah:\foo\ is: +string(10) "blah:\foo\" +basename for path blah:\foo.bar is: +string(13) "blah:\foo.bar" +basename for path blah:\foo.bar/ is: +string(13) "blah:\foo.bar" +basename for path blah:\foo.bar\ is: +string(14) "blah:\foo.bar\" +basename for path blah:\dir/foo.bar is: +string(7) "foo.bar" +basename for path blah:\dir\foo.bar is: +string(17) "blah:\dir\foo.bar" +basename for path blah:\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path blah:\dir with spaces\foo.bar is: +string(29) "blah:\dir with spaces\foo.bar" +basename for path hostname:foo is: +string(12) "hostname:foo" +basename for path hostname:foo/ is: +string(12) "hostname:foo" +basename for path hostname:foo\ is: +string(13) "hostname:foo\" +basename for path hostname:foo.bar is: +string(16) "hostname:foo.bar" +basename for path hostname:foo.bar/ is: +string(16) "hostname:foo.bar" +basename for path hostname:foo.bar\ is: +string(17) "hostname:foo.bar\" +basename for path hostname:dir/foo.bar is: +string(7) "foo.bar" +basename for path hostname:dir\foo.bar is: +string(20) "hostname:dir\foo.bar" +basename for path hostname:dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path hostname:dir with spaces\foo.bar is: +string(32) "hostname:dir with spaces\foo.bar" +basename for path ~/foo is: +string(3) "foo" +basename for path ~/foo/ is: +string(3) "foo" +basename for path ~/foo\ is: +string(4) "foo\" +basename for path ~/foo.bar is: +string(7) "foo.bar" +basename for path ~/foo.bar/ is: +string(7) "foo.bar" +basename for path ~/foo.bar\ is: +string(8) "foo.bar\" +basename for path ~/dir/foo.bar is: +string(7) "foo.bar" +basename for path ~/dir\foo.bar is: +string(11) "dir\foo.bar" +basename for path ~/dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path ~/dir with spaces\foo.bar is: +string(23) "dir with spaces\foo.bar" +basename for path ~\foo is: +string(5) "~\foo" +basename for path ~\foo/ is: +string(5) "~\foo" +basename for path ~\foo\ is: +string(6) "~\foo\" +basename for path ~\foo.bar is: +string(9) "~\foo.bar" +basename for path ~\foo.bar/ is: +string(9) "~\foo.bar" +basename for path ~\foo.bar\ is: +string(10) "~\foo.bar\" +basename for path ~\dir/foo.bar is: +string(7) "foo.bar" +basename for path ~\dir\foo.bar is: +string(13) "~\dir\foo.bar" +basename for path ~\dir with spaces/foo.bar is: +string(7) "foo.bar" +basename for path ~\dir with spaces\foo.bar is: +string(25) "~\dir with spaces\foo.bar" + +done diff --git a/ext/standard/tests/file/basename_variation2-win32.phpt b/ext/standard/tests/file/basename_variation2-win32.phpt new file mode 100644 index 000000000..5e9961b98 --- /dev/null +++ b/ext/standard/tests/file/basename_variation2-win32.phpt @@ -0,0 +1,253 @@ +--TEST-- +Testing basename() with various values for the suffix parameter +--SKIPIF-- + +--FILE-- + +--EXPECT-- +basename for path foo, supplying suffix .bar is: +string(3) "foo" +basename for path foo, supplying suffix .b is: +string(3) "foo" +basename for path foo, supplying suffix . is: +string(3) "foo" +basename for path foo, supplying suffix is: +string(3) "foo" +basename for path foo, supplying suffix foo is: +string(3) "foo" +basename for path foo, supplying suffix foo.bar is: +string(3) "foo" +basename for path foo, supplying suffix foo/bar is: +string(3) "foo" +basename for path foo, supplying suffix foo\bar is: +string(3) "foo" +basename for path foo, supplying suffix / is: +string(3) "foo" +basename for path foo, supplying suffix \ is: +string(3) "foo" +basename for path foo/, supplying suffix .bar is: +string(3) "foo" +basename for path foo/, supplying suffix .b is: +string(3) "foo" +basename for path foo/, supplying suffix . is: +string(3) "foo" +basename for path foo/, supplying suffix is: +string(3) "foo" +basename for path foo/, supplying suffix foo is: +string(3) "foo" +basename for path foo/, supplying suffix foo.bar is: +string(3) "foo" +basename for path foo/, supplying suffix foo/bar is: +string(3) "foo" +basename for path foo/, supplying suffix foo\bar is: +string(3) "foo" +basename for path foo/, supplying suffix / is: +string(3) "foo" +basename for path foo/, supplying suffix \ is: +string(3) "foo" +basename for path foo\, supplying suffix .bar is: +string(3) "foo" +basename for path foo\, supplying suffix .b is: +string(3) "foo" +basename for path foo\, supplying suffix . is: +string(3) "foo" +basename for path foo\, supplying suffix is: +string(3) "foo" +basename for path foo\, supplying suffix foo is: +string(3) "foo" +basename for path foo\, supplying suffix foo.bar is: +string(3) "foo" +basename for path foo\, supplying suffix foo/bar is: +string(3) "foo" +basename for path foo\, supplying suffix foo\bar is: +string(3) "foo" +basename for path foo\, supplying suffix / is: +string(3) "foo" +basename for path foo\, supplying suffix \ is: +string(3) "foo" +basename for path foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix .bar is: +string(3) "foo" +basename for path foo.bar/, supplying suffix .b is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix . is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix / is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix \ is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix .bar is: +string(3) "foo" +basename for path foo.bar\, supplying suffix .b is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix . is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix foo is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix / is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir/foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir\foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir with spaces/foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir with spaces\foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix \ is: +string(7) "foo.bar" + +done diff --git a/ext/standard/tests/file/basename_variation2.phpt b/ext/standard/tests/file/basename_variation2.phpt new file mode 100644 index 000000000..96cfd6505 --- /dev/null +++ b/ext/standard/tests/file/basename_variation2.phpt @@ -0,0 +1,253 @@ +--TEST-- +Testing basename() with various values for the suffix parameter +--SKIPIF-- + +--FILE-- + +--EXPECT-- +basename for path foo, supplying suffix .bar is: +string(3) "foo" +basename for path foo, supplying suffix .b is: +string(3) "foo" +basename for path foo, supplying suffix . is: +string(3) "foo" +basename for path foo, supplying suffix is: +string(3) "foo" +basename for path foo, supplying suffix foo is: +string(3) "foo" +basename for path foo, supplying suffix foo.bar is: +string(3) "foo" +basename for path foo, supplying suffix foo/bar is: +string(3) "foo" +basename for path foo, supplying suffix foo\bar is: +string(3) "foo" +basename for path foo, supplying suffix / is: +string(3) "foo" +basename for path foo, supplying suffix \ is: +string(3) "foo" +basename for path foo/, supplying suffix .bar is: +string(3) "foo" +basename for path foo/, supplying suffix .b is: +string(3) "foo" +basename for path foo/, supplying suffix . is: +string(3) "foo" +basename for path foo/, supplying suffix is: +string(3) "foo" +basename for path foo/, supplying suffix foo is: +string(3) "foo" +basename for path foo/, supplying suffix foo.bar is: +string(3) "foo" +basename for path foo/, supplying suffix foo/bar is: +string(3) "foo" +basename for path foo/, supplying suffix foo\bar is: +string(3) "foo" +basename for path foo/, supplying suffix / is: +string(3) "foo" +basename for path foo/, supplying suffix \ is: +string(3) "foo" +basename for path foo\, supplying suffix .bar is: +string(4) "foo\" +basename for path foo\, supplying suffix .b is: +string(4) "foo\" +basename for path foo\, supplying suffix . is: +string(4) "foo\" +basename for path foo\, supplying suffix is: +string(4) "foo\" +basename for path foo\, supplying suffix foo is: +string(4) "foo\" +basename for path foo\, supplying suffix foo.bar is: +string(4) "foo\" +basename for path foo\, supplying suffix foo/bar is: +string(4) "foo\" +basename for path foo\, supplying suffix foo\bar is: +string(4) "foo\" +basename for path foo\, supplying suffix / is: +string(4) "foo\" +basename for path foo\, supplying suffix \ is: +string(3) "foo" +basename for path foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix .bar is: +string(3) "foo" +basename for path foo.bar/, supplying suffix .b is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix . is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix / is: +string(7) "foo.bar" +basename for path foo.bar/, supplying suffix \ is: +string(7) "foo.bar" +basename for path foo.bar\, supplying suffix .bar is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix .b is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix . is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix foo is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix foo.bar is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix foo/bar is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix foo\bar is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix / is: +string(8) "foo.bar\" +basename for path foo.bar\, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir/foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir/foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir\foo.bar, supplying suffix .bar is: +string(7) "dir\foo" +basename for path dir\foo.bar, supplying suffix .b is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix . is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix foo is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix foo.bar is: +string(4) "dir\" +basename for path dir\foo.bar, supplying suffix foo/bar is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix foo\bar is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix / is: +string(11) "dir\foo.bar" +basename for path dir\foo.bar, supplying suffix \ is: +string(11) "dir\foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix .bar is: +string(3) "foo" +basename for path dir with spaces/foo.bar, supplying suffix .b is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix . is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo.bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo/bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix foo\bar is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix / is: +string(7) "foo.bar" +basename for path dir with spaces/foo.bar, supplying suffix \ is: +string(7) "foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix .bar is: +string(19) "dir with spaces\foo" +basename for path dir with spaces\foo.bar, supplying suffix .b is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix . is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo.bar is: +string(16) "dir with spaces\" +basename for path dir with spaces\foo.bar, supplying suffix foo/bar is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix foo\bar is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix / is: +string(23) "dir with spaces\foo.bar" +basename for path dir with spaces\foo.bar, supplying suffix \ is: +string(23) "dir with spaces\foo.bar" + +done diff --git a/ext/standard/tests/file/basename_variation3.phpt b/ext/standard/tests/file/basename_variation3.phpt new file mode 100644 index 000000000..f01f550a7 --- /dev/null +++ b/ext/standard/tests/file/basename_variation3.phpt @@ -0,0 +1,185 @@ +--TEST-- +Test basename() function : first parameter type variations +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( basename($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing basename() : usage variation *** + +--int 0-- +string(1) "0" + +--int 1-- +string(1) "1" + +--int 12345-- +string(5) "12345" + +--int -12345-- +string(5) "-2345" + +--float 10.5-- +string(4) "10.5" + +--float -10.5-- +string(5) "-10.5" + +--float 12.3456789000e10-- +string(12) "123456789000" + +--float -12.3456789000e10-- +string(13) "-123456789000" + +--float .5-- +string(3) "0.5" + +--empty array-- +Error: 2 - basename() expects parameter 1 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - basename() expects parameter 1 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - basename() expects parameter 1 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - basename() expects parameter 1 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +string(0) "" + +--lowercase null-- +string(0) "" + +--lowercase true-- +string(1) "1" + +--lowercase false-- +string(0) "" + +--uppercase TRUE-- +string(1) "1" + +--uppercase FALSE-- +string(0) "" + +--empty string DQ-- +string(0) "" + +--empty string SQ-- +string(0) "" + +--instance of classWithToString-- +string(14) "Class A object" + +--instance of classWithoutToString-- +Error: 2 - basename() expects parameter 1 to be string, object given, %s(%d) +NULL + +--undefined var-- +string(0) "" + +--unset var-- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/file/basename_variation4.phpt b/ext/standard/tests/file/basename_variation4.phpt new file mode 100644 index 000000000..88ce61a93 --- /dev/null +++ b/ext/standard/tests/file/basename_variation4.phpt @@ -0,0 +1,188 @@ +--TEST-- +Test basename() function : second parameter type variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for suffix + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( basename($path, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing basename() : usage variation *** + +--int 0-- +string(4) "path" + +--int 1-- +string(4) "path" + +--int 12345-- +string(4) "path" + +--int -12345-- +string(4) "path" + +--float 10.5-- +string(4) "path" + +--float -10.5-- +string(4) "path" + +--float 12.3456789000e10-- +string(4) "path" + +--float -12.3456789000e10-- +string(4) "path" + +--float .5-- +string(4) "path" + +--empty array-- +Error: 2 - basename() expects parameter 2 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - basename() expects parameter 2 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - basename() expects parameter 2 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - basename() expects parameter 2 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +string(4) "path" + +--lowercase null-- +string(4) "path" + +--lowercase true-- +string(4) "path" + +--lowercase false-- +string(4) "path" + +--uppercase TRUE-- +string(4) "path" + +--uppercase FALSE-- +string(4) "path" + +--empty string DQ-- +string(4) "path" + +--empty string SQ-- +string(4) "path" + +--instance of classWithToString-- +string(4) "path" + +--instance of classWithoutToString-- +Error: 2 - basename() expects parameter 2 to be string, object given, %s(%d) +NULL + +--undefined var-- +string(4) "path" + +--unset var-- +string(4) "path" +===DONE=== diff --git a/ext/standard/tests/file/bug26615.phpt b/ext/standard/tests/file/bug26615.phpt index 4de8b4a46..9fee92a69 100644 --- a/ext/standard/tests/file/bug26615.phpt +++ b/ext/standard/tests/file/bug26615.phpt @@ -7,9 +7,9 @@ variables_order=E $out = array(); $status = -1; if (substr(PHP_OS, 0, 3) != 'WIN') { - exec($_ENV['TEST_PHP_EXECUTABLE'].' -r \'for($i=1;$i<=5000;$i++) print "$i\n";\' | tr \'\n\' \' \'', $out, $status); + exec($_ENV['TEST_PHP_EXECUTABLE'].' -n -r \'for($i=1;$i<=5000;$i++) print "$i\n";\' | tr \'\n\' \' \'', $out, $status); } else { - exec($_ENV['TEST_PHP_EXECUTABLE'].' -r "for($i=1;$i<=5000;$i++) echo $i,\' \';"', $out, $status); + exec($_ENV['TEST_PHP_EXECUTABLE'].' -n -r "for($i=1;$i<=5000;$i++) echo $i,\' \';"', $out, $status); } print_r($out); ?> diff --git a/ext/standard/tests/file/bug26938.phpt b/ext/standard/tests/file/bug26938.phpt index c43e6b103..a68d5728d 100644 --- a/ext/standard/tests/file/bug26938.phpt +++ b/ext/standard/tests/file/bug26938.phpt @@ -6,14 +6,14 @@ $out = array(); $status = -1; $php = getenv('TEST_PHP_EXECUTABLE'); if (substr(PHP_OS, 0, 3) != 'WIN') { - exec($php . ' -r \'' + exec($php . ' -n -r \'' . '$lengths = array(10,20000,10000,5,10000,3);' . 'foreach($lengths as $length) {' . ' for($i=0;$i<$length;$i++) print chr(65+$i % 27);' . ' print "\n";' . '}\'', $out, $status); } else { - exec($php . ' -r "' + exec($php . ' -n -r "' . '$lengths = array(10,20000,10000,5,10000,3);' . 'foreach($lengths as $length) {' . ' for($i=0;$i<$length;$i++) print chr(65+$i % 27);' diff --git a/ext/standard/tests/file/bug41655_1.phpt b/ext/standard/tests/file/bug41655_1.phpt index d02de7066..c2e3c769e 100644 --- a/ext/standard/tests/file/bug41655_1.phpt +++ b/ext/standard/tests/file/bug41655_1.phpt @@ -4,9 +4,10 @@ Bug #41655 (open_basedir bypass via glob()) 1/2 open_basedir=/tmp --FILE-- --EXPECT-- +bool(false) Done \ No newline at end of file diff --git a/ext/standard/tests/file/bug43248.phpt b/ext/standard/tests/file/bug43248.phpt index a20e0e06c..109643583 100755 --- a/ext/standard/tests/file/bug43248.phpt +++ b/ext/standard/tests/file/bug43248.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #43248 backward compatibility break in realpath() +Bug #43248 (backward compatibility break in realpath()) --FILE-- +--EXPECTF-- +bool(false) +bool(false) +string(3) "foo" + +Warning: file_get_contents(datafoo:text/plain,foo): failed to open stream: No such file or directory in %s +bool(false) diff --git a/ext/standard/tests/file/bug44607.phpt b/ext/standard/tests/file/bug44607.phpt new file mode 100644 index 000000000..8b2cf97f9 --- /dev/null +++ b/ext/standard/tests/file/bug44607.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #44607 (stream_get_line unable to correctly identify the "ending" in the stream content) +--FILE-- +'; +$tempnam = tempnam(sys_get_temp_dir(), 'php'); +$data = str_repeat('.', 14000); +$data .= $eol; +$data .= $data; +file_put_contents($tempnam, $data); +$fd = fopen($tempnam, 'r'); +var_dump(strlen(stream_get_line($fd, 15000, $eol))); +var_dump(strlen(stream_get_line($fd, 15000, $eol))); +fseek($fd, 1, SEEK_SET); +var_dump(strlen(stream_get_line($fd, 15000, $eol))); +var_dump(strlen(stream_get_line($fd, 15000, $eol))); +unlink($tempnam); +?> +--EXPECT-- +int(14000) +int(14000) +int(13999) +int(14000) diff --git a/ext/standard/tests/file/bug45181.phpt b/ext/standard/tests/file/bug45181.phpt new file mode 100644 index 000000000..d64fa8993 --- /dev/null +++ b/ext/standard/tests/file/bug45181.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #45181 (chdir() should clear relative entries in stat cache) +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(true) +bool(false) diff --git a/ext/standard/tests/file/bug45303.phpt b/ext/standard/tests/file/bug45303.phpt new file mode 100644 index 000000000..0a4b33bcf --- /dev/null +++ b/ext/standard/tests/file/bug45303.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #45303 (Opening php:// wrapper in append mode results in a warning) +--FILE-- + +--EXPECTF-- +resource(%d) of type (stream) + +Warning: fseek(): stream does not support seeking in %s +int(-1) diff --git a/ext/standard/tests/file/chmod_basic-win32.phpt b/ext/standard/tests/file/chmod_basic-win32.phpt new file mode 100644 index 000000000..ca224f7d1 --- /dev/null +++ b/ext/standard/tests/file/chmod_basic-win32.phpt @@ -0,0 +1,545 @@ +--TEST-- +chmod() basic fuctionality +--SKIPIF-- + +--FILE-- += 0; $perms_to_set--) { + chmod($filename, $perms_to_set); + $set_perms = (fileperms($filename) & PERMISSIONS_MASK); + clearstatcache(); + printf("Setting mode %o gives mode %o\n", $perms_to_set, $set_perms); +} +var_dump(chmod($filename, 0777)); + +unlink($filename); +echo "done"; + +?> +--EXPECT-- +Setting mode 777 gives mode 666 +Setting mode 776 gives mode 666 +Setting mode 775 gives mode 666 +Setting mode 774 gives mode 666 +Setting mode 773 gives mode 666 +Setting mode 772 gives mode 666 +Setting mode 771 gives mode 666 +Setting mode 770 gives mode 666 +Setting mode 767 gives mode 666 +Setting mode 766 gives mode 666 +Setting mode 765 gives mode 666 +Setting mode 764 gives mode 666 +Setting mode 763 gives mode 666 +Setting mode 762 gives mode 666 +Setting mode 761 gives mode 666 +Setting mode 760 gives mode 666 +Setting mode 757 gives mode 666 +Setting mode 756 gives mode 666 +Setting mode 755 gives mode 666 +Setting mode 754 gives mode 666 +Setting mode 753 gives mode 666 +Setting mode 752 gives mode 666 +Setting mode 751 gives mode 666 +Setting mode 750 gives mode 666 +Setting mode 747 gives mode 666 +Setting mode 746 gives mode 666 +Setting mode 745 gives mode 666 +Setting mode 744 gives mode 666 +Setting mode 743 gives mode 666 +Setting mode 742 gives mode 666 +Setting mode 741 gives mode 666 +Setting mode 740 gives mode 666 +Setting mode 737 gives mode 666 +Setting mode 736 gives mode 666 +Setting mode 735 gives mode 666 +Setting mode 734 gives mode 666 +Setting mode 733 gives mode 666 +Setting mode 732 gives mode 666 +Setting mode 731 gives mode 666 +Setting mode 730 gives mode 666 +Setting mode 727 gives mode 666 +Setting mode 726 gives mode 666 +Setting mode 725 gives mode 666 +Setting mode 724 gives mode 666 +Setting mode 723 gives mode 666 +Setting mode 722 gives mode 666 +Setting mode 721 gives mode 666 +Setting mode 720 gives mode 666 +Setting mode 717 gives mode 666 +Setting mode 716 gives mode 666 +Setting mode 715 gives mode 666 +Setting mode 714 gives mode 666 +Setting mode 713 gives mode 666 +Setting mode 712 gives mode 666 +Setting mode 711 gives mode 666 +Setting mode 710 gives mode 666 +Setting mode 707 gives mode 666 +Setting mode 706 gives mode 666 +Setting mode 705 gives mode 666 +Setting mode 704 gives mode 666 +Setting mode 703 gives mode 666 +Setting mode 702 gives mode 666 +Setting mode 701 gives mode 666 +Setting mode 700 gives mode 666 +Setting mode 677 gives mode 666 +Setting mode 676 gives mode 666 +Setting mode 675 gives mode 666 +Setting mode 674 gives mode 666 +Setting mode 673 gives mode 666 +Setting mode 672 gives mode 666 +Setting mode 671 gives mode 666 +Setting mode 670 gives mode 666 +Setting mode 667 gives mode 666 +Setting mode 666 gives mode 666 +Setting mode 665 gives mode 666 +Setting mode 664 gives mode 666 +Setting mode 663 gives mode 666 +Setting mode 662 gives mode 666 +Setting mode 661 gives mode 666 +Setting mode 660 gives mode 666 +Setting mode 657 gives mode 666 +Setting mode 656 gives mode 666 +Setting mode 655 gives mode 666 +Setting mode 654 gives mode 666 +Setting mode 653 gives mode 666 +Setting mode 652 gives mode 666 +Setting mode 651 gives mode 666 +Setting mode 650 gives mode 666 +Setting mode 647 gives mode 666 +Setting mode 646 gives mode 666 +Setting mode 645 gives mode 666 +Setting mode 644 gives mode 666 +Setting mode 643 gives mode 666 +Setting mode 642 gives mode 666 +Setting mode 641 gives mode 666 +Setting mode 640 gives mode 666 +Setting mode 637 gives mode 666 +Setting mode 636 gives mode 666 +Setting mode 635 gives mode 666 +Setting mode 634 gives mode 666 +Setting mode 633 gives mode 666 +Setting mode 632 gives mode 666 +Setting mode 631 gives mode 666 +Setting mode 630 gives mode 666 +Setting mode 627 gives mode 666 +Setting mode 626 gives mode 666 +Setting mode 625 gives mode 666 +Setting mode 624 gives mode 666 +Setting mode 623 gives mode 666 +Setting mode 622 gives mode 666 +Setting mode 621 gives mode 666 +Setting mode 620 gives mode 666 +Setting mode 617 gives mode 666 +Setting mode 616 gives mode 666 +Setting mode 615 gives mode 666 +Setting mode 614 gives mode 666 +Setting mode 613 gives mode 666 +Setting mode 612 gives mode 666 +Setting mode 611 gives mode 666 +Setting mode 610 gives mode 666 +Setting mode 607 gives mode 666 +Setting mode 606 gives mode 666 +Setting mode 605 gives mode 666 +Setting mode 604 gives mode 666 +Setting mode 603 gives mode 666 +Setting mode 602 gives mode 666 +Setting mode 601 gives mode 666 +Setting mode 600 gives mode 666 +Setting mode 577 gives mode 444 +Setting mode 576 gives mode 444 +Setting mode 575 gives mode 444 +Setting mode 574 gives mode 444 +Setting mode 573 gives mode 444 +Setting mode 572 gives mode 444 +Setting mode 571 gives mode 444 +Setting mode 570 gives mode 444 +Setting mode 567 gives mode 444 +Setting mode 566 gives mode 444 +Setting mode 565 gives mode 444 +Setting mode 564 gives mode 444 +Setting mode 563 gives mode 444 +Setting mode 562 gives mode 444 +Setting mode 561 gives mode 444 +Setting mode 560 gives mode 444 +Setting mode 557 gives mode 444 +Setting mode 556 gives mode 444 +Setting mode 555 gives mode 444 +Setting mode 554 gives mode 444 +Setting mode 553 gives mode 444 +Setting mode 552 gives mode 444 +Setting mode 551 gives mode 444 +Setting mode 550 gives mode 444 +Setting mode 547 gives mode 444 +Setting mode 546 gives mode 444 +Setting mode 545 gives mode 444 +Setting mode 544 gives mode 444 +Setting mode 543 gives mode 444 +Setting mode 542 gives mode 444 +Setting mode 541 gives mode 444 +Setting mode 540 gives mode 444 +Setting mode 537 gives mode 444 +Setting mode 536 gives mode 444 +Setting mode 535 gives mode 444 +Setting mode 534 gives mode 444 +Setting mode 533 gives mode 444 +Setting mode 532 gives mode 444 +Setting mode 531 gives mode 444 +Setting mode 530 gives mode 444 +Setting mode 527 gives mode 444 +Setting mode 526 gives mode 444 +Setting mode 525 gives mode 444 +Setting mode 524 gives mode 444 +Setting mode 523 gives mode 444 +Setting mode 522 gives mode 444 +Setting mode 521 gives mode 444 +Setting mode 520 gives mode 444 +Setting mode 517 gives mode 444 +Setting mode 516 gives mode 444 +Setting mode 515 gives mode 444 +Setting mode 514 gives mode 444 +Setting mode 513 gives mode 444 +Setting mode 512 gives mode 444 +Setting mode 511 gives mode 444 +Setting mode 510 gives mode 444 +Setting mode 507 gives mode 444 +Setting mode 506 gives mode 444 +Setting mode 505 gives mode 444 +Setting mode 504 gives mode 444 +Setting mode 503 gives mode 444 +Setting mode 502 gives mode 444 +Setting mode 501 gives mode 444 +Setting mode 500 gives mode 444 +Setting mode 477 gives mode 444 +Setting mode 476 gives mode 444 +Setting mode 475 gives mode 444 +Setting mode 474 gives mode 444 +Setting mode 473 gives mode 444 +Setting mode 472 gives mode 444 +Setting mode 471 gives mode 444 +Setting mode 470 gives mode 444 +Setting mode 467 gives mode 444 +Setting mode 466 gives mode 444 +Setting mode 465 gives mode 444 +Setting mode 464 gives mode 444 +Setting mode 463 gives mode 444 +Setting mode 462 gives mode 444 +Setting mode 461 gives mode 444 +Setting mode 460 gives mode 444 +Setting mode 457 gives mode 444 +Setting mode 456 gives mode 444 +Setting mode 455 gives mode 444 +Setting mode 454 gives mode 444 +Setting mode 453 gives mode 444 +Setting mode 452 gives mode 444 +Setting mode 451 gives mode 444 +Setting mode 450 gives mode 444 +Setting mode 447 gives mode 444 +Setting mode 446 gives mode 444 +Setting mode 445 gives mode 444 +Setting mode 444 gives mode 444 +Setting mode 443 gives mode 444 +Setting mode 442 gives mode 444 +Setting mode 441 gives mode 444 +Setting mode 440 gives mode 444 +Setting mode 437 gives mode 444 +Setting mode 436 gives mode 444 +Setting mode 435 gives mode 444 +Setting mode 434 gives mode 444 +Setting mode 433 gives mode 444 +Setting mode 432 gives mode 444 +Setting mode 431 gives mode 444 +Setting mode 430 gives mode 444 +Setting mode 427 gives mode 444 +Setting mode 426 gives mode 444 +Setting mode 425 gives mode 444 +Setting mode 424 gives mode 444 +Setting mode 423 gives mode 444 +Setting mode 422 gives mode 444 +Setting mode 421 gives mode 444 +Setting mode 420 gives mode 444 +Setting mode 417 gives mode 444 +Setting mode 416 gives mode 444 +Setting mode 415 gives mode 444 +Setting mode 414 gives mode 444 +Setting mode 413 gives mode 444 +Setting mode 412 gives mode 444 +Setting mode 411 gives mode 444 +Setting mode 410 gives mode 444 +Setting mode 407 gives mode 444 +Setting mode 406 gives mode 444 +Setting mode 405 gives mode 444 +Setting mode 404 gives mode 444 +Setting mode 403 gives mode 444 +Setting mode 402 gives mode 444 +Setting mode 401 gives mode 444 +Setting mode 400 gives mode 444 +Setting mode 377 gives mode 666 +Setting mode 376 gives mode 666 +Setting mode 375 gives mode 666 +Setting mode 374 gives mode 666 +Setting mode 373 gives mode 666 +Setting mode 372 gives mode 666 +Setting mode 371 gives mode 666 +Setting mode 370 gives mode 666 +Setting mode 367 gives mode 666 +Setting mode 366 gives mode 666 +Setting mode 365 gives mode 666 +Setting mode 364 gives mode 666 +Setting mode 363 gives mode 666 +Setting mode 362 gives mode 666 +Setting mode 361 gives mode 666 +Setting mode 360 gives mode 666 +Setting mode 357 gives mode 666 +Setting mode 356 gives mode 666 +Setting mode 355 gives mode 666 +Setting mode 354 gives mode 666 +Setting mode 353 gives mode 666 +Setting mode 352 gives mode 666 +Setting mode 351 gives mode 666 +Setting mode 350 gives mode 666 +Setting mode 347 gives mode 666 +Setting mode 346 gives mode 666 +Setting mode 345 gives mode 666 +Setting mode 344 gives mode 666 +Setting mode 343 gives mode 666 +Setting mode 342 gives mode 666 +Setting mode 341 gives mode 666 +Setting mode 340 gives mode 666 +Setting mode 337 gives mode 666 +Setting mode 336 gives mode 666 +Setting mode 335 gives mode 666 +Setting mode 334 gives mode 666 +Setting mode 333 gives mode 666 +Setting mode 332 gives mode 666 +Setting mode 331 gives mode 666 +Setting mode 330 gives mode 666 +Setting mode 327 gives mode 666 +Setting mode 326 gives mode 666 +Setting mode 325 gives mode 666 +Setting mode 324 gives mode 666 +Setting mode 323 gives mode 666 +Setting mode 322 gives mode 666 +Setting mode 321 gives mode 666 +Setting mode 320 gives mode 666 +Setting mode 317 gives mode 666 +Setting mode 316 gives mode 666 +Setting mode 315 gives mode 666 +Setting mode 314 gives mode 666 +Setting mode 313 gives mode 666 +Setting mode 312 gives mode 666 +Setting mode 311 gives mode 666 +Setting mode 310 gives mode 666 +Setting mode 307 gives mode 666 +Setting mode 306 gives mode 666 +Setting mode 305 gives mode 666 +Setting mode 304 gives mode 666 +Setting mode 303 gives mode 666 +Setting mode 302 gives mode 666 +Setting mode 301 gives mode 666 +Setting mode 300 gives mode 666 +Setting mode 277 gives mode 666 +Setting mode 276 gives mode 666 +Setting mode 275 gives mode 666 +Setting mode 274 gives mode 666 +Setting mode 273 gives mode 666 +Setting mode 272 gives mode 666 +Setting mode 271 gives mode 666 +Setting mode 270 gives mode 666 +Setting mode 267 gives mode 666 +Setting mode 266 gives mode 666 +Setting mode 265 gives mode 666 +Setting mode 264 gives mode 666 +Setting mode 263 gives mode 666 +Setting mode 262 gives mode 666 +Setting mode 261 gives mode 666 +Setting mode 260 gives mode 666 +Setting mode 257 gives mode 666 +Setting mode 256 gives mode 666 +Setting mode 255 gives mode 666 +Setting mode 254 gives mode 666 +Setting mode 253 gives mode 666 +Setting mode 252 gives mode 666 +Setting mode 251 gives mode 666 +Setting mode 250 gives mode 666 +Setting mode 247 gives mode 666 +Setting mode 246 gives mode 666 +Setting mode 245 gives mode 666 +Setting mode 244 gives mode 666 +Setting mode 243 gives mode 666 +Setting mode 242 gives mode 666 +Setting mode 241 gives mode 666 +Setting mode 240 gives mode 666 +Setting mode 237 gives mode 666 +Setting mode 236 gives mode 666 +Setting mode 235 gives mode 666 +Setting mode 234 gives mode 666 +Setting mode 233 gives mode 666 +Setting mode 232 gives mode 666 +Setting mode 231 gives mode 666 +Setting mode 230 gives mode 666 +Setting mode 227 gives mode 666 +Setting mode 226 gives mode 666 +Setting mode 225 gives mode 666 +Setting mode 224 gives mode 666 +Setting mode 223 gives mode 666 +Setting mode 222 gives mode 666 +Setting mode 221 gives mode 666 +Setting mode 220 gives mode 666 +Setting mode 217 gives mode 666 +Setting mode 216 gives mode 666 +Setting mode 215 gives mode 666 +Setting mode 214 gives mode 666 +Setting mode 213 gives mode 666 +Setting mode 212 gives mode 666 +Setting mode 211 gives mode 666 +Setting mode 210 gives mode 666 +Setting mode 207 gives mode 666 +Setting mode 206 gives mode 666 +Setting mode 205 gives mode 666 +Setting mode 204 gives mode 666 +Setting mode 203 gives mode 666 +Setting mode 202 gives mode 666 +Setting mode 201 gives mode 666 +Setting mode 200 gives mode 666 +Setting mode 177 gives mode 444 +Setting mode 176 gives mode 444 +Setting mode 175 gives mode 444 +Setting mode 174 gives mode 444 +Setting mode 173 gives mode 444 +Setting mode 172 gives mode 444 +Setting mode 171 gives mode 444 +Setting mode 170 gives mode 444 +Setting mode 167 gives mode 444 +Setting mode 166 gives mode 444 +Setting mode 165 gives mode 444 +Setting mode 164 gives mode 444 +Setting mode 163 gives mode 444 +Setting mode 162 gives mode 444 +Setting mode 161 gives mode 444 +Setting mode 160 gives mode 444 +Setting mode 157 gives mode 444 +Setting mode 156 gives mode 444 +Setting mode 155 gives mode 444 +Setting mode 154 gives mode 444 +Setting mode 153 gives mode 444 +Setting mode 152 gives mode 444 +Setting mode 151 gives mode 444 +Setting mode 150 gives mode 444 +Setting mode 147 gives mode 444 +Setting mode 146 gives mode 444 +Setting mode 145 gives mode 444 +Setting mode 144 gives mode 444 +Setting mode 143 gives mode 444 +Setting mode 142 gives mode 444 +Setting mode 141 gives mode 444 +Setting mode 140 gives mode 444 +Setting mode 137 gives mode 444 +Setting mode 136 gives mode 444 +Setting mode 135 gives mode 444 +Setting mode 134 gives mode 444 +Setting mode 133 gives mode 444 +Setting mode 132 gives mode 444 +Setting mode 131 gives mode 444 +Setting mode 130 gives mode 444 +Setting mode 127 gives mode 444 +Setting mode 126 gives mode 444 +Setting mode 125 gives mode 444 +Setting mode 124 gives mode 444 +Setting mode 123 gives mode 444 +Setting mode 122 gives mode 444 +Setting mode 121 gives mode 444 +Setting mode 120 gives mode 444 +Setting mode 117 gives mode 444 +Setting mode 116 gives mode 444 +Setting mode 115 gives mode 444 +Setting mode 114 gives mode 444 +Setting mode 113 gives mode 444 +Setting mode 112 gives mode 444 +Setting mode 111 gives mode 444 +Setting mode 110 gives mode 444 +Setting mode 107 gives mode 444 +Setting mode 106 gives mode 444 +Setting mode 105 gives mode 444 +Setting mode 104 gives mode 444 +Setting mode 103 gives mode 444 +Setting mode 102 gives mode 444 +Setting mode 101 gives mode 444 +Setting mode 100 gives mode 444 +Setting mode 77 gives mode 444 +Setting mode 76 gives mode 444 +Setting mode 75 gives mode 444 +Setting mode 74 gives mode 444 +Setting mode 73 gives mode 444 +Setting mode 72 gives mode 444 +Setting mode 71 gives mode 444 +Setting mode 70 gives mode 444 +Setting mode 67 gives mode 444 +Setting mode 66 gives mode 444 +Setting mode 65 gives mode 444 +Setting mode 64 gives mode 444 +Setting mode 63 gives mode 444 +Setting mode 62 gives mode 444 +Setting mode 61 gives mode 444 +Setting mode 60 gives mode 444 +Setting mode 57 gives mode 444 +Setting mode 56 gives mode 444 +Setting mode 55 gives mode 444 +Setting mode 54 gives mode 444 +Setting mode 53 gives mode 444 +Setting mode 52 gives mode 444 +Setting mode 51 gives mode 444 +Setting mode 50 gives mode 444 +Setting mode 47 gives mode 444 +Setting mode 46 gives mode 444 +Setting mode 45 gives mode 444 +Setting mode 44 gives mode 444 +Setting mode 43 gives mode 444 +Setting mode 42 gives mode 444 +Setting mode 41 gives mode 444 +Setting mode 40 gives mode 444 +Setting mode 37 gives mode 444 +Setting mode 36 gives mode 444 +Setting mode 35 gives mode 444 +Setting mode 34 gives mode 444 +Setting mode 33 gives mode 444 +Setting mode 32 gives mode 444 +Setting mode 31 gives mode 444 +Setting mode 30 gives mode 444 +Setting mode 27 gives mode 444 +Setting mode 26 gives mode 444 +Setting mode 25 gives mode 444 +Setting mode 24 gives mode 444 +Setting mode 23 gives mode 444 +Setting mode 22 gives mode 444 +Setting mode 21 gives mode 444 +Setting mode 20 gives mode 444 +Setting mode 17 gives mode 444 +Setting mode 16 gives mode 444 +Setting mode 15 gives mode 444 +Setting mode 14 gives mode 444 +Setting mode 13 gives mode 444 +Setting mode 12 gives mode 444 +Setting mode 11 gives mode 444 +Setting mode 10 gives mode 444 +Setting mode 7 gives mode 444 +Setting mode 6 gives mode 444 +Setting mode 5 gives mode 444 +Setting mode 4 gives mode 444 +Setting mode 3 gives mode 444 +Setting mode 2 gives mode 444 +Setting mode 1 gives mode 444 +Setting mode 0 gives mode 444 +bool(true) +done diff --git a/ext/standard/tests/file/chmod_basic.phpt b/ext/standard/tests/file/chmod_basic.phpt new file mode 100644 index 000000000..582f273d4 --- /dev/null +++ b/ext/standard/tests/file/chmod_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +chmod() basic fuctionality +--SKIPIF-- + +--FILE-- += 0; $perms_to_set--) { + chmod($filename, $perms_to_set); + $set_perms = (fileperms($filename) & MODE_MASK); + clearstatcache(); + if ($set_perms != $perms_to_set) { + printf("Error: %o does not match %o\n", $set_perms, $perms_to_set); + } +} +var_dump(chmod($filename, 0777)); + +unlink($filename); +echo "done"; + +?> +--EXPECT-- +bool(true) +done diff --git a/ext/standard/tests/file/chmod_error.phpt b/ext/standard/tests/file/chmod_error.phpt new file mode 100644 index 000000000..d63f731fe --- /dev/null +++ b/ext/standard/tests/file/chmod_error.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test chmod() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing chmod() : error conditions *** + +-- Testing chmod() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for chmod() in %s on line %d +NULL + +-- Testing chmod() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for chmod() in %s on line %d +NULL + +Warning: chmod(): No such file or directory in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/chmod_variation1.phpt b/ext/standard/tests/file/chmod_variation1.phpt new file mode 100644 index 000000000..f35e54efb --- /dev/null +++ b/ext/standard/tests/file/chmod_variation1.phpt @@ -0,0 +1,34 @@ +--TEST-- +chmod() on a directory +--SKIPIF-- + +--FILE-- += 0; $perms_to_set--) { + chmod($dirname, $perms_to_set); + $set_perms = (fileperms($dirname) & PERMISSIONS_MASK); + clearstatcache(); + if ($set_perms != $perms_to_set) { + printf("Error: %o does not match %o\n", $set_perms, $perms_to_set); + } +} + +var_dump(chmod($dirname, 0777)); +rmdir($dirname); + +echo "done"; + +?> +--EXPECT-- +bool(true) +done diff --git a/ext/standard/tests/file/chmod_variation2-win32.phpt b/ext/standard/tests/file/chmod_variation2-win32.phpt new file mode 100644 index 000000000..bc379ffcf --- /dev/null +++ b/ext/standard/tests/file/chmod_variation2-win32.phpt @@ -0,0 +1,74 @@ +--TEST-- +chmod() with various paths +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +chmod() on a path containing .. and . +bool(true) +bool(true) +666 + +chmod() on a path containing .. with invalid directories +bool(true) +bool(true) +666 + +chmod() on a relative path from a different working directory +bool(true) +bool(true) +666 + +chmod() on a directory with a trailing / +bool(true) +bool(true) +666 diff --git a/ext/standard/tests/file/chmod_variation2.phpt b/ext/standard/tests/file/chmod_variation2.phpt new file mode 100644 index 000000000..b193acfaf --- /dev/null +++ b/ext/standard/tests/file/chmod_variation2.phpt @@ -0,0 +1,92 @@ +--TEST-- +chmod() with various paths +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +chmod() on a path containing .. and . +bool(true) +bool(true) +755 + +chmod() on a path containing .. with invalid directories +bool(true) + +Warning: chmod(): No such file or directory in %s on line %d +bool(false) +777 + +chmod() on a linked file +bool(true) +bool(true) +bool(true) +755 +bool(true) + +chmod() on a relative path from a different working directory +bool(true) +bool(true) +755 + +chmod() on a directory with a trailing / +bool(true) +bool(true) +755 diff --git a/ext/standard/tests/file/chmod_variation3.phpt b/ext/standard/tests/file/chmod_variation3.phpt new file mode 100644 index 000000000..b1b455d46 --- /dev/null +++ b/ext/standard/tests/file/chmod_variation3.phpt @@ -0,0 +1,216 @@ +--TEST-- +Test chmod() function : first parameter variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for filename + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( chmod($value, $mode) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing chmod() : usage variation *** + +--int 0-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--int 1-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--float .5-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) + +--unset var-- +Error: 2 - chmod(): No such file or directory, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/chmod_variation4.phpt b/ext/standard/tests/file/chmod_variation4.phpt new file mode 100644 index 000000000..a46b61f65 --- /dev/null +++ b/ext/standard/tests/file/chmod_variation4.phpt @@ -0,0 +1,192 @@ +--TEST-- +Test chmod() function : second parameter variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for mode + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( chmod($filename, $value) ); +}; + +chmod($filename, 0777); +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing chmod() : usage variation *** + +--float 10.5-- +bool(true) + +--float -10.5-- +bool(true) + +--float 12.3456789000e10-- +bool(true) + +--float -12.3456789000e10-- +bool(true) + +--float .5-- +bool(true) + +--empty array-- +bool(true) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +bool(true) + +--lowercase null-- +bool(true) + +--lowercase true-- +bool(true) + +--lowercase false-- +bool(true) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +bool(true) + +--empty string DQ-- +bool(true) + +--empty string SQ-- +bool(true) + +--string DQ-- +bool(true) + +--string SQ-- +bool(true) + +--mixed case string-- +bool(true) + +--heredoc-- +bool(true) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +bool(true) + +--unset var-- +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/chroot_001.phpt b/ext/standard/tests/file/chroot_001.phpt new file mode 100644 index 000000000..b42b17b89 --- /dev/null +++ b/ext/standard/tests/file/chroot_001.phpt @@ -0,0 +1,30 @@ +--TEST-- +chroot() +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +bool(true) +bool(true) +bool(false) +string(1) "/" diff --git a/ext/standard/tests/file/copy_variation12-win32.phpt b/ext/standard/tests/file/copy_variation12-win32.phpt index 769676904..4d39de3bb 100644 --- a/ext/standard/tests/file/copy_variation12-win32.phpt +++ b/ext/standard/tests/file/copy_variation12-win32.phpt @@ -40,7 +40,7 @@ rmdir(dirname(__FILE__)."/copy_variation12"); --EXPECTF-- *** Test copy() function: Trying to create a copy of an existing dir *** -Warning: copy(%s): failed to open stream: Permission denied in %s on line %d +Warning: copy(): The first argument to copy() function cannot be a directory in %s on line %d bool(false) bool(false) int(0) diff --git a/ext/standard/tests/file/copy_variation13.phpt b/ext/standard/tests/file/copy_variation13.phpt index bd1a21dab..779f82b6f 100644 --- a/ext/standard/tests/file/copy_variation13.phpt +++ b/ext/standard/tests/file/copy_variation13.phpt @@ -44,7 +44,7 @@ rmdir(dirname(__FILE__)."/copy_variation13"); *** Test copy() function: Trying to copy dir to file *** *** Testing copy() in copying dir to file *** -Warning: copy(): The first argument to copy() function cannot be a directory in %s/copy_variation13.php on line %d +Warning: copy(): The first argument to copy() function cannot be a directory in %scopy_variation13.php on line %d bool(false) bool(true) bool(true) diff --git a/ext/standard/tests/file/copy_variation18.phpt b/ext/standard/tests/file/copy_variation18.phpt index 18407bd58..53467af8a 100644 --- a/ext/standard/tests/file/copy_variation18.phpt +++ b/ext/standard/tests/file/copy_variation18.phpt @@ -32,8 +32,13 @@ var_dump( copy($src_file_name, $dest_file_name) ); $stat_after_copy = stat($src_file_name); clearstatcache(); +// compare all stat fields except access time +$stat_keys_to_compare = array("dev", "ino", "mode", "nlink", "uid", "gid", + "rdev", "size", "mtime", "ctime", + "blksize", "blocks"); + echo "Comparing the stats of file before and after copy operation => "; -var_dump( compare_stats($stat_before_copy, $stat_after_copy, $all_stat_keys) ); +var_dump( compare_stats($stat_before_copy, $stat_after_copy, $stat_keys_to_compare) ); echo "*** Done ***\n"; ?> diff --git a/ext/standard/tests/file/copy_variation4.phpt b/ext/standard/tests/file/copy_variation4.phpt index 38363fc89..8c6ea1a82 100644 Binary files a/ext/standard/tests/file/copy_variation4.phpt and b/ext/standard/tests/file/copy_variation4.phpt differ diff --git a/ext/standard/tests/file/directory_wrapper_fstat_basic.phpt b/ext/standard/tests/file/directory_wrapper_fstat_basic.phpt new file mode 100644 index 000000000..87f85230b --- /dev/null +++ b/ext/standard/tests/file/directory_wrapper_fstat_basic.phpt @@ -0,0 +1,13 @@ +--TEST-- +Test function fstat() on directory wrapper +--FILE-- + +===DONE=== +--EXPECT-- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/dirname_basic-win32.phpt b/ext/standard/tests/file/dirname_basic-win32.phpt new file mode 100644 index 000000000..61a6e33f5 --- /dev/null +++ b/ext/standard/tests/file/dirname_basic-win32.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test dirname() function : basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing dirname() : basic functionality *** +string(0) "" +string(1) "." +string(2) "c:" +string(3) "c:\" +string(3) "c:\" +string(1) "." +string(7) "c:\test" +string(7) "c:\test" +string(8) "c://test" +string(7) "c:\test" +string(15) "/usr/lib/locale" +string(17) "//usr/lib//locale" +string(1) "\" +string(1) "\" +string(1) "\" +string(1) "\" +string(1) "\" +string(15) "/usr/lib/locale" +string(31) "c:\windows/system32\drivers/etc" +string(15) "/usr\lib/locale" +string(15) " c:\test\adir" +string(12) "c:\test\adir" +string(15) " c:\test\adir" +string(18) " /usr/lib/locale" +string(15) "/usr/lib/locale" +string(18) " /usr/lib/locale" +string(1) "." +string(14) " c:\test\adir" +string(1) "\" +string(1) "\" +===DONE=== diff --git a/ext/standard/tests/file/dirname_basic.phpt b/ext/standard/tests/file/dirname_basic.phpt new file mode 100644 index 000000000..8f1944e2c --- /dev/null +++ b/ext/standard/tests/file/dirname_basic.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test dirname() function : basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing dirname() : basic functionality *** +string(0) "" +string(1) "." +string(1) "." +string(1) "." +string(1) "." +string(1) "." +string(1) "." +string(1) "." +string(8) "c://test" +string(1) "." +string(15) "/usr/lib/locale" +string(17) "//usr/lib//locale" +string(1) "." +string(1) "." +string(1) "/" +string(1) "/" +string(1) "/" +string(15) "/usr/lib/locale" +string(27) "c:\windows/system32\drivers" +string(8) "/usr\lib" +string(1) "." +string(1) "." +string(1) "." +string(18) " /usr/lib/locale" +string(15) "/usr/lib/locale" +string(18) " /usr/lib/locale" +string(1) "." +string(1) "." +string(1) "/" +string(1) "/" +===DONE=== + diff --git a/ext/standard/tests/file/dirname_error.phpt b/ext/standard/tests/file/dirname_error.phpt new file mode 100644 index 000000000..4785c94f2 --- /dev/null +++ b/ext/standard/tests/file/dirname_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test dirname() function : error conditions +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing dirname() : error conditions *** + +-- Testing dirname() function with Zero arguments -- + +Warning: Wrong parameter count for dirname() in %s on line %d +NULL + +-- Testing dirname() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for dirname() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/file/dirname_variation1.phpt b/ext/standard/tests/file/dirname_variation1.phpt new file mode 100644 index 000000000..c48a9bafb --- /dev/null +++ b/ext/standard/tests/file/dirname_variation1.phpt @@ -0,0 +1,190 @@ +--TEST-- +Test dirname() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( dirname($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing dirname() : usage variation *** + +--int 0-- +string(1) "." + +--int 1-- +string(1) "." + +--int 12345-- +string(1) "." + +--int -12345-- +string(1) "." + +--float 10.5-- +string(1) "." + +--float -10.5-- +string(1) "." + +--float 12.3456789000e10-- +string(1) "." + +--float -12.3456789000e10-- +string(1) "." + +--float .5-- +string(1) "." + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(1) "." + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(1) "." + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(1) "." + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(1) "." + +--uppercase NULL-- +string(0) "" + +--lowercase null-- +string(0) "" + +--lowercase true-- +string(1) "." + +--lowercase false-- +string(0) "" + +--uppercase TRUE-- +string(1) "." + +--uppercase FALSE-- +string(0) "" + +--empty string DQ-- +string(0) "" + +--empty string SQ-- +string(0) "" + +--instance of classWithToString-- +string(1) "." + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(1) "." + +--undefined var-- +string(0) "" + +--unset var-- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/file/feof_basic.phpt b/ext/standard/tests/file/feof_basic.phpt new file mode 100644 index 000000000..ff1d179f6 --- /dev/null +++ b/ext/standard/tests/file/feof_basic.phpt @@ -0,0 +1,101 @@ +--TEST-- +Test feof() function : basic functionality +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing feof() : basic functionality *** + +*** testing reading complete file using feof to stop *** +some data 10 +bool(false) +*** writing 10 lines, testing feof *** +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +*** testing feof on unclosed file after a read *** +bool(true) +*** testing feof after a seek to near the beginning *** +bool(false) +*** testing feof after a seek to end *** +bool(false) +*** testing feof after a seek passed the end *** +bool(false) +*** closing file, testing eof *** + +Warning: feof(): %d is not a valid stream resource in %s on line %d +Done diff --git a/ext/standard/tests/file/fgets_error.phpt b/ext/standard/tests/file/fgets_error.phpt index 347a10d95..d4600480a 100644 --- a/ext/standard/tests/file/fgets_error.phpt +++ b/ext/standard/tests/file/fgets_error.phpt @@ -99,7 +99,7 @@ bool(false) Warning: fgets(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Testing fgets() with closed/unset file handle -- -Warning: fgets(): 5 is not a valid stream resource in %s on line %d +Warning: fgets(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fgets(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fgets_socket_variation1.phpt b/ext/standard/tests/file/fgets_socket_variation1.phpt new file mode 100644 index 000000000..57944d8b5 --- /dev/null +++ b/ext/standard/tests/file/fgets_socket_variation1.phpt @@ -0,0 +1,56 @@ +--TEST-- +fgets() with a socket stream +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECT-- +Write some data: + + +Read a line from the client: +string(6) "line1 +" + + +Read another line from the client: +string(6) "line2 +" + + +Close the server side socket and read the remaining data from the client +done diff --git a/ext/standard/tests/file/fgets_socket_variation2.phpt b/ext/standard/tests/file/fgets_socket_variation2.phpt new file mode 100644 index 000000000..350083713 --- /dev/null +++ b/ext/standard/tests/file/fgets_socket_variation2.phpt @@ -0,0 +1,63 @@ +--TEST-- +fgets() over a socket with more than a buffer's worth of data +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECT-- +Write data from the file: +int(9000) + +Read lines from the client + +Close the server side socket and read the remaining data from the client +done diff --git a/ext/standard/tests/file/fgets_variation2.phpt b/ext/standard/tests/file/fgets_variation2.phpt index b37a9f099..3ba4eae96 100644 --- a/ext/standard/tests/file/fgets_variation2.phpt +++ b/ext/standard/tests/file/fgets_variation2.phpt @@ -43,10 +43,10 @@ echo "Done"; *** Testing fgets() : usage variations *** -- Testing fgets() with closed handle -- -Warning: fgets(): 6 is not a valid stream resource in %s on line %d +Warning: fgets(): %d is not a valid stream resource in %s on line %d bool(false) -Warning: fgets(): 6 is not a valid stream resource in %s on line %d +Warning: fgets(): %d is not a valid stream resource in %s on line %d bool(false) -- Testing fgets() with unset handle -- diff --git a/ext/standard/tests/file/file_exists_error.phpt b/ext/standard/tests/file/file_exists_error.phpt new file mode 100644 index 000000000..dec102d36 --- /dev/null +++ b/ext/standard/tests/file/file_exists_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test file_exists() function : error conditions +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing file_exists() : error conditions *** + +-- Testing file_exists() function with Zero arguments -- + +Warning: Wrong parameter count for file_exists() in %s on line %d +NULL + +-- Testing file_exists() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for file_exists() in %s on line %d +NULL +Done diff --git a/ext/standard/tests/file/file_exists_variation1.phpt b/ext/standard/tests/file/file_exists_variation1.phpt new file mode 100644 index 000000000..35c86a280 --- /dev/null +++ b/ext/standard/tests/file/file_exists_variation1.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test file_exists() function : usage variations +--CREDITS-- +Dave Kelsey +--FILE-- + + +--EXPECTF-- +*** Testing file_exists() : usage variations *** +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +Done \ No newline at end of file diff --git a/ext/standard/tests/file/file_get_contents_basic.phpt b/ext/standard/tests/file/file_get_contents_basic.phpt new file mode 100644 index 000000000..5dc0a5e5c --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +file_get_contents() function : basic functionality +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing the basic functionality of the file_get_contents() function *** +-- Testing with simple valid data file -- +string(100) "text text text text text text text text text text text text text text text text text text text text " + +-- Testing with empty file -- +string(0) "" + +*** Done *** diff --git a/ext/standard/tests/file/file_get_contents_error.phpt b/ext/standard/tests/file/file_get_contents_error.phpt new file mode 100644 index 000000000..9c30c2357 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_error.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test file_get_contents() function : error conditions +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing error conditions *** + +-- Testing with Non-existing file -- + +Warning: file_get_contents(/no/such/file/or/dir): failed to open stream: No such file or directory in %s on line %d + +-- Testing No.of arguments less than expected -- + +Warning: file_get_contents() expects at least 1 parameter, 0 given in %s on line %d + +-- Testing No.of arguments greater than expected -- + +Warning: file_get_contents() expects at most 5 parameters, 6 given in %s on line %d + +-- Testing for invalid negative maxlen values -- +Warning: file_get_contents(): length must be greater than or equal to zero in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_get_contents_variation1.phpt b/ext/standard/tests/file/file_get_contents_variation1.phpt new file mode 100644 index 000000000..ddc926180 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation1.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test file_get_contents() function : variation - include path testing +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing file_get_contents() : variation *** +File in include path +===DONE=== diff --git a/ext/standard/tests/file/file_get_contents_variation2.phpt b/ext/standard/tests/file/file_get_contents_variation2.phpt new file mode 100644 index 000000000..54816604c --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation2.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test file_get_contents() function : variation - include path testing +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing file_get_contents() : variation *** +File in script location +===DONE=== diff --git a/ext/standard/tests/file/file_get_contents_variation3.phpt b/ext/standard/tests/file/file_get_contents_variation3.phpt new file mode 100644 index 000000000..f485b0ecf --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation3.phpt @@ -0,0 +1,218 @@ +--TEST-- +Test file_get_contents() function : usage variation - different type for use_include_path +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for use_include_path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file_get_contents($absFile, $value) ); +}; + +unlink($absFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_get_contents() : usage variation *** + +--int 0-- +string(13) "contents read" + +--int 1-- +string(13) "contents read" + +--int 12345-- +string(%d) "contents read" + +--int -12345-- +string(%d) "contents read" + +--float 10.5-- +string(%d) "contents read" + +--float -10.5-- +string(%d) "contents read" + +--float 12.3456789000e10-- +string(%d) "contents read" + +--float -12.3456789000e10-- +string(%d) "contents read" + +--float .5-- +string(%d) "contents read" + +--empty array-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, array given, %s(%d) +NULL + +--uppercase NULL-- +string(%d) "contents read" + +--lowercase null-- +string(%d) "contents read" + +--lowercase true-- +string(%d) "contents read" + +--lowercase false-- +string(%d) "contents read" + +--uppercase TRUE-- +string(%d) "contents read" + +--uppercase FALSE-- +string(%d) "contents read" + +--empty string DQ-- +string(%d) "contents read" + +--empty string SQ-- +string(%d) "contents read" + +--string DQ-- +string(%d) "contents read" + +--string SQ-- +string(%d) "contents read" + +--mixed case string-- +string(%d) "contents read" + +--heredoc-- +string(%d) "contents read" + +--instance of classWithToString-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file_get_contents() expects parameter 2 to be boolean, object given, %s(%d) +NULL + +--undefined var-- +string(%d) "contents read" + +--unset var-- +string(%d) "contents read" +===DONE=== diff --git a/ext/standard/tests/file/file_get_contents_variation4.phpt b/ext/standard/tests/file/file_get_contents_variation4.phpt new file mode 100644 index 000000000..3b494b449 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation4.phpt @@ -0,0 +1,251 @@ +--TEST-- +Test file_get_contents() function : usage variation - different types for context. +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //non context resource + 'file resource' => $fileRes, + + //valid stream context + 'stream context' => $strContext, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file_get_contents($absFile, false, $value) ); +}; + +unlink($absFile); +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_get_contents() : usage variation *** + +--int 0-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int 1-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int 12345-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int -12345-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--float 10.5-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float -10.5-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float 12.3456789000e10-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float -12.3456789000e10-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float .5-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--empty array-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--uppercase NULL-- +string(%d) "contents read" + +--lowercase null-- +string(%d) "contents read" + +--lowercase true-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--lowercase false-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--uppercase TRUE-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--uppercase FALSE-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--empty string DQ-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file_get_contents() expects parameter 3 to be resource, object given, %s(%d) +NULL + +--undefined var-- +string(%d) "contents read" + +--unset var-- +string(%d) "contents read" + +--file resource-- +Error: 2 - file_get_contents(): supplied resource is not a valid Stream-Context resource, %s(%d) +string(%d) "contents read" + +--stream context-- +string(%d) "contents read" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/file_get_contents_variation5.phpt b/ext/standard/tests/file/file_get_contents_variation5.phpt new file mode 100644 index 000000000..9b400310c --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation5.phpt @@ -0,0 +1,222 @@ +--TEST-- +Test file_get_contents() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for offset + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file_get_contents($absFile, false, null, $value) ); +}; + +unlink($absFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_get_contents() : usage variation *** + +--int 0-- +string(%d) "contents read" + +--int 1-- +string(%d) "ontents read" + +--int 12345-- +string(%d) "" + +--int -12345-- +string(%d) "contents read" + +--float 10.5-- +string(3) "ead" + +--float -10.5-- +string(%d) "contents read" + +--float 12.3456789000e10-- +string(%d) %s + +--float -12.3456789000e10-- +string(%d) %s + +--float .5-- +string(%d) "contents read" + +--empty array-- +Error: 2 - file_get_contents() expects parameter 4 to be long, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file_get_contents() expects parameter 4 to be long, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file_get_contents() expects parameter 4 to be long, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file_get_contents() expects parameter 4 to be long, array given, %s(%d) +NULL + +--uppercase NULL-- +string(%d) "contents read" + +--lowercase null-- +string(%d) "contents read" + +--lowercase true-- +string(12) "ontents read" + +--lowercase false-- +string(%d) "contents read" + +--uppercase TRUE-- +string(12) "ontents read" + +--uppercase FALSE-- +string(%d) "contents read" + +--empty string DQ-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file_get_contents() expects parameter 4 to be long, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file_get_contents() expects parameter 4 to be long, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file_get_contents() expects parameter 4 to be long, object given, %s(%d) +NULL + +--undefined var-- +string(%d) "contents read" + +--unset var-- +string(%d) "contents read" +===DONE=== diff --git a/ext/standard/tests/file/file_get_contents_variation6.phpt b/ext/standard/tests/file/file_get_contents_variation6.phpt new file mode 100644 index 000000000..6795e0165 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation6.phpt @@ -0,0 +1,215 @@ +--TEST-- +Test file_get_contents() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for maxlen + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file_get_contents($absFile, false, null, 0, $value) ); +}; + +unlink($absFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_get_contents() : usage variation *** + +--int 0-- +string(%d) "" + +--int 1-- +string(%d) "c" + +--int 12345-- +string(%d) "contents read" + +--int -12345-- +Error: 2 - file_get_contents(): length must be greater than or equal to zero, %s(%d) +bool(false) + +--float 10.5-- +string(%d) "contents r" + +--float -10.5-- +Error: 2 - file_get_contents(): length must be greater than or equal to zero, %s(%d) +bool(false) + +--float .5-- +string(%d) "" + +--empty array-- +Error: 2 - file_get_contents() expects parameter 5 to be long, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file_get_contents() expects parameter 5 to be long, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file_get_contents() expects parameter 5 to be long, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file_get_contents() expects parameter 5 to be long, array given, %s(%d) +NULL + +--uppercase NULL-- +string(%d) "" + +--lowercase null-- +string(%d) "" + +--lowercase true-- +string(%d) "c" + +--lowercase false-- +string(%d) "" + +--uppercase TRUE-- +string(%d) "c" + +--uppercase FALSE-- +string(%d) "" + +--empty string DQ-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file_get_contents() expects parameter 5 to be long, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file_get_contents() expects parameter 5 to be long, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file_get_contents() expects parameter 5 to be long, object given, %s(%d) +NULL + +--undefined var-- +string(%d) "" + +--unset var-- +string(%d) "" +===DONE=== diff --git a/ext/standard/tests/file/file_get_contents_variation7-win32.phpt b/ext/standard/tests/file/file_get_contents_variation7-win32.phpt new file mode 100644 index 000000000..d350b4b03 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation7-win32.phpt @@ -0,0 +1,115 @@ +--TEST-- +Test file_get_contents() function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing file_get_contents() : variation *** + +-- Iteration 1 -- +string(%d) "contents read" + +-- Iteration 2 -- +string(%d) "contents read" + +-- Iteration 3 -- +string(%d) "contents read" + +-- Iteration 4 -- +string(%d) "contents read" + +-- Iteration 5 -- + +Warning: file_get_contents(%sfileGetContentsVar7.dir\fileGetContentsVar7Sub\..\\\fileGetContentsVar7Sub\\..\\..\fileGetContentsVar7Sub\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: file_get_contents(%sfileGetContentsVar7.dir\fileGetContentsVar7Sub\BADDIR\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +string(%d) "contents read" + +-- Iteration 8 -- +string(%d) "contents read" + +-- Iteration 9 -- +string(%d) "contents read" + +-- Iteration 10 -- +string(%d) "contents read" + +-- Iteration 11 -- + +Warning: file_get_contents(BADDIR\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 12 -- +string(%d) "contents read" + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_get_contents_variation7.phpt b/ext/standard/tests/file/file_get_contents_variation7.phpt new file mode 100644 index 000000000..17c55b613 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation7.phpt @@ -0,0 +1,104 @@ +--TEST-- +Test file_get_contents() function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing file_get_contents() : variation *** + +-- Iteration 1 -- +string(%d) "contents read" + +-- Iteration 2 -- +string(%d) "contents read" + +-- Iteration 3 -- +string(%d) "contents read" + +-- Iteration 4 -- +string(%d) "contents read" + +-- Iteration 5 -- + +Warning: file_get_contents(%sfileGetContentsVar7.dir/fileGetContentsVar7Sub/..///fileGetContentsVar7Sub//..//../fileGetContentsVar7Sub/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: file_get_contents(%sfileGetContentsVar7.dir/fileGetContentsVar7Sub/BADDIR/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +string(%d) "contents read" + +-- Iteration 8 -- +string(%d) "contents read" + +-- Iteration 9 -- +string(%d) "contents read" + +-- Iteration 10 -- +string(%d) "contents read" + +-- Iteration 11 -- + +Warning: file_get_contents(BADDIR/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +*** Done *** diff --git a/ext/standard/tests/file/file_get_contents_variation8-win32.phpt b/ext/standard/tests/file/file_get_contents_variation8-win32.phpt new file mode 100644 index 000000000..8598f4335 --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation8-win32.phpt @@ -0,0 +1,97 @@ +--TEST-- +Test file_get_contents() function : variation - obscure filenames +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + -1, + "TRUE" => TRUE, + "FALSE" => FALSE, + "NULL" => NULL, + "\"\"" => "", + "\" \"" => " ", + "\\0" => "\0", + "array()" => array(), + + /* prefix with path separator of a non existing directory*/ + "/no/such/file/dir" => "/no/such/file/dir", + "php/php"=> "php/php" + +); + +foreach($names_arr as $key =>$value) { + echo "\n-- Filename: $key --\n"; + var_dump(file_get_contents($value)); +} + +?> +===Done=== +--EXPECTF-- +*** Testing file_get_contents() : variation *** + +-- Filename: -1 -- + +Warning: file_get_contents(-1): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Filename: TRUE -- + +Warning: file_get_contents(1): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Filename: FALSE -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) + +-- Filename: NULL -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) + +-- Filename: "" -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) + +-- Filename: " " -- + +Warning: file_get_contents( ): failed to open stream: Permission denied in %s on line %d +bool(false) + +-- Filename: \0 -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) + +-- Filename: array() -- + +Warning: file_get_contents() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Filename: /no/such/file/dir -- + +Warning: file_get_contents(/no/such/file/dir): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Filename: php/php -- + +Warning: file_get_contents(php/php): failed to open stream: No such file or directory in %s on line %d +bool(false) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/file/file_get_contents_variation8.phpt b/ext/standard/tests/file/file_get_contents_variation8.phpt new file mode 100644 index 000000000..c7d1c171e --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation8.phpt @@ -0,0 +1,87 @@ +--TEST-- +Test file_get_contents() function : variation - obscure filenames +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing file_get_contents() : variation *** +-- Iteration 0 -- + +Warning: file_get_contents(-1): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 1 -- + +Warning: file_get_contents(1): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 2 -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: file_get_contents( ): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: file_get_contents(): Filename cannot be empty in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: file_get_contents() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 8 -- + +Warning: file_get_contents(/no/such/file/dir): failed to open stream: No such file or directory in %s on line %d +bool(false) +-- Iteration 9 -- + +Warning: file_get_contents(php/php): failed to open stream: %s in %s on line %d +bool(false) + +*** Done *** diff --git a/ext/standard/tests/file/file_get_contents_variation9.phpt b/ext/standard/tests/file/file_get_contents_variation9.phpt new file mode 100644 index 000000000..988a3102d --- /dev/null +++ b/ext/standard/tests/file/file_get_contents_variation9.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test file_get_contents() function : variation - linked files +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing file_get_contents() : variation *** +string(330) "Here is a repeated amount of data%s" +string(330) "Here is a repeated amount of data%s" +string(330) "Here is a repeated amount of data%s" + +*** Done *** + diff --git a/ext/standard/tests/file/file_put_contents_variation1.phpt b/ext/standard/tests/file/file_put_contents_variation1.phpt new file mode 100644 index 000000000..35d193095 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation1.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test file_put_contents() function : variation - test append flag +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing file_put_contents() : variation *** +int(25) +int(18) +43 +The first string to write, followed by this +25 +The first string to write +===DONE=== diff --git a/ext/standard/tests/file/file_put_contents_variation2.phpt b/ext/standard/tests/file/file_put_contents_variation2.phpt new file mode 100644 index 000000000..dccb96792 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation2.phpt @@ -0,0 +1,167 @@ +--TEST-- +Test file_put_contents() function : usage variation - different data types to write +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for str + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + file_put_contents($filename, $value); + readfile($filename); +}; +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_put_contents() : usage variation *** + +--int 0-- +0 +--int 1-- +1 +--int 12345-- +12345 +--int -12345-- +-2345 +--float 10.5-- +10.5 +--float -10.5-- +-10.5 +--float 12.3456789000e10-- +123456789000 +--float -12.3456789000e10-- +-123456789000 +--float .5-- +0.5 +--empty array-- + +--int indexed array-- +123 +--associative array-- +12 +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 8 - Array to string conversion, %s(%d) +fooArrayArray +--uppercase NULL-- + +--lowercase null-- + +--lowercase true-- +1 +--lowercase false-- + +--uppercase TRUE-- +1 +--uppercase FALSE-- + +--empty string DQ-- + +--empty string SQ-- + +--instance of classWithToString-- +Class A object +--instance of classWithoutToString-- + +--undefined var-- + +--unset var-- +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/file_put_contents_variation3.phpt b/ext/standard/tests/file/file_put_contents_variation3.phpt new file mode 100644 index 000000000..e16f6403c --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation3.phpt @@ -0,0 +1,250 @@ +--TEST-- +Test file_put_contents() function : usage variation - different types for context. +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //non context resource + 'file resource' => $fileRes, + + //valid stream context + 'stream context' => $strContext, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file_put_contents($absFile, $data, null, $value) ); +}; + +unlink($absFile); +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing file_put_contents() : usage variation *** + +--int 0-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, integer given, %s(%d) +NULL + +--int 1-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, integer given, %s(%d) +NULL + +--int 12345-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, integer given, %s(%d) +NULL + +--int -12345-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, integer given, %s(%d) +NULL + +--float 10.5-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, double given, %s(%d) +NULL + +--float -10.5-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, double given, %s(%d) +NULL + +--float 12.3456789000e10-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, double given, %s(%d) +NULL + +--float -12.3456789000e10-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, double given, %s(%d) +NULL + +--float .5-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, double given, %s(%d) +NULL + +--empty array-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, array given, %s(%d) +NULL + +--uppercase NULL-- +int(13) + +--lowercase null-- +int(13) + +--lowercase true-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, boolean given, %s(%d) +NULL + +--lowercase false-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, boolean given, %s(%d) +NULL + +--uppercase TRUE-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, boolean given, %s(%d) +NULL + +--uppercase FALSE-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, boolean given, %s(%d) +NULL + +--empty string DQ-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file_put_contents() expects parameter 4 to be resource, object given, %s(%d) +NULL + +--undefined var-- +int(13) + +--unset var-- +int(13) + +--file resource-- +Error: 2 - file_put_contents(): supplied resource is not a valid Stream-Context resource, %s(%d) +int(13) + +--stream context-- +int(13) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/file_put_contents_variation4.phpt b/ext/standard/tests/file/file_put_contents_variation4.phpt new file mode 100644 index 000000000..15fdceb8d --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation4.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test file_put_contents() function : variation - include path testing +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing file_put_contents() : variation *** +File in include path +File in include path +===DONE=== diff --git a/ext/standard/tests/file/file_put_contents_variation5.phpt b/ext/standard/tests/file/file_put_contents_variation5.phpt new file mode 100644 index 000000000..d4ccacc25 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation5.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test file_put_contents() function : variation - include path testing +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing file_put_contents() : variation *** +File in script location +File in script location +File in script location +File in script location +===DONE=== + diff --git a/ext/standard/tests/file/file_put_contents_variation6.phpt b/ext/standard/tests/file/file_put_contents_variation6.phpt new file mode 100644 index 000000000..dbe6c9daa --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation6.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test file_put_contents() function : variation - include path testing +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing file_put_contents() : variation *** +File in include path. This was appended +File in include path. This was appended +===DONE=== diff --git a/ext/standard/tests/file/file_put_contents_variation7-win32.phpt b/ext/standard/tests/file/file_put_contents_variation7-win32.phpt new file mode 100644 index 000000000..d7bfdf923 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation7-win32.phpt @@ -0,0 +1,130 @@ +--TEST-- +Test file_put_contents() function : usage variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing file_put_contents() : usage variation *** + +-- Iteration 1 -- +Data written correctly + +-- Iteration 2 -- +Data written correctly + +-- Iteration 3 -- +Data written correctly + +-- Iteration 4 -- +Data written correctly + +-- Iteration 5 -- + +Warning: file_put_contents(%sfilePutContentsVar7.dir\filePutContentsVar7Sub\..\\\filePutContentsVar7Sub\\..\\..\filePutContentsVar7Sub\FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +-- Iteration 6 -- + +Warning: file_put_contents(%sfilePutContentsVar7.dir\filePutContentsVar7Sub\BADDIR\FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +-- Iteration 7 -- +Data written correctly + +-- Iteration 8 -- +Data written correctly + +-- Iteration 9 -- +Data written correctly + +-- Iteration 10 -- +Data written correctly + +-- Iteration 11 -- + +Warning: file_put_contents(BADDIR\FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +-- Iteration 12 -- +Data written correctly + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_put_contents_variation7.phpt b/ext/standard/tests/file/file_put_contents_variation7.phpt new file mode 100644 index 000000000..5c8e5f360 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation7.phpt @@ -0,0 +1,119 @@ +--TEST-- +Test file_put_contents() function : usage variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing file_put_contents() : usage variation *** + +-- Iteration 1 -- +Data written correctly + +-- Iteration 2 -- +Data written correctly + +-- Iteration 3 -- +Data written correctly + +-- Iteration 4 -- +Data written correctly + +-- Iteration 5 -- + +Warning: file_put_contents(%sfilePutContentsVar7.dir/filePutContentsVar7Sub/..///filePutContentsVar7Sub//..//../filePutContentsVar7Sub/FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +-- Iteration 6 -- + +Warning: file_put_contents(%sfilePutContentsVar7.dir/filePutContentsVar7Sub/BADDIR/FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +-- Iteration 7 -- +Data written correctly + +-- Iteration 8 -- +Data written correctly + +-- Iteration 9 -- +Data written correctly + +-- Iteration 10 -- +Data written correctly + +-- Iteration 11 -- + +Warning: file_put_contents(BADDIR/FileGetContentsVar7.tmp): failed to open stream: %s in %s on line %d +No data written + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_put_contents_variation8-win32.phpt b/ext/standard/tests/file/file_put_contents_variation8-win32.phpt new file mode 100644 index 000000000..1609b10e1 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation8-win32.phpt @@ -0,0 +1,98 @@ +--TEST-- +Test file_put_contents() function : usage variation - obscure filenames +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + -1, + "TRUE" => TRUE, + "FALSE" => FALSE, + "NULL" => NULL, + "\"\"" => "", + "\" \"" => " ", + "\\0" => "\0", + "array()" => array(), + + /* prefix with path separator of a non existing directory*/ + "/no/such/file/dir" => "/no/such/file/dir", + "php/php"=> "php/php" + +); + +foreach($names_arr as $key =>$value) { + echo "\n-- Filename: $key --\n"; + $res = file_put_contents($value, "Some data"); + if ($res !== false && $res != null) { + echo "$res bytes written to: $value\n"; + unlink($value); + } else { + echo "Failed to write data to: $key\n"; + } +}; + +?> +===Done=== +--EXPECTF-- +*** Testing file_put_contents() : usage variation *** + +-- Filename: -1 -- +9 bytes written to: -1 + +-- Filename: TRUE -- +9 bytes written to: 1 + +-- Filename: FALSE -- + +Warning: file_put_contents(): Filename cannot be empty in %s on line %d +Failed to write data to: FALSE + +-- Filename: NULL -- + +Warning: file_put_contents(): Filename cannot be empty in %s on line %d +Failed to write data to: NULL + +-- Filename: "" -- + +Warning: file_put_contents(): Filename cannot be empty in %s on line %d +Failed to write data to: "" + +-- Filename: " " -- + +Warning: file_put_contents( ): failed to open stream: Permission denied in %s on line %d +Failed to write data to: " " + +-- Filename: \0 -- + +Warning: file_put_contents(): Filename cannot be empty in %s on line %d +Failed to write data to: \0 + +-- Filename: array() -- + +Warning: file_put_contents() expects parameter 1 to be string, array given in %s on line %d +Failed to write data to: array() + +-- Filename: /no/such/file/dir -- + +Warning: file_put_contents(/no/such/file/dir): failed to open stream: %s in %s on line %d +Failed to write data to: /no/such/file/dir + +-- Filename: php/php -- + +Warning: file_put_contents(php/php): failed to open stream: %s in %s on line %d +Failed to write data to: php/php +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/file/file_put_contents_variation8.phpt b/ext/standard/tests/file/file_put_contents_variation8.phpt new file mode 100644 index 000000000..1407a81db Binary files /dev/null and b/ext/standard/tests/file/file_put_contents_variation8.phpt differ diff --git a/ext/standard/tests/file/file_put_contents_variation9.phpt b/ext/standard/tests/file/file_put_contents_variation9.phpt new file mode 100644 index 000000000..7ad09c449 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents_variation9.phpt @@ -0,0 +1,70 @@ +--TEST-- +est file_put_contents() function : usage variation - linked files +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing file_put_contents() : usage variation *** +int(17) +int(11) +Here is some data, more data +int(17) +int(11) +Here is some data, more data +int(17) +int(11) +Here is some data, more data + +*** Done *** diff --git a/ext/standard/tests/file/file_variation2.phpt b/ext/standard/tests/file/file_variation2.phpt new file mode 100644 index 000000000..f9c1ef840 --- /dev/null +++ b/ext/standard/tests/file/file_variation2.phpt @@ -0,0 +1,210 @@ +--TEST-- +Test file() function : first parameter variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for filename + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file($value, $flags, $context) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing file() : usage variation *** + +--int 0-- +Error: 2 - file(0): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 1-- +Error: 2 - file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - file(12345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - file(-2345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - file(10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - file(-10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - file(123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - file(-123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float .5-- +Error: 2 - file(0.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--empty array-- +Error: 2 - file() expects parameter 1 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file() expects parameter 1 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file() expects parameter 1 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file() expects parameter 1 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - file(Class A object): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - file() expects parameter 1 to be string, object given, %s(%d) +NULL + +--undefined var-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) + +--unset var-- +Error: 2 - file(): Filename cannot be empty, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/file_variation3.phpt b/ext/standard/tests/file/file_variation3.phpt new file mode 100644 index 000000000..1dd8520a9 --- /dev/null +++ b/ext/standard/tests/file/file_variation3.phpt @@ -0,0 +1,294 @@ +--TEST-- +Test file() function : second parameter variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for flags + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file($filename, $value, $context) ); +}; + +unlink(__FILE__ . ".tmp"); + +?> +===DONE=== +--EXPECTF-- +*** Testing file() : usage variation *** + +--float 10.5-- +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} + +--float -10.5-- +Error: 2 - file(): '-10' flag is not supported, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - file(): '%i' flag is not supported, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - file(): '%i' flag is not supported, %s(%d) +bool(false) + +--float .5-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--empty array-- +Error: 2 - file() expects parameter 2 to be long, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file() expects parameter 2 to be long, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file() expects parameter 2 to be long, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file() expects parameter 2 to be long, array given, %s(%d) +NULL + +--uppercase NULL-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--lowercase null-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--lowercase true-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--lowercase false-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--uppercase TRUE-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--uppercase FALSE-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--empty string DQ-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file() expects parameter 2 to be long, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file() expects parameter 2 to be long, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file() expects parameter 2 to be long, object given, %s(%d) +NULL + +--undefined var-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--unset var-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +===DONE=== diff --git a/ext/standard/tests/file/file_variation4.phpt b/ext/standard/tests/file/file_variation4.phpt new file mode 100644 index 000000000..501036814 --- /dev/null +++ b/ext/standard/tests/file/file_variation4.phpt @@ -0,0 +1,291 @@ +--TEST-- +Test file() function : third parameter variation +--FILE-- + 1, 'two' => 2); + +// create a file stream resource +$tmp_filename = __FILE__ . ".tmp2"; +$file_stream_resource = fopen($tmp_filename, "w+"); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // file stream resource + 'file stream resource' => $file_stream_resource, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( file($filename, $flags, $value) ); +}; + +fclose($file_stream_resource); +unlink($tmp_filename); +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing file() : usage variation *** + +--int 0-- +Error: 2 - file() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int 1-- +Error: 2 - file() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int 12345-- +Error: 2 - file() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--int -12345-- +Error: 2 - file() expects parameter 3 to be resource, integer given, %s(%d) +NULL + +--float 10.5-- +Error: 2 - file() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float -10.5-- +Error: 2 - file() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float 12.3456789000e10-- +Error: 2 - file() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float -12.3456789000e10-- +Error: 2 - file() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--float .5-- +Error: 2 - file() expects parameter 3 to be resource, double given, %s(%d) +NULL + +--empty array-- +Error: 2 - file() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - file() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - file() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - file() expects parameter 3 to be resource, array given, %s(%d) +NULL + +--uppercase NULL-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--lowercase null-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--lowercase true-- +Error: 2 - file() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--lowercase false-- +Error: 2 - file() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--uppercase TRUE-- +Error: 2 - file() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--uppercase FALSE-- +Error: 2 - file() expects parameter 3 to be resource, boolean given, %s(%d) +NULL + +--empty string DQ-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - file() expects parameter 3 to be resource, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - file() expects parameter 3 to be resource, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - file() expects parameter 3 to be resource, object given, %s(%d) +NULL + +--undefined var-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--unset var-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +--file stream resource-- +Error: 2 - file(): supplied resource is not a valid Stream-Context resource, %s(%d) +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +===DONE=== diff --git a/ext/standard/tests/file/file_variation5-win32.phpt b/ext/standard/tests/file/file_variation5-win32.phpt new file mode 100644 index 000000000..d6390db6d --- /dev/null +++ b/ext/standard/tests/file/file_variation5-win32.phpt @@ -0,0 +1,74 @@ +--TEST-- +file() with various paths +--SKIPIF-- + +--FILE-- + +--EXPECT-- +file() on a path containing .. and . +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +file() on a path containing .. with invalid directories +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +file() on a relative path from a different working directory +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} diff --git a/ext/standard/tests/file/file_variation5.phpt b/ext/standard/tests/file/file_variation5.phpt new file mode 100644 index 000000000..1f1549111 --- /dev/null +++ b/ext/standard/tests/file/file_variation5.phpt @@ -0,0 +1,94 @@ +--TEST-- +file() with various paths +--SKIPIF-- + +--FILE-- + +--EXPECT-- +file() on a path containing .. and . +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +file() on a path containing .. with invalid directories +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} + +file() on a linked file +bool(true) +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +bool(true) + +file() on a relative path from a different working directory +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} diff --git a/ext/standard/tests/file/file_variation6.phpt b/ext/standard/tests/file/file_variation6.phpt new file mode 100644 index 000000000..7e34f285d --- /dev/null +++ b/ext/standard/tests/file/file_variation6.phpt @@ -0,0 +1,261 @@ +--TEST-- +file() with a range of integer flag values +--FILE-- + +--EXPECTF-- +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(7) "Line 2 +" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} +array(3) { + [0]=> + string(6) "Line 1" + [1]=> + string(6) "Line 2" + [2]=> + string(6) "Line 3" +} + +Warning: file(): '24' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '25' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '26' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '27' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '28' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '29' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '30' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '31' flag is not supported in %s on line %d +bool(false) + +Warning: file(): '32' flag is not supported in %s on line %d +bool(false) diff --git a/ext/standard/tests/file/file_variation7.phpt b/ext/standard/tests/file/file_variation7.phpt new file mode 100644 index 000000000..3cd9d7fc8 --- /dev/null +++ b/ext/standard/tests/file/file_variation7.phpt @@ -0,0 +1,87 @@ +--TEST-- +file() on a file with blank lines +--FILE-- + +--EXPECT-- +file(): +array(5) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(1) " +" + [2]=> + string(2) " +" + [3]=> + string(3) " +" + [4]=> + string(7) "\Line 3" +} + +file() with FILE_IGNORE_NEW_LINES: +array(5) { + [0]=> + string(6) "Line 1" + [1]=> + string(0) "" + [2]=> + string(1) " " + [3]=> + string(2) " " + [4]=> + string(7) "\Line 3" +} + +file() with FILE_SKIP_EMPTY_LINES: +array(5) { + [0]=> + string(7) "Line 1 +" + [1]=> + string(1) " +" + [2]=> + string(2) " +" + [3]=> + string(3) " +" + [4]=> + string(7) "\Line 3" +} + +file() with FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES: +array(4) { + [0]=> + string(6) "Line 1" + [1]=> + string(1) " " + [2]=> + string(2) " " + [3]=> + string(7) "\Line 3" +} diff --git a/ext/standard/tests/file/file_variation8-win32.phpt b/ext/standard/tests/file/file_variation8-win32.phpt new file mode 100644 index 000000000..ca3be36b5 --- /dev/null +++ b/ext/standard/tests/file/file_variation8-win32.phpt @@ -0,0 +1,142 @@ +--TEST-- +Test file() function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing file() : variation *** + +-- Iteration 1 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 2 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 3 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 4 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 5 -- + +Warning: file(%sfileVar8.dir\fileVar8Sub\..\\\fileVar8Sub\\..\\..\fileVar8Sub\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: file(%sfileVar8.dir\fileVar8Sub\BADDIR\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 8 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 9 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 10 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 11 -- + +Warning: file(BADDIR\FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 12 -- +array(1) { + [0]=> + string(13) "contents read" +} + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_variation8.phpt b/ext/standard/tests/file/file_variation8.phpt new file mode 100644 index 000000000..be18fcb03 --- /dev/null +++ b/ext/standard/tests/file/file_variation8.phpt @@ -0,0 +1,128 @@ +--TEST-- +Test file function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing file() : variation *** + +-- Iteration 1 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 2 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 3 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 4 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 5 -- + +Warning: file(%sfileVar8.dir/fileVar8Sub/..///fileVar8Sub//..//../fileVar8Sub/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: file(%sfileVar8.dir/fileVar8Sub/BADDIR/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 8 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 9 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 10 -- +array(1) { + [0]=> + string(13) "contents read" +} + +-- Iteration 11 -- + +Warning: file(BADDIR/FileGetContentsVar7.tmp): failed to open stream: No such file or directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/file_variation9.phpt b/ext/standard/tests/file/file_variation9.phpt new file mode 100644 index 000000000..9ddd1e620 --- /dev/null +++ b/ext/standard/tests/file/file_variation9.phpt @@ -0,0 +1,89 @@ +--TEST-- +Test file function : variation - test various endings of a file +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing file() : variation *** +array(2) { + [0]=> + string(32) "File ends on a single character +" + [1]=> + string(1) "a" +} +array(1) { + [0]=> + string(24) "File ends on a new line +" +} +array(4) { + [0]=> + string(31) "File ends on multiple newlines +" + [1]=> + string(1) " +" + [2]=> + string(1) " +" + [3]=> + string(1) " +" +} +array(4) { + [0]=> + string(9) "File has +" + [1]=> + string(1) " +" + [2]=> + string(28) "multiple lines and newlines +" + [3]=> + string(1) " +" +} +array(3) { + [0]=> + string(10) "File has +" + [1]=> + string(15) "multiple crlfs +" + [2]=> + string(2) " +" +} + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/filegroup_variation1.phpt b/ext/standard/tests/file/filegroup_variation1.phpt new file mode 100644 index 000000000..ee76477ac --- /dev/null +++ b/ext/standard/tests/file/filegroup_variation1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test filegroup() function: usage variations - links +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--CLEAN-- + + +--EXPECTF-- +*** Testing filegroup() with links *** +int(%d) +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/filegroup_variation2.phpt b/ext/standard/tests/file/filegroup_variation2.phpt new file mode 100644 index 000000000..14f6b86c3 --- /dev/null +++ b/ext/standard/tests/file/filegroup_variation2.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test filegroup() function: usage variations - invalid filenames +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing Invalid file types *** + +Warning: filegroup(): stat failed for -2.34555 in %s on line %d +bool(false) + +Warning: filegroup(): stat failed for in %s on line %d +bool(false) +bool(false) + +Warning: filegroup(): stat failed for 1 in %s on line %d +bool(false) +bool(false) +bool(false) + +Warning: filegroup(): stat failed for Resource id #%d in %s on line %d +bool(false) + +Warning: filegroup(): stat failed for 1234 in %s on line %d +bool(false) + +Warning: filegroup(): stat failed for 0 in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/filegroup_variation3.phpt b/ext/standard/tests/file/filegroup_variation3.phpt new file mode 100644 index 000000000..dd875a082 --- /dev/null +++ b/ext/standard/tests/file/filegroup_variation3.phpt @@ -0,0 +1,81 @@ +--TEST-- +Test filegroup() function: usage variations - diff. path notations +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing filegroup() with different notations of file names *** +- Iteration 1 - +int(%d) +- Iteration 2 - + +Warning: filegroup(): stat failed for %s//filegroup_variation3/filegroup_variation3.tmp/ in %s on line %d +bool(false) +- Iteration 3 - +int(%d) +- Iteration 4 - +int(%d) +- Iteration 5 - + +Warning: filegroup(): stat failed for %s//filegroup_variation3/*.tmp in %s on line %d +bool(false) +- Iteration 6 - + +Warning: filegroup(): stat failed for %s/filegroup_variation3/filegroup*.tmp in %s on line %d +bool(false) +- Iteration 7 - +int(%d) +- Iteration 8 - +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileinode_variation1.phpt b/ext/standard/tests/file/fileinode_variation1.phpt new file mode 100644 index 000000000..d251cc3f8 --- /dev/null +++ b/ext/standard/tests/file/fileinode_variation1.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test fileinode() function: usage variations - links +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--CLEAN-- + + +--EXPECTF-- +*** Testing fileinode() with links *** +int(%d) +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileinode_variation2.phpt b/ext/standard/tests/file/fileinode_variation2.phpt new file mode 100644 index 000000000..65ba056e6 --- /dev/null +++ b/ext/standard/tests/file/fileinode_variation2.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test fileinode() function: usage variations - invalid filenames +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing Invalid file types *** + +Warning: fileinode(): stat failed for -2.34555 in %s on line %d +bool(false) + +Warning: fileinode(): stat failed for in %s on line %d +bool(false) +bool(false) + +Warning: fileinode(): stat failed for 1 in %s on line %d +bool(false) +bool(false) +bool(false) + +Warning: fileinode(): stat failed for Resource id #%d in %s on line %d +bool(false) + +Warning: fileinode(): stat failed for 1234 in %s on line %d +bool(false) + +Warning: fileinode(): stat failed for 0 in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/fileinode_variation3.phpt b/ext/standard/tests/file/fileinode_variation3.phpt new file mode 100644 index 000000000..c81b57324 --- /dev/null +++ b/ext/standard/tests/file/fileinode_variation3.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test fileinode() function: usage variations - diff. path notations +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing fileinode() with different notations of file names *** +- Iteration 1 - +int(%d) +- Iteration 2 - + +Warning: fileinode(): stat failed for %s//fileinode_variation3/fileinode_variation3.tmp/ in %s on line %d +bool(false) +- Iteration 3 - +int(%d) +- Iteration 4 - +int(%d) +- Iteration 5 - + +Warning: fileinode(): stat failed for %s//fileinode_variation3/*.tmp in %s on line %d +bool(false) +- Iteration 6 - + +Warning: fileinode(): stat failed for %s/fileinode_variation3/fileinode*.tmp in %s on line %d +bool(false) +- Iteration 7 - +int(%d) +- Iteration 8 - +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileowner_variation1.phpt b/ext/standard/tests/file/fileowner_variation1.phpt new file mode 100644 index 000000000..b70ac366d --- /dev/null +++ b/ext/standard/tests/file/fileowner_variation1.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test fileowner() function: usage variations - links +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--CLEAN-- + + +--EXPECTF-- +*** Testing fileowner() with links *** +int(%d) +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileowner_variation2.phpt b/ext/standard/tests/file/fileowner_variation2.phpt new file mode 100644 index 000000000..c529c1bc3 --- /dev/null +++ b/ext/standard/tests/file/fileowner_variation2.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test fileowner() function: usage variations - invalid filenames +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing Invalid file types *** + +Warning: fileowner(): stat failed for -2.34555 in %s on line %d +bool(false) + +Warning: fileowner(): stat failed for in %s on line %d +bool(false) +bool(false) + +Warning: fileowner(): stat failed for 1 in %s on line %d +bool(false) +bool(false) +bool(false) + +Warning: fileowner(): stat failed for Resource id #%d in %s on line %d +bool(false) + +Warning: fileowner(): stat failed for 1234 in %s on line %d +bool(false) + +Warning: fileowner(): stat failed for 0 in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/fileowner_variation3.phpt b/ext/standard/tests/file/fileowner_variation3.phpt new file mode 100644 index 000000000..2a322b6db --- /dev/null +++ b/ext/standard/tests/file/fileowner_variation3.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test fileowner() function: usage variations - diff. path notations +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing fileowner() with different notations of file names *** +- Iteration 1 - +int(%d) +- Iteration 2 - + +Warning: fileowner(): stat failed for %s//fileowner_variation3/fileowner_variation3.tmp/ in %s on line %d +bool(false) +- Iteration 3 - +int(%d) +- Iteration 4 - +int(%d) +- Iteration 5 - + +Warning: fileowner(): stat failed for %s//fileowner_variation3/*.tmp in %s on line %d +bool(false) +- Iteration 6 - + +Warning: fileowner(): stat failed for %s/fileowner_variation3/fileowner*.tmp in %s on line %d +bool(false) +- Iteration 7 - +int(%d) +- Iteration 8 - +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileperms_variation1.phpt b/ext/standard/tests/file/fileperms_variation1.phpt new file mode 100644 index 000000000..e90cf8784 --- /dev/null +++ b/ext/standard/tests/file/fileperms_variation1.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test fileperms() function: usage variations - links +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--CLEAN-- + + +--EXPECTF-- +*** Testing fileperms() with links *** +int(%d) +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/fileperms_variation2.phpt b/ext/standard/tests/file/fileperms_variation2.phpt new file mode 100644 index 000000000..ecd6cedb4 --- /dev/null +++ b/ext/standard/tests/file/fileperms_variation2.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test fileperms() function: usage variations - invalid filenames +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing Invalid file types *** + +Warning: fileperms(): stat failed for -2.34555 in %s on line %d +bool(false) + +Warning: fileperms(): stat failed for in %s on line %d +bool(false) +bool(false) + +Warning: fileperms(): stat failed for 1 in %s on line %d +bool(false) +bool(false) +bool(false) + +Warning: fileperms(): stat failed for Resource id #%d in %s on line %d +bool(false) + +Warning: fileperms(): stat failed for 1234 in %s on line %d +bool(false) + +Warning: fileperms(): stat failed for 0 in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/fileperms_variation3.phpt b/ext/standard/tests/file/fileperms_variation3.phpt new file mode 100644 index 000000000..38101e363 --- /dev/null +++ b/ext/standard/tests/file/fileperms_variation3.phpt @@ -0,0 +1,81 @@ +--TEST-- +Test fileperms() function: usage variations - diff. path notations +--CREDITS-- +Dave Kelsey +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing fileperms() with different notations of file names *** +- Iteration 1 - +int(%d) +- Iteration 2 - + +Warning: fileperms(): stat failed for %s//fileperms_variation3/fileperms_variation3.tmp/ in %s on line %d +bool(false) +- Iteration 3 - +int(%d) +- Iteration 4 - +int(%d) +- Iteration 5 - + +Warning: fileperms(): stat failed for %s//fileperms_variation3/*.tmp in %s on line %d +bool(false) +- Iteration 6 - + +Warning: fileperms(): stat failed for %s/fileperms_variation3/fileperms*.tmp in %s on line %d +bool(false) +- Iteration 7 - +int(%d) +- Iteration 8 - +int(%d) + +*** Done *** diff --git a/ext/standard/tests/file/filesize_variation1.phpt b/ext/standard/tests/file/filesize_variation1.phpt index a8a4d4e7f..8d18f68ee 100644 --- a/ext/standard/tests/file/filesize_variation1.phpt +++ b/ext/standard/tests/file/filesize_variation1.phpt @@ -32,14 +32,14 @@ echo "Done\n"; --EXPECTF-- *** Testing filesize(): usage variations *** *** Checking filesize() with different size of files *** -int(1024) -int(1025024) -int(2049024) -int(3073024) -int(4097024) -int(5121024) -int(6145024) -int(7169024) -int(8193024) -int(9217024) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) +int(%d) Done diff --git a/ext/standard/tests/file/filesize_variation5.phpt b/ext/standard/tests/file/filesize_variation5.phpt new file mode 100644 index 000000000..638f8ba8e --- /dev/null +++ b/ext/standard/tests/file/filesize_variation5.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test filesize() function: usage variations - size of files +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing filesize(): usage variations *** +bool(false) +bool(false) +bool(false) + +Warning: filesize(): stat failed for in %s on line %d +bool(false) + +Warning: filesize(): stat failed for | in %s on line %d +bool(false) +*** Done *** diff --git a/ext/standard/tests/file/filetype_variation2.phpt b/ext/standard/tests/file/filetype_variation2.phpt new file mode 100644 index 000000000..95885757c --- /dev/null +++ b/ext/standard/tests/file/filetype_variation2.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test filetype() function: Variations +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing filetype() with various types *** +-- Checking for char -- +char +-- Checking for block -- +block + +*** Done *** diff --git a/ext/standard/tests/file/flock_error.phpt b/ext/standard/tests/file/flock_error.phpt index 077e5430b..fe61e2a17 100644 --- a/ext/standard/tests/file/flock_error.phpt +++ b/ext/standard/tests/file/flock_error.phpt @@ -94,7 +94,7 @@ NULL Warning: flock() expects parameter 2 to be long, string given in %s on line %d NULL -Warning: flock(): 6 is not a valid stream resource in %s on line %d +Warning: flock(): %d is not a valid stream resource in %s on line %d bool(false) Warning: flock() expects parameter 1 to be resource, string given in %s on line %d diff --git a/ext/standard/tests/file/fopen_include_path.inc b/ext/standard/tests/file/fopen_include_path.inc new file mode 100644 index 000000000..7d6723a81 --- /dev/null +++ b/ext/standard/tests/file/fopen_include_path.inc @@ -0,0 +1,92 @@ + \ No newline at end of file diff --git a/ext/standard/tests/file/fopen_variation10-win32.phpt b/ext/standard/tests/file/fopen_variation10-win32.phpt new file mode 100644 index 000000000..cae634cb2 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation10-win32.phpt @@ -0,0 +1,143 @@ +--TEST-- +Test fopen() function : variation: interesting paths, no use include path +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** + +--c:\-- +file in root + +--c:-- +file in root + +--c-- + +Warning: fopen(c\fopen_variation10.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--\-- + +Warning: fopen(\\fopen_variation10.tmp): failed to open stream: Invalid argument in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--/-- + +Warning: fopen(/\fopen_variation10.tmp): failed to open stream: Invalid argument in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--c:fopen10.tmpdirTwo-- +file in fopen10.tmpdirTwo + +--c:adir-- + +Warning: fopen(c:adir\fopen_variation10.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--c:\/-- +file in root + +--c:\fopen10.tmpdirTwo\/-- +file in fopen10.tmpdirTwo + +--c:\fopen10.tmpdirTwo\-- +file in fopen10.tmpdirTwo + +--c:\fopen10.tmpdirTwo/-- +file in fopen10.tmpdirTwo + +--/%s/fopen10.tmpDir-- +file in fopen10.tmpDir + +--/sortout-- + +Warning: fopen(/sortout\fopen_variation10.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation11-win32.phpt b/ext/standard/tests/file/fopen_variation11-win32.phpt new file mode 100644 index 000000000..aca4e8f9a --- /dev/null +++ b/ext/standard/tests/file/fopen_variation11-win32.phpt @@ -0,0 +1,142 @@ +--TEST-- +Test fopen() function : variation: interesting paths, use include path = true +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** + +--c:\-- +file in root + +--c:-- +file in root + +--c-- + +Warning: fopen(c\fopen_variation11.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--\-- + +Warning: fopen(\\fopen_variation11.tmp): failed to open stream: Invalid argument in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--/-- + +Warning: fopen(/\fopen_variation11.tmp): failed to open stream: Invalid argument in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--c:fopen11.tmpdirTwo-- +file in fopen11.tmpdirTwo + +--c:adir-- + +Warning: fopen(c:adir\fopen_variation11.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +--c:\/-- +file in root + +--c:\fopen11.tmpdirTwo\/-- +file in fopen11.tmpdirTwo + +--c:\fopen11.tmpdirTwo\-- +file in fopen11.tmpdirTwo + +--c:\fopen11.tmpdirTwo/-- +file in fopen11.tmpdirTwo + +--/%s/fopen11.tmpDir-- +file in fopen11.tmpDir + +--/sortout-- + +Warning: fopen(/sortout\fopen_variation11.tmp): failed to open stream: No such file or directory in %s on line %d +file not opened for read + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation12.phpt b/ext/standard/tests/file/fopen_variation12.phpt new file mode 100644 index 000000000..bfda7f2a3 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation12.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test fopen() function : variation: use include path (path is bad) create a file (relative) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +Not created in working dir +created in script dir +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation13.phpt b/ext/standard/tests/file/fopen_variation13.phpt new file mode 100644 index 000000000..d540d7000 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation13.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test fopen() function : variation: use include path create a file (absolute) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +Created in correct location +Created in correct location +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation14-win32.phpt b/ext/standard/tests/file/fopen_variation14-win32.phpt new file mode 100644 index 000000000..554d8c6de --- /dev/null +++ b/ext/standard/tests/file/fopen_variation14-win32.phpt @@ -0,0 +1,189 @@ +--TEST-- +Test fopen() function : variation: file uri, no use include path +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** +--- READ: file://fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://./fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://./fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://./fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://./fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://.\fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://.\fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://.\fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://.\fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://.\fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://.\fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file://%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- READ: file://%s/fopen14.tmpDir\fopen_variation14.tmp --- +test passed +--- WRITE: file://%s/fopen14.tmpDir\fopen_variation14.tmp --- +test passed +--- READ: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- READ: file://../fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://../fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://../fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://../fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://..\fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://..\fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://..\fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://..\fopen14.tmpDir\fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://..\fopen14.tmpDir\fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://..\fopen14.tmpDir\fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file://%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- READ: file://%s/fopen14.tmpDir\fopen_variation14.tmp --- +test passed +--- WRITE: file://%s/fopen14.tmpDir\fopen_variation14.tmp --- +test passed +--- READ: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +===DONE=== + diff --git a/ext/standard/tests/file/fopen_variation14.phpt b/ext/standard/tests/file/fopen_variation14.phpt new file mode 100644 index 000000000..aa4e05b89 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation14.phpt @@ -0,0 +1,134 @@ +--TEST-- +Test fopen() function : variation: file uri, no use include path +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** +--- READ: file://fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://./fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://./fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://./fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://./fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- READ: file://../fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://../fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://../fopen14.tmpDir/fopen_variation14.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen14.tmpDir/fopen_variation14.tmp in %s on line %d + +Warning: fopen(file://../fopen14.tmpDir/fopen_variation14.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +--- WRITE: file:///%s/fopen14.tmpDir/fopen_variation14.tmp --- +test passed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fopen_variation15-win32.phpt b/ext/standard/tests/file/fopen_variation15-win32.phpt new file mode 100644 index 000000000..8599306ed --- /dev/null +++ b/ext/standard/tests/file/fopen_variation15-win32.phpt @@ -0,0 +1,193 @@ +--TEST-- +Test fopen() function : variation: file uri, use include path = true +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** +--- READ: file://fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://./fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://./fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://./fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://./fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://.\fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://.\fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://.\fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://.\fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://.\fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://.\fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file://%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- READ: file://%s/fopen15.tmpDir\fopen_variation15.tmp --- +test passed +--- WRITE: file://%s/fopen15.tmpDir\fopen_variation15.tmp --- +test passed +--- READ: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- READ: file://../fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://../fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://../fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://../fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://..\fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://..\fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://..\fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://..\fopen15.tmpDir\fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://..\fopen15.tmpDir\fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://..\fopen15.tmpDir\fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file://%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- READ: file://%s/fopen15.tmpDir\fopen_variation15.tmp --- +test passed +--- WRITE: file://%s/fopen15.tmpDir\fopen_variation15.tmp --- +test passed +--- READ: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +===DONE=== + diff --git a/ext/standard/tests/file/fopen_variation15.phpt b/ext/standard/tests/file/fopen_variation15.phpt new file mode 100644 index 000000000..24b01fbe8 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation15.phpt @@ -0,0 +1,138 @@ +--TEST-- +Test fopen() function : variation: file uri, use include path = true +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** +--- READ: file://fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file://./fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://./fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://./fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://./fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://./fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- READ: file://../fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://../fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- WRITE: file://../fopen15.tmpDir/fopen_variation15.tmp --- + +Warning: fopen(): remote host file access not supported, file://../fopen15.tmpDir/fopen_variation15.tmp in %s on line %d + +Warning: fopen(file://../fopen15.tmpDir/fopen_variation15.tmp): failed to open stream: no suitable wrapper could be found in %s on line %d +--- READ: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +--- WRITE: file:///%s/fopen15.tmpDir/fopen_variation15.tmp --- +test passed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fopen_variation16.phpt b/ext/standard/tests/file/fopen_variation16.phpt new file mode 100644 index 000000000..df6b98a4f --- /dev/null +++ b/ext/standard/tests/file/fopen_variation16.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test fopen() function : variation: use include path create and read a file (relative) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +created in dir1 +found file again in dir1 +created in dir1 +found file again in dir1 +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation17.phpt b/ext/standard/tests/file/fopen_variation17.phpt new file mode 100644 index 000000000..0d3b625cc --- /dev/null +++ b/ext/standard/tests/file/fopen_variation17.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test fopen() function : variation: use include path create and read a file (relative) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +created in dir1 +found file again in dir1 +created in dir1 +found file again in dir1 +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation19.phpt b/ext/standard/tests/file/fopen_variation19.phpt new file mode 100644 index 000000000..031ba4573 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation19.phpt @@ -0,0 +1,110 @@ +--TEST-- +Test fopen() function : variation: test opening linked files +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +*** testing reading of links *** +soft link:Hello World +hard link:Hello World +link of link:Hello World +*** test appending to links *** +soft link:Hello World again! +hard link:Hello World again! again! +link of link:Hello World again! again! again! +*** test overwriting links *** +soft link:Goodbye World +hard link:Goodbye World +link of link:Goodbye World +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation3.phpt b/ext/standard/tests/file/fopen_variation3.phpt new file mode 100644 index 000000000..3467a3a60 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation3.phpt @@ -0,0 +1,218 @@ +--TEST-- +Test fopen() function : usage variation different datatypes for use_include_path +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for use_include_path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = fopen($filename, $mode, $value); + if ($h !== false) { + echo "ok\n"; + fclose($h); + } + else { + var_dump($h); + } +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing fopen() : usage variation *** + +--int 0-- +ok + +--int 1-- +ok + +--int 12345-- +ok + +--int -12345-- +ok + +--float 10.5-- +ok + +--float -10.5-- +ok + +--float 12.3456789000e10-- +ok + +--float -12.3456789000e10-- +ok + +--float .5-- +ok + +--empty array-- +Error: 2 - fopen() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - fopen() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - fopen() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - fopen() expects parameter 3 to be boolean, array given, %s(%d) +bool(false) + +--uppercase NULL-- +ok + +--lowercase null-- +ok + +--lowercase true-- +ok + +--lowercase false-- +ok + +--uppercase TRUE-- +ok + +--uppercase FALSE-- +ok + +--empty string DQ-- +ok + +--empty string SQ-- +ok + +--string DQ-- +ok + +--string SQ-- +ok + +--mixed case string-- +ok + +--heredoc-- +ok + +--instance of classWithToString-- +Error: 2 - fopen() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - fopen() expects parameter 3 to be boolean, object given, %s(%d) +bool(false) + +--undefined var-- +ok + +--unset var-- +ok +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation4.phpt b/ext/standard/tests/file/fopen_variation4.phpt new file mode 100644 index 000000000..61d850c50 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation4.phpt @@ -0,0 +1,251 @@ +--TEST-- +Test fopen() function : usage variation different datatypes for stream context +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + //file resource + 'file resource' => $fileresource +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = fopen($filename, $mode, false, $value); + if ($h !== false) { + echo "ok\n"; + fclose($h); + } + else { + var_dump($h); + } +}; + +fclose($fileresource); + +?> +===DONE=== +--EXPECTF-- +*** Testing fopen() : usage variation *** + +--int 0-- +Error: 2 - fopen() expects parameter 4 to be resource, integer given, %s(%d) +bool(false) + +--int 1-- +Error: 2 - fopen() expects parameter 4 to be resource, integer given, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - fopen() expects parameter 4 to be resource, integer given, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - fopen() expects parameter 4 to be resource, integer given, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - fopen() expects parameter 4 to be resource, double given, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - fopen() expects parameter 4 to be resource, double given, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - fopen() expects parameter 4 to be resource, double given, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - fopen() expects parameter 4 to be resource, double given, %s(%d) +bool(false) + +--float .5-- +Error: 2 - fopen() expects parameter 4 to be resource, double given, %s(%d) +bool(false) + +--empty array-- +Error: 2 - fopen() expects parameter 4 to be resource, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - fopen() expects parameter 4 to be resource, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - fopen() expects parameter 4 to be resource, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - fopen() expects parameter 4 to be resource, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - fopen() expects parameter 4 to be resource, null given, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - fopen() expects parameter 4 to be resource, null given, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - fopen() expects parameter 4 to be resource, boolean given, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - fopen() expects parameter 4 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - fopen() expects parameter 4 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - fopen() expects parameter 4 to be resource, boolean given, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--string DQ-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--string SQ-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--heredoc-- +Error: 2 - fopen() expects parameter 4 to be resource, string given, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - fopen() expects parameter 4 to be resource, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - fopen() expects parameter 4 to be resource, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - fopen() expects parameter 4 to be resource, null given, %s(%d) +bool(false) + +--unset var-- +Error: 2 - fopen() expects parameter 4 to be resource, null given, %s(%d) +bool(false) + +--file resource-- +Error: 2 - fopen(): supplied resource is not a valid Stream-Context resource, %s(%d) +ok +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation5.phpt b/ext/standard/tests/file/fopen_variation5.phpt new file mode 100644 index 000000000..070ef712d --- /dev/null +++ b/ext/standard/tests/file/fopen_variation5.phpt @@ -0,0 +1,171 @@ +--TEST-- +Test fopen() function : variation: use include path and stream context (absolute directories in path) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** + +--- testing include path --- + +** testing with mode=r ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir + +** testing with mode=r+ ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir + +** testing with mode=rt ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir +===DONE=== + diff --git a/ext/standard/tests/file/fopen_variation6.phpt b/ext/standard/tests/file/fopen_variation6.phpt new file mode 100644 index 000000000..3a99212af --- /dev/null +++ b/ext/standard/tests/file/fopen_variation6.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test fopen() function : variation: use include path and stream context relative/absolute file +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** +This is an absolute file +This is a relative file +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation7.phpt b/ext/standard/tests/file/fopen_variation7.phpt new file mode 100644 index 000000000..54d567f0d --- /dev/null +++ b/ext/standard/tests/file/fopen_variation7.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test fopen() function : variation: use include path create a file (relative) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +Not created in working dir +created in dir1 +Not created in working dir +created in dir1 +===DONE=== diff --git a/ext/standard/tests/file/fopen_variation8.phpt b/ext/standard/tests/file/fopen_variation8.phpt new file mode 100644 index 000000000..60e65df5a --- /dev/null +++ b/ext/standard/tests/file/fopen_variation8.phpt @@ -0,0 +1,170 @@ +--TEST-- +Test fopen() function : variation: use include path and stream context (relative directories in path) +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing fopen() : variation *** + +--- testing include path --- + +** testing with mode=r ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir + +** testing with mode=r+ ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir + +** testing with mode=rt ** +in dir2 +in dir1 +in dir1 + +Warning: fopen(afile.txt): failed to open stream: No such file or directory in %s on line %d + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: fclose(): supplied argument is not a valid stream resource in %s on line %d + +in script dir +===DONE=== + diff --git a/ext/standard/tests/file/fopen_variation9.phpt b/ext/standard/tests/file/fopen_variation9.phpt new file mode 100644 index 000000000..283424b93 --- /dev/null +++ b/ext/standard/tests/file/fopen_variation9.phpt @@ -0,0 +1,67 @@ +--TEST-- +Test fopen() function : variation: use include path and stream context create a file, relative path +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing fopen() : variation *** +Not created in working dir +created in dir1 +Not created in working dir +created in dir1 +===DONE=== diff --git a/ext/standard/tests/file/fpassthru_error.phpt b/ext/standard/tests/file/fpassthru_error.phpt index 68e2e46cd..c8cdccbf8 100644 --- a/ext/standard/tests/file/fpassthru_error.phpt +++ b/ext/standard/tests/file/fpassthru_error.phpt @@ -20,6 +20,11 @@ var_dump( fpassthru() ); /* No.of args greaer than expected */ var_dump( fpassthru("", "") ); +/* fpassthru on a closed file */ +$h = fopen(__FILE__,'r'); +fclose($h); +fpassthru($h); + echo "\n*** Done ***\n"; ?> @@ -37,4 +42,6 @@ NULL Warning: Wrong parameter count for fpassthru() in %s on line %d NULL +Warning: fpassthru(): %d is not a valid stream resource in %s on line %d + *** Done *** diff --git a/ext/standard/tests/file/fpassthru_variation1.phpt b/ext/standard/tests/file/fpassthru_variation1.phpt new file mode 100644 index 000000000..29c0355b9 --- /dev/null +++ b/ext/standard/tests/file/fpassthru_variation1.phpt @@ -0,0 +1,223 @@ +--TEST-- +Test fpassthru() function : usage variations - different parameter types +--CREDITS-- +Dave Kelsey +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new testClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for fp + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( fpassthru($value) ); +}; + +echo "Done"; +?> +--EXPECTF-- +*** Testing fpassthru() : usage variations *** + +Arg value 0 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value Array + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value Array + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value Array + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value Array + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value Array + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value string + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value string + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value testClass + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Arg value + +Warning: fpassthru(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/file/fputcsv_002.phpt b/ext/standard/tests/file/fputcsv_002.phpt new file mode 100644 index 000000000..544ad306f --- /dev/null +++ b/ext/standard/tests/file/fputcsv_002.phpt @@ -0,0 +1,43 @@ +--TEST-- +fputcsv(): Checking data after calling the function +--FILE-- + +--EXPECTF-- +Notice: Array to string conversion in %s on line %d +array(7) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + string(3) "foo" + [3]=> + string(4) "haha" + [4]=> + array(3) { + [0]=> + int(4) + [1]=> + int(5) + [2]=> + int(6) + } + [5]=> + float(1.3) + [6]=> + NULL +} diff --git a/ext/standard/tests/file/fread_error.phpt b/ext/standard/tests/file/fread_error.phpt index 785a6f64e..9f9f8eeb8 100644 --- a/ext/standard/tests/file/fread_error.phpt +++ b/ext/standard/tests/file/fread_error.phpt @@ -103,7 +103,7 @@ bool(false) Notice: Undefined variable: file_content_type in %s on line %d -Warning: fread(): 5 is not a valid stream resource in %s on line %d +Warning: fread(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fread(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fread_fwrite_basic.phpt b/ext/standard/tests/file/fread_fwrite_basic.phpt new file mode 100644 index 000000000..0f5c4ed76 --- /dev/null +++ b/ext/standard/tests/file/fread_fwrite_basic.phpt @@ -0,0 +1,72 @@ +--TEST-- +fread & fwrite - Test reading and writing using a single resource +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECT-- +--- testing rw moving about the file --- +start:The 1st +at end: +bool(true) +final:The 1st part of the text +--- testing eof --- +bool(true) +bool(true) +bool(true) +bool(true) +last bytes: xtra +Done \ No newline at end of file diff --git a/ext/standard/tests/file/fscanf_variation10.phpt b/ext/standard/tests/file/fscanf_variation10.phpt index 0222becac..a9109e67f 100644 --- a/ext/standard/tests/file/fscanf_variation10.phpt +++ b/ext/standard/tests/file/fscanf_variation10.phpt @@ -68,7 +68,7 @@ foreach($float_formats as $float_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation16.phpt b/ext/standard/tests/file/fscanf_variation16.phpt index 1312c18de..94009248c 100644 --- a/ext/standard/tests/file/fscanf_variation16.phpt +++ b/ext/standard/tests/file/fscanf_variation16.phpt @@ -67,7 +67,7 @@ foreach($string_formats as $string_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation22.phpt b/ext/standard/tests/file/fscanf_variation22.phpt index d43226a4f..8fa62deb4 100644 --- a/ext/standard/tests/file/fscanf_variation22.phpt +++ b/ext/standard/tests/file/fscanf_variation22.phpt @@ -67,7 +67,7 @@ foreach($char_formats as $char_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation29.phpt b/ext/standard/tests/file/fscanf_variation29.phpt index 89f82e97d..b6752765f 100644 --- a/ext/standard/tests/file/fscanf_variation29.phpt +++ b/ext/standard/tests/file/fscanf_variation29.phpt @@ -68,7 +68,7 @@ foreach($octal_formats as $octal_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation35.phpt b/ext/standard/tests/file/fscanf_variation35.phpt index d259f12d4..af0266d1a 100644 --- a/ext/standard/tests/file/fscanf_variation35.phpt +++ b/ext/standard/tests/file/fscanf_variation35.phpt @@ -63,7 +63,7 @@ foreach($hexa_formats as $hexa_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation4.phpt b/ext/standard/tests/file/fscanf_variation4.phpt index 591836dff..a7e83a96e 100644 --- a/ext/standard/tests/file/fscanf_variation4.phpt +++ b/ext/standard/tests/file/fscanf_variation4.phpt @@ -64,7 +64,7 @@ foreach($int_formats as $int_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation41.phpt b/ext/standard/tests/file/fscanf_variation41.phpt index 76faf0b09..a1d11c133 100644 --- a/ext/standard/tests/file/fscanf_variation41.phpt +++ b/ext/standard/tests/file/fscanf_variation41.phpt @@ -63,7 +63,7 @@ foreach($unsigned_formats as $unsigned_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fscanf_variation47.phpt b/ext/standard/tests/file/fscanf_variation47.phpt index 011169a5c..183ee7a82 100644 --- a/ext/standard/tests/file/fscanf_variation47.phpt +++ b/ext/standard/tests/file/fscanf_variation47.phpt @@ -63,7 +63,7 @@ foreach($scientific_formats as $scientific_format) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> diff --git a/ext/standard/tests/file/fseek_dir_basic.phpt b/ext/standard/tests/file/fseek_dir_basic.phpt index c6d0816e9..cde0bf257 100644 --- a/ext/standard/tests/file/fseek_dir_basic.phpt +++ b/ext/standard/tests/file/fseek_dir_basic.phpt @@ -42,7 +42,7 @@ var_dump(rmdir($path)); ?> --EXPECTF-- call readdir(): -resource(12) of type (stream) +resource(%d) of type (stream) array(6) { [0]=> bool(false) diff --git a/ext/standard/tests/file/fseek_ftell_rewind_error1.phpt b/ext/standard/tests/file/fseek_ftell_rewind_error1.phpt index 2b0a1b2f8..3accd149b 100644 --- a/ext/standard/tests/file/fseek_ftell_rewind_error1.phpt +++ b/ext/standard/tests/file/fseek_ftell_rewind_error1.phpt @@ -91,7 +91,7 @@ bool(false) Warning: fseek(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Testing fseek() with closed/unset file handle -- -Warning: fseek(): 5 is not a valid stream resource in %s on line %d +Warning: fseek(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fseek(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fseek_ftell_rewind_error2.phpt b/ext/standard/tests/file/fseek_ftell_rewind_error2.phpt index d5bad92a6..7b3eb9cd4 100644 --- a/ext/standard/tests/file/fseek_ftell_rewind_error2.phpt +++ b/ext/standard/tests/file/fseek_ftell_rewind_error2.phpt @@ -87,7 +87,7 @@ bool(false) Warning: ftell(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Testing ftell with closed/unset file handle -- -Warning: ftell(): 5 is not a valid stream resource in %s on line %d +Warning: ftell(): %d is not a valid stream resource in %s on line %d bool(false) Warning: ftell(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fseek_ftell_rewind_error3.phpt b/ext/standard/tests/file/fseek_ftell_rewind_error3.phpt index 8f0ae38d4..2fbd0c805 100644 --- a/ext/standard/tests/file/fseek_ftell_rewind_error3.phpt +++ b/ext/standard/tests/file/fseek_ftell_rewind_error3.phpt @@ -87,7 +87,7 @@ bool(false) Warning: rewind(): supplied argument is not a valid stream resource in %s on line %d bool(false) -- Testing rewind() with closed/unset file handle -- -Warning: rewind(): 5 is not a valid stream resource in %s on line %d +Warning: rewind(): %d is not a valid stream resource in %s on line %d bool(false) Warning: rewind(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fseek_variation1.phpt b/ext/standard/tests/file/fseek_variation1.phpt new file mode 100644 index 000000000..0e648ffb8 --- /dev/null +++ b/ext/standard/tests/file/fseek_variation1.phpt @@ -0,0 +1,177 @@ +--TEST-- +Test fseek() function : usage variations - different types for offset +--CREDITS-- +Dave Kelsey +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new testClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for offset + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( fseek($fp, $value, $whence) ); + var_dump( ftell($fp)); +}; +fclose($fp); + +echo "Done"; +?> +--EXPECT-- +*** Testing fseek() : usage variations *** + +Arg value 10.5 +int(0) +int(10) + +Arg value -10.5 +int(-1) +int(10) + +Arg value 1.07654321E-9 +int(0) +int(0) + +Arg value 0.5 +int(0) +int(0) + +Arg value Array +int(0) +int(0) + +Arg value Array +int(0) +int(1) + +Arg value Array +int(0) +int(1) + +Arg value Array +int(0) +int(1) + +Arg value Array +int(0) +int(1) + +Arg value +int(0) +int(0) + +Arg value +int(0) +int(0) + +Arg value 1 +int(0) +int(1) + +Arg value +int(0) +int(0) + +Arg value 1 +int(0) +int(1) + +Arg value +int(0) +int(0) + +Arg value +int(0) +int(0) + +Arg value +int(0) +int(0) + +Arg value string +int(0) +int(0) + +Arg value string +int(0) +int(0) + +Arg value testClass +int(0) +int(1) + +Arg value +int(0) +int(0) + +Arg value +int(0) +int(0) +Done diff --git a/ext/standard/tests/file/fseek_variation2.phpt b/ext/standard/tests/file/fseek_variation2.phpt new file mode 100644 index 000000000..5195b241f --- /dev/null +++ b/ext/standard/tests/file/fseek_variation2.phpt @@ -0,0 +1,150 @@ +--TEST-- +Test fseek() function : usage variations - different types for whence +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECT-- +*** Testing fseek() : usage variations *** + +Arg value -100 +int(-1) +int(0) + +Arg value 100 +int(-1) +int(0) + +Arg value 10.5 +int(-1) +int(0) + +Arg value -10.5 +int(-1) +int(0) + +Arg value 101234567000 +int(-1) +int(0) + +Arg value 1.07654321E-9 +int(0) +int(3) + +Arg value 0.5 +int(0) +int(3) + +Arg value +int(0) +int(3) + +Arg value +int(0) +int(3) + +Arg value 1 +int(0) +int(6) + +Arg value +int(0) +int(3) + +Arg value 1 +int(0) +int(6) + +Arg value +int(0) +int(3) + +Arg value +int(0) +int(3) + +Arg value +int(0) +int(3) + +Arg value string +int(0) +int(3) + +Arg value string +int(0) +int(3) + +Arg value +int(0) +int(3) + +Arg value +int(0) +int(3) +Done diff --git a/ext/standard/tests/file/fseek_variation3.phpt b/ext/standard/tests/file/fseek_variation3.phpt new file mode 100644 index 000000000..c29ed3175 --- /dev/null +++ b/ext/standard/tests/file/fseek_variation3.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test fseek() function : variation functionality beyond file boundaries +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing fseek() : variation - beyond file boundaries *** +--- fseek beyond start of file --- +int(-1) +after -4 seek: +int(0) +after seek back 1: 39 +int(-1) +after seek back 20: +--- fseek beyond end of file --- +int(0) +31323334353637383900000000000000656e64 +Done diff --git a/ext/standard/tests/file/fstat_basic.phpt b/ext/standard/tests/file/fstat_basic.phpt new file mode 100644 index 000000000..a404929a2 --- /dev/null +++ b/ext/standard/tests/file/fstat_basic.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test function fstat() by calling it with its expected arguments +--FILE-- + +===DONE=== +--EXPECTF-- +array(26) { + [0]=> + int(%i) + [1]=> + int(%i) + [2]=> + int(%i) + [3]=> + int(%i) + [4]=> + int(%i) + [5]=> + int(%i) + [6]=> + int(%i) + [7]=> + int(%i) + [8]=> + int(%i) + [9]=> + int(%i) + [10]=> + int(%i) + [11]=> + int(%i) + [12]=> + int(%i) + ["dev"]=> + int(%i) + ["ino"]=> + int(%i) + ["mode"]=> + int(%i) + ["nlink"]=> + int(%i) + ["uid"]=> + int(%i) + ["gid"]=> + int(%i) + ["rdev"]=> + int(%i) + ["size"]=> + int(%i) + ["atime"]=> + int(%i) + ["mtime"]=> + int(%i) + ["ctime"]=> + int(%i) + ["blksize"]=> + int(%i) + ["blocks"]=> + int(%i) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_error.phpt b/ext/standard/tests/file/fstat_error.phpt new file mode 100644 index 000000000..69a7f0bec --- /dev/null +++ b/ext/standard/tests/file/fstat_error.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test function fstat() by calling it more than or less than its expected arguments +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for fstat() in %s on line %d +NULL + +Warning: Wrong parameter count for fstat() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation1.phpt b/ext/standard/tests/file/fstat_variation1.phpt new file mode 100644 index 000000000..460732388 --- /dev/null +++ b/ext/standard/tests/file/fstat_variation1.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function fstat() by substituting agument 1 with array values. +--FILE-- + 'one', 2 => 'two'); + +$variation_array = array( + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation2.phpt b/ext/standard/tests/file/fstat_variation2.phpt new file mode 100644 index 000000000..6f59efcfe --- /dev/null +++ b/ext/standard/tests/file/fstat_variation2.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function fstat() by substituting agument 1 with boolean values. +--FILE-- + true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation3.phpt b/ext/standard/tests/file/fstat_variation3.phpt new file mode 100644 index 000000000..32dadd8b5 --- /dev/null +++ b/ext/standard/tests/file/fstat_variation3.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test function fstat() by substituting agument 1 with emptyUnsetUndefNull values. +--FILE-- + @$unset_var, + 'undefined var' => @$undefined_var, + 'empty string DQ' => "", + 'empty string SQ' => '', + 'uppercase NULL' => NULL, + 'lowercase null' => null, + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation4.phpt b/ext/standard/tests/file/fstat_variation4.phpt new file mode 100644 index 000000000..cabd83dba --- /dev/null +++ b/ext/standard/tests/file/fstat_variation4.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test function fstat() by substituting agument 1 with float values. +--FILE-- + 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation5.phpt b/ext/standard/tests/file/fstat_variation5.phpt new file mode 100644 index 000000000..59fbb37d1 --- /dev/null +++ b/ext/standard/tests/file/fstat_variation5.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function fstat() by substituting agument 1 with int values. +--FILE-- + 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation6.phpt b/ext/standard/tests/file/fstat_variation6.phpt new file mode 100644 index 000000000..122162781 --- /dev/null +++ b/ext/standard/tests/file/fstat_variation6.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test function fstat() by substituting agument 1 with object values. +--FILE-- + new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- +Error: 2 - fstat(): supplied argument is not a valid stream resource, %s(%d) +bool(false) +Error: 2 - fstat(): supplied argument is not a valid stream resource, %s(%d) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation7.phpt b/ext/standard/tests/file/fstat_variation7.phpt new file mode 100644 index 000000000..a00d2485a --- /dev/null +++ b/ext/standard/tests/file/fstat_variation7.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test function fstat() by substituting agument 1 with string values. +--FILE-- + "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + ); + + +foreach ( $variation_array as $var ) { + var_dump(fstat( $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/fstat_variation8.phpt b/ext/standard/tests/file/fstat_variation8.phpt new file mode 100644 index 000000000..b493d4ec9 --- /dev/null +++ b/ext/standard/tests/file/fstat_variation8.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test function fstat() by calling it with its expected arguments +--FILE-- +$value) { + if ($isWin && ($key === 0 || $key === 6 || $key === 'dev' || $key === 'rdev')) { + // windows, dev and rdev will not match this is expected + } + else { + if ($fstat_result[$key] != $value) { + echo "FAIL: stat differs at '$key'. $fstat_result[$key] -- $value\n"; + $failed = true; + } + } +} +if ($failed !== true) { + echo "PASSED: all elements are the same\n"; +} + + +?> +===DONE=== +--EXPECT-- +PASSED: all elements are the same +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/ftruncate_error.phpt b/ext/standard/tests/file/ftruncate_error.phpt index 182ade5ff..4dca9b746 100644 --- a/ext/standard/tests/file/ftruncate_error.phpt +++ b/ext/standard/tests/file/ftruncate_error.phpt @@ -114,7 +114,7 @@ Warning: ftruncate(): supplied argument is not a valid stream resource in %s on bool(false) -- Testing ftruncate() with closed/unset file handle -- -Warning: ftruncate(): 5 is not a valid stream resource in %s on line %d +Warning: ftruncate(): %d is not a valid stream resource in %s on line %d bool(false) int(36) diff --git a/ext/standard/tests/file/fwrite_error.phpt b/ext/standard/tests/file/fwrite_error.phpt index c6f529f40..fb562171d 100644 --- a/ext/standard/tests/file/fwrite_error.phpt +++ b/ext/standard/tests/file/fwrite_error.phpt @@ -112,7 +112,7 @@ Warning: fwrite(): supplied argument is not a valid stream resource in %s on lin bool(false) -- Testing fwrite() with closed/unset file handle -- -Warning: fwrite(): 6 is not a valid stream resource in %s on line %d +Warning: fwrite(): %d is not a valid stream resource in %s on line %d bool(false) Warning: fwrite(): supplied argument is not a valid stream resource in %s on line %d diff --git a/ext/standard/tests/file/fwrite_variation5.phpt b/ext/standard/tests/file/fwrite_variation5.phpt new file mode 100644 index 000000000..efe4967e1 --- /dev/null +++ b/ext/standard/tests/file/fwrite_variation5.phpt @@ -0,0 +1,173 @@ +--TEST-- +Test fwrite() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for str + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $fp = fopen($filename,'w'); + fwrite($fp, $value); + fclose($fp); + readfile($filename); +}; +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing fwrite() : usage variation *** + +--int 0-- +0 +--int 1-- +1 +--int 12345-- +12345 +--int -12345-- +-2345 +--float 10.5-- +10.5 +--float -10.5-- +-10.5 +--float 12.3456789000e10-- +123456789000 +--float -12.3456789000e10-- +-123456789000 +--float .5-- +0.5 +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Array +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Array +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Array +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Array +--uppercase NULL-- + +--lowercase null-- + +--lowercase true-- +1 +--lowercase false-- + +--uppercase TRUE-- +1 +--uppercase FALSE-- + +--empty string DQ-- + +--empty string SQ-- + +--instance of classWithToString-- +Class A object +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Object +--undefined var-- + +--unset var-- +===DONE=== diff --git a/ext/standard/tests/file/glob_basic.phpt b/ext/standard/tests/file/glob_basic.phpt index 68e1bc74b..fc269c442 100755 --- a/ext/standard/tests/file/glob_basic.phpt +++ b/ext/standard/tests/file/glob_basic.phpt @@ -25,14 +25,19 @@ $fp = fopen("$dirname/file.text", "w"); fclose($fp); // glob() with default arguments -var_dump( glob($dirname."/*") ); -var_dump( glob($dirname."/*.txt") ); -var_dump( glob($dirname."/*.t?t") ); -var_dump( glob($dirname."/*.t*t") ); -var_dump( glob($dirname."/*.?") ); -var_dump( glob($dirname."/*.*") ); +sort_var_dump( glob($dirname."/*") ); +sort_var_dump( glob($dirname."/*.txt") ); +sort_var_dump( glob($dirname."/*.t?t") ); +sort_var_dump( glob($dirname."/*.t*t") ); +sort_var_dump( glob($dirname."/*.?") ); +sort_var_dump( glob($dirname."/*.*") ); echo "Done\n"; + +function sort_var_dump($results) { + sort($results); + var_dump($results); +} ?> --CLEAN-- +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing glob() : error condition - pattern too long. *** + +Warning: glob(): Pattern exceeds the maximum allowed length of %d characters in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/file/is_dir_variation3.phpt b/ext/standard/tests/file/is_dir_variation3.phpt index c9b20420c..a79d686d4 100644 --- a/ext/standard/tests/file/is_dir_variation3.phpt +++ b/ext/standard/tests/file/is_dir_variation3.phpt @@ -18,6 +18,7 @@ $dirnames = array( TRUE, FALSE, NULL, + " ", $dir_handle, /* scalars */ @@ -42,5 +43,6 @@ bool(false) bool(false) bool(false) bool(false) +bool(false) *** Done *** diff --git a/ext/standard/tests/file/is_executable_variation3.phpt b/ext/standard/tests/file/is_executable_variation3.phpt index 777599cbf..c87c12db3 100644 --- a/ext/standard/tests/file/is_executable_variation3.phpt +++ b/ext/standard/tests/file/is_executable_variation3.phpt @@ -37,6 +37,7 @@ $invalid_files = array( TRUE, FALSE, NULL, + " ", @array(), @$file_handle ); @@ -59,6 +60,7 @@ bool(false) bool(false) bool(false) bool(false) +bool(false) Notice: Array to string conversion in %s on line %d bool(false) diff --git a/ext/standard/tests/file/is_file_variation3.phpt b/ext/standard/tests/file/is_file_variation3.phpt index af7501315..e6f2a3ef9 100644 --- a/ext/standard/tests/file/is_file_variation3.phpt +++ b/ext/standard/tests/file/is_file_variation3.phpt @@ -16,6 +16,7 @@ echo "*** Testing Invalid file types ***\n"; $filenames = array( /* Invalid filenames */ -2.34555, + " ", "", TRUE, FALSE, @@ -51,5 +52,6 @@ bool(false) bool(false) bool(false) bool(false) +bool(false) *** Done *** diff --git a/ext/standard/tests/file/is_file_variation4.phpt b/ext/standard/tests/file/is_file_variation4.phpt index fc0cab85c..55aeedfaa 100644 --- a/ext/standard/tests/file/is_file_variation4.phpt +++ b/ext/standard/tests/file/is_file_variation4.phpt @@ -1,5 +1,5 @@ --TEST-- -Test is_file() function: usage variations - diff. path notations (Bug #42027, #42638) +Test is_file() function: usage variations - diff. path notations (Bug #42027) --FILE-- --FILE-- --FILE-- +--SKIPIF-- + +--POST_RAW-- +Content-type: multipart/form-data, boundary=AaB03x + +--AaB03x +content-disposition: form-data; name="field1" + +Joe Blow +--AaB03x +content-disposition: form-data; name="pics"; filename="file1.txt" +Content-Type: text/plain + +abcdef123456789 +--AaB03x-- +--FILE-- + +--EXPECTF-- +bool(true) +bool(false) +bool(false) +bool(false) + +Warning: Wrong parameter count for is_uploaded_file() in %s on line %d +NULL + +Warning: Wrong parameter count for is_uploaded_file() in %s on line %d +NULL + diff --git a/ext/standard/tests/file/is_writable_variation1.phpt b/ext/standard/tests/file/is_writable_variation1.phpt index 2d0da9b18..bf3e7e117 100644 --- a/ext/standard/tests/file/is_writable_variation1.phpt +++ b/ext/standard/tests/file/is_writable_variation1.phpt @@ -2,19 +2,19 @@ Test is_writable() and its alias is_writeable() function: usage variations - diff. path notations --SKIPIF-- --FILE-- --FILE-- +--FILE-- + +--EXPECTF-- +*** testing stat *** +bool(false) +bool(false) +bool(false) + +Warning: stat(): stat failed for in %s on line %d +bool(false) + +Warning: stat(): stat failed for | in %s on line %d +bool(false) +*** testing lstat *** +bool(false) +bool(false) +bool(false) + +Warning: lstat(): Lstat failed for in %s on line %d +bool(false) + +Warning: lstat(): Lstat failed for | in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/standard/tests/file/lstat_stat_variation3.phpt b/ext/standard/tests/file/lstat_stat_variation3.phpt index da7a6dacb..2a9a96efa 100755 --- a/ext/standard/tests/file/lstat_stat_variation3.phpt +++ b/ext/standard/tests/file/lstat_stat_variation3.phpt @@ -40,23 +40,24 @@ $new_stat = lstat($new_linkname); var_dump( compare_self_stat($old_stat) ); var_dump( compare_self_stat($new_stat) ); -// compare the two stats -var_dump( compare_stats($old_stat, $new_stat, $all_stat_keys) ); +// compare the two stats - all except ctime +$keys_to_compare = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, + "dev", "ino", "mode", "nlink", "uid", "gid", + "rdev", "size", "atime", "mtime", "blksize", "blocks"); +var_dump( compare_stats($old_stat, $new_stat, $keys_to_compare) ); -echo "\n--- Done ---"; ?> - +===Done=== --CLEAN-- ---EXPECTF-- +--EXPECT-- *** Testing lstat() for link after being renamed *** bool(true) bool(true) bool(true) bool(true) - ---- Done --- +===Done=== diff --git a/ext/standard/tests/file/mkdir_variation1-win32.phpt b/ext/standard/tests/file/mkdir_variation1-win32.phpt new file mode 100644 index 000000000..7fb51bce0 --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation1-win32.phpt @@ -0,0 +1,123 @@ +--TEST-- +Test mkdir() function : usage variation: try invalid pathname +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase false' =>false, + 'uppercase FALSE' =>FALSE, + + // empty data + // php and p8 output No Such File or Dir. Windows outputs Invalid Argument + 'empty string DQ' => "", + 'empty string SQ' => '', + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // other + // php.net bug outputs message File Exists + 'single space' => ' ', +); + +// loop through each element of the array for pathname + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mkdir($value); + if ($res == true) { + echo "directory created\n"; + rmdir($value); + } +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing mkdir() : usage variation *** + +--uppercase NULL-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--lowercase null-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--lowercase false-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--uppercase FALSE-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--empty string DQ-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--empty string SQ-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--undefined var-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--unset var-- +Error: 2 - mkdir(): No such file or directory, %s(%d) + +--single space-- +Error: 2 - mkdir(): %s, %s(%d) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/mkdir_variation1.phpt b/ext/standard/tests/file/mkdir_variation1.phpt new file mode 100644 index 000000000..b5254034b --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation1.phpt @@ -0,0 +1,121 @@ +--TEST-- +Test mkdir() function : usage variation: try invalid pathname +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase false' =>false, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // other + 'single space' => ' ', +); + +// loop through each element of the array for pathname + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = mkdir($value); + if ($res == true) { + echo "directory created\n"; + rmdir($value); + } +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing mkdir() : usage variation *** + +--uppercase NULL-- +Error: 2 - mkdir(): %s, %s(%d) + +--lowercase null-- +Error: 2 - mkdir(): %s, %s(%d) + +--lowercase false-- +Error: 2 - mkdir(): %s, %s(%d) + +--uppercase FALSE-- +Error: 2 - mkdir(): %s, %s(%d) + +--empty string DQ-- +Error: 2 - mkdir(): %s, %s(%d) + +--empty string SQ-- +Error: 2 - mkdir(): %s, %s(%d) + +--undefined var-- +Error: 2 - mkdir(): %s, %s(%d) + +--unset var-- +Error: 2 - mkdir(): %s, %s(%d) + +--single space-- +directory created +===DONE=== diff --git a/ext/standard/tests/file/mkdir_variation2.phpt b/ext/standard/tests/file/mkdir_variation2.phpt new file mode 100644 index 000000000..ab9a676ac --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation2.phpt @@ -0,0 +1,189 @@ +--TEST-- +Test mkdir() function : usage variation: different types for mode +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for mode + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = mkdir($pathname, $value); + if ($h === true) { + echo "Directory created\n"; + rmdir($pathname); + } +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing mkdir() : usage variation *** + +--float 10.5-- +Directory created + +--float -10.5-- +Directory created + +--float 12.3456789000e10-- +Directory created + +--float -12.3456789000e10-- +Directory created + +--float .5-- +Directory created + +--empty array-- +Error: 2 - mkdir() expects parameter 2 to be long, array given, %s(%d) + +--int indexed array-- +Error: 2 - mkdir() expects parameter 2 to be long, array given, %s(%d) + +--associative array-- +Error: 2 - mkdir() expects parameter 2 to be long, array given, %s(%d) + +--nested arrays-- +Error: 2 - mkdir() expects parameter 2 to be long, array given, %s(%d) + +--uppercase NULL-- +Directory created + +--lowercase null-- +Directory created + +--lowercase true-- +Directory created + +--lowercase false-- +Directory created + +--uppercase TRUE-- +Directory created + +--uppercase FALSE-- +Directory created + +--empty string DQ-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--empty string SQ-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--string DQ-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--string SQ-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--mixed case string-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--heredoc-- +Error: 2 - mkdir() expects parameter 2 to be long, string given, %s(%d) + +--instance of classWithToString-- +Error: 2 - mkdir() expects parameter 2 to be long, object given, %s(%d) + +--instance of classWithoutToString-- +Error: 2 - mkdir() expects parameter 2 to be long, object given, %s(%d) + +--undefined var-- +Directory created + +--unset var-- +Directory created +===DONE=== diff --git a/ext/standard/tests/file/mkdir_variation3.phpt b/ext/standard/tests/file/mkdir_variation3.phpt new file mode 100644 index 000000000..7622e5f61 --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation3.phpt @@ -0,0 +1,208 @@ +--TEST-- +Test mkdir() function : usage variation: different types for recursive +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for recursive + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = mkdir($pathname, $mode, $value); + if ($h === true) { + echo "Directory created\n"; + rmdir($pathname); + } +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing mkdir() : usage variation *** + +--int 0-- +Directory created + +--int 1-- +Directory created + +--int 12345-- +Directory created + +--int -12345-- +Directory created + +--float 10.5-- +Directory created + +--float -10.5-- +Directory created + +--float 12.3456789000e10-- +Directory created + +--float -12.3456789000e10-- +Directory created + +--float .5-- +Directory created + +--empty array-- +Error: 2 - mkdir() expects parameter 3 to be boolean, array given, %s(%d) + +--int indexed array-- +Error: 2 - mkdir() expects parameter 3 to be boolean, array given, %s(%d) + +--associative array-- +Error: 2 - mkdir() expects parameter 3 to be boolean, array given, %s(%d) + +--nested arrays-- +Error: 2 - mkdir() expects parameter 3 to be boolean, array given, %s(%d) + +--uppercase NULL-- +Directory created + +--lowercase null-- +Directory created + +--lowercase true-- +Directory created + +--lowercase false-- +Directory created + +--uppercase TRUE-- +Directory created + +--uppercase FALSE-- +Directory created + +--empty string DQ-- +Directory created + +--empty string SQ-- +Directory created + +--string DQ-- +Directory created + +--string SQ-- +Directory created + +--mixed case string-- +Directory created + +--heredoc-- +Directory created + +--instance of classWithToString-- +Error: 2 - mkdir() expects parameter 3 to be boolean, object given, %s(%d) + +--instance of classWithoutToString-- +Error: 2 - mkdir() expects parameter 3 to be boolean, object given, %s(%d) + +--undefined var-- +Directory created + +--unset var-- +Directory created +===DONE=== diff --git a/ext/standard/tests/file/mkdir_variation4.phpt b/ext/standard/tests/file/mkdir_variation4.phpt new file mode 100644 index 000000000..b97d4ebc7 --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation4.phpt @@ -0,0 +1,220 @@ +--TEST-- +Test mkdir() function : usage variation: different types for context +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +$fileRes = fopen(__FILE__,'r'); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // non stream context resource + 'file resource' => $fileRes, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = mkdir($pathname, $mode, $recursive, $value); + if ($h === true) { + echo "Directory created\n"; + rmdir($pathname); + } +}; + +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing mkdir() : usage variation *** + +--int 0-- +Error: 2 - mkdir() expects parameter 4 to be resource, integer given, %s(%d) + +--int 1-- +Error: 2 - mkdir() expects parameter 4 to be resource, integer given, %s(%d) + +--int 12345-- +Error: 2 - mkdir() expects parameter 4 to be resource, integer given, %s(%d) + +--int -12345-- +Error: 2 - mkdir() expects parameter 4 to be resource, integer given, %s(%d) + +--float 10.5-- +Error: 2 - mkdir() expects parameter 4 to be resource, double given, %s(%d) + +--float -10.5-- +Error: 2 - mkdir() expects parameter 4 to be resource, double given, %s(%d) + +--float 12.3456789000e10-- +Error: 2 - mkdir() expects parameter 4 to be resource, double given, %s(%d) + +--float -12.3456789000e10-- +Error: 2 - mkdir() expects parameter 4 to be resource, double given, %s(%d) + +--float .5-- +Error: 2 - mkdir() expects parameter 4 to be resource, double given, %s(%d) + +--empty array-- +Error: 2 - mkdir() expects parameter 4 to be resource, array given, %s(%d) + +--int indexed array-- +Error: 2 - mkdir() expects parameter 4 to be resource, array given, %s(%d) + +--associative array-- +Error: 2 - mkdir() expects parameter 4 to be resource, array given, %s(%d) + +--nested arrays-- +Error: 2 - mkdir() expects parameter 4 to be resource, array given, %s(%d) + +--uppercase NULL-- +Error: 2 - mkdir() expects parameter 4 to be resource, null given, %s(%d) + +--lowercase null-- +Error: 2 - mkdir() expects parameter 4 to be resource, null given, %s(%d) + +--lowercase true-- +Error: 2 - mkdir() expects parameter 4 to be resource, boolean given, %s(%d) + +--lowercase false-- +Error: 2 - mkdir() expects parameter 4 to be resource, boolean given, %s(%d) + +--uppercase TRUE-- +Error: 2 - mkdir() expects parameter 4 to be resource, boolean given, %s(%d) + +--uppercase FALSE-- +Error: 2 - mkdir() expects parameter 4 to be resource, boolean given, %s(%d) + +--empty string DQ-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--empty string SQ-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--string DQ-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--string SQ-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--mixed case string-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--heredoc-- +Error: 2 - mkdir() expects parameter 4 to be resource, string given, %s(%d) + +--instance of classWithToString-- +Error: 2 - mkdir() expects parameter 4 to be resource, object given, %s(%d) + +--instance of classWithoutToString-- +Error: 2 - mkdir() expects parameter 4 to be resource, object given, %s(%d) + +--undefined var-- +Error: 2 - mkdir() expects parameter 4 to be resource, null given, %s(%d) + +--unset var-- +Error: 2 - mkdir() expects parameter 4 to be resource, null given, %s(%d) + +--file resource-- +Error: 2 - mkdir(): supplied resource is not a valid Stream-Context resource, %s(%d) +Directory created +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/mkdir_variation5-win32.phpt b/ext/standard/tests/file/mkdir_variation5-win32.phpt new file mode 100644 index 000000000..c7ebd518d --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation5-win32.phpt @@ -0,0 +1,105 @@ +--TEST-- +Test mkdir() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mkdir() : variation *** +-- creating mkdirVar5.tmp\aSubDir -- +Directory created +-- creating .\mkdirVar5.tmp\aSubDir -- +Directory created +-- creating mkdirVar5.tmp\..\mkdirVar5.tmp\aSubDir -- +Directory created +-- creating mkdirVar5.tmp\..\BADDIR\aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating BADDIR\aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating %s\mkdirVar5.tmp\aSubDir -- +Directory created +-- creating %s\.\mkdirVar5.tmp\aSubDir -- +Directory created +-- creating %s\mkdirVar5.tmp\..\mkdirVar5.tmp\aSubDir -- +Directory created +-- creating %s\BADDIR\aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating mkdirVar5.tmp\aSubDir\ -- +Directory created +-- creating %s\mkdirVar5.tmp\aSubDir\ -- +Directory created +-- creating mkdirVar5.tmp\\aSubDir -- +Directory created +-- creating %s\\mkdirVar5.tmp\\aSubDir -- +Directory created +-- creating /%s/mkdirVar5.tmp/aSubDir -- +Directory created +===DONE=== diff --git a/ext/standard/tests/file/mkdir_variation5.phpt b/ext/standard/tests/file/mkdir_variation5.phpt new file mode 100644 index 000000000..364e5e74b --- /dev/null +++ b/ext/standard/tests/file/mkdir_variation5.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test mkdir() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mkdir() : variation *** +-- creating mkdirVar5.tmp/aSubDir -- +Directory created +-- creating ./mkdirVar5.tmp/aSubDir -- +Directory created +-- creating mkdirVar5.tmp/../mkdirVar5.tmp/aSubDir -- +Directory created +-- creating mkdirVar5.tmp/../BADDIR/aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating BADDIR/aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating %s/mkdirVar5.tmp/aSubDir -- +Directory created +-- creating %s/./mkdirVar5.tmp/aSubDir -- +Directory created +-- creating %s/mkdirVar5.tmp/../mkdirVar5.tmp/aSubDir -- +Directory created +-- creating %s/BADDIR/aSubDir -- + +Warning: mkdir(): No such file or directory in %s on line %d +-- creating mkdirVar5.tmp/aSubDir/ -- +Directory created +-- creating %s/mkdirVar5.tmp/aSubDir/ -- +Directory created +-- creating mkdirVar5.tmp//aSubDir -- +Directory created +-- creating %s//mkdirVar5.tmp//aSubDir -- +Directory created +===DONE=== diff --git a/ext/standard/tests/file/move_uploaded_file_basic.phpt b/ext/standard/tests/file/move_uploaded_file_basic.phpt new file mode 100644 index 000000000..591eec820 --- /dev/null +++ b/ext/standard/tests/file/move_uploaded_file_basic.phpt @@ -0,0 +1,79 @@ +--TEST-- +move_uploaded_file() function +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--POST_RAW-- +Content-type: multipart/form-data, boundary=AaB03x + +--AaB03x +content-disposition: form-data; name="field1" + +Joe Blow +--AaB03x +content-disposition: form-data; name="file1"; filename="file1.txt" +Content-Type: text/plain + +abcdef123456789xxxDDDxxxDDDxxxDDD +--AaB03x +content-disposition: form-data; name="file2"; filename="file2.txt" +Content-Type: text/plain + +abcdef123456789 +--AaB03x-- +--FILE-- + +--EXPECTF-- +Valid move +bool(true) +bool(true) + +Original name of uploaded file +bool(false) +Non-uploaded source file +bool(false) +Valid move to existing file +bool(true) +Wrong parameters + +Warning: Wrong parameter count for move_uploaded_file() in %s on line %d +NULL + +Warning: Wrong parameter count for move_uploaded_file() in %s on line %d +NULL + + diff --git a/ext/standard/tests/file/open_basedir.inc b/ext/standard/tests/file/open_basedir.inc deleted file mode 100644 index 7fd0afc8b..000000000 --- a/ext/standard/tests/file/open_basedir.inc +++ /dev/null @@ -1,133 +0,0 @@ - - diff --git a/ext/standard/tests/file/open_basedir_chdir.phpt b/ext/standard/tests/file/open_basedir_chdir.phpt deleted file mode 100644 index 32ed4eb1e..000000000 --- a/ext/standard/tests/file/open_basedir_chdir.phpt +++ /dev/null @@ -1,51 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [chdir] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: chdir(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chdir(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chdir(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chdir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chdir(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chdir(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [chdir] *** - diff --git a/ext/standard/tests/file/open_basedir_chmod.phpt b/ext/standard/tests/file/open_basedir_chmod.phpt deleted file mode 100644 index 02fdce5a1..000000000 --- a/ext/standard/tests/file/open_basedir_chmod.phpt +++ /dev/null @@ -1,71 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [chmod] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: chmod(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(../bad/./bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: chmod(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [chmod] *** - diff --git a/ext/standard/tests/file/open_basedir_copy.phpt b/ext/standard/tests/file/open_basedir_copy.phpt deleted file mode 100644 index 8f0f7a91f..000000000 --- a/ext/standard/tests/file/open_basedir_copy.phpt +++ /dev/null @@ -1,79 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [copy] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: copy(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(../bad): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(..): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(../): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(/): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(../bad/.): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(../bad/./bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(../bad/./bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: copy(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d - -Warning: copy(./../.): failed to open stream: Operation not permitted in %s on line %d -bool(false) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [copy] *** - diff --git a/ext/standard/tests/file/open_basedir_copy_variation1.phpt b/ext/standard/tests/file/open_basedir_copy_variation1.phpt deleted file mode 100644 index de532e12c..000000000 --- a/ext/standard/tests/file/open_basedir_copy_variation1.phpt +++ /dev/null @@ -1,35 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [copy] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: copy(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(copy.txt): No such file or directory in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [copy] *** - diff --git a/ext/standard/tests/file/open_basedir_disk_free_space.phpt b/ext/standard/tests/file/open_basedir_disk_free_space.phpt deleted file mode 100644 index e3e36e670..000000000 --- a/ext/standard/tests/file/open_basedir_disk_free_space.phpt +++ /dev/null @@ -1,52 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [disk_free_space] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: disk_free_space(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: disk_free_space(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -float(%s) -*** Finished testing open_basedir configuration [disk_free_space] *** diff --git a/ext/standard/tests/file/open_basedir_file.phpt b/ext/standard/tests/file/open_basedir_file.phpt deleted file mode 100644 index fbc841e3f..000000000 --- a/ext/standard/tests/file/open_basedir_file.phpt +++ /dev/null @@ -1,88 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [file] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: file(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(../bad): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(..): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(../): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(/): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(../bad/.): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(%s/test/bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file(%s/test/bad/../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) -array(1) { - [0]=> - string(12) "Hello World!" -} -array(1) { - [0]=> - string(12) "Hello World!" -} -array(1) { - [0]=> - string(12) "Hello World!" -} -array(1) { - [0]=> - string(12) "Hello World!" -} -*** Finished testing open_basedir configuration [file] *** - diff --git a/ext/standard/tests/file/open_basedir_file_exists.phpt b/ext/standard/tests/file/open_basedir_file_exists.phpt deleted file mode 100644 index c249fc116..000000000 --- a/ext/standard/tests/file/open_basedir_file_exists.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [file_exists] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: file_exists(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: file_exists(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [file_exists] *** - diff --git a/ext/standard/tests/file/open_basedir_file_get_contents.phpt b/ext/standard/tests/file/open_basedir_file_get_contents.phpt deleted file mode 100644 index 637c499ea..000000000 --- a/ext/standard/tests/file/open_basedir_file_get_contents.phpt +++ /dev/null @@ -1,75 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [file_get_contents] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: file_get_contents(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(../bad): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(..): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(../): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(/): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(../bad/.): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(%s/test/bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_get_contents(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_get_contents(%s/test/bad/../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) -string(12) "Hello World!" -string(12) "Hello World!" -string(12) "Hello World!" -string(12) "Hello World!" -*** Finished testing open_basedir configuration [file_get_contents] *** diff --git a/ext/standard/tests/file/open_basedir_file_put_contents.phpt b/ext/standard/tests/file/open_basedir_file_put_contents.phpt deleted file mode 100644 index d4bd417b5..000000000 --- a/ext/standard/tests/file/open_basedir_file_put_contents.phpt +++ /dev/null @@ -1,57 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [file_put_contents] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: file_put_contents(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_put_contents(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_put_contents(): open_basedir restriction in effect. File(.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_put_contents(.././bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_put_contents(): open_basedir restriction in effect. File(../bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_put_contents(../bad/../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_put_contents(): open_basedir restriction in effect. File(./.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_put_contents(./.././bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: file_put_contents(): open_basedir restriction in effect. File%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: file_put_contents%s/test/bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [file_put_contents] *** - diff --git a/ext/standard/tests/file/open_basedir_fileatime.phpt b/ext/standard/tests/file/open_basedir_fileatime.phpt deleted file mode 100644 index 02cc94f83..000000000 --- a/ext/standard/tests/file/open_basedir_fileatime.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [fileatime] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: fileatime(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileatime(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [fileatime] *** - diff --git a/ext/standard/tests/file/open_basedir_filectime.phpt b/ext/standard/tests/file/open_basedir_filectime.phpt deleted file mode 100644 index 542c8423e..000000000 --- a/ext/standard/tests/file/open_basedir_filectime.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [filectime] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: filectime(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filectime(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [filectime] *** - diff --git a/ext/standard/tests/file/open_basedir_filegroup.phpt b/ext/standard/tests/file/open_basedir_filegroup.phpt deleted file mode 100644 index 5f6279aa8..000000000 --- a/ext/standard/tests/file/open_basedir_filegroup.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [filegroup] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: filegroup(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filegroup(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [filegroup] *** - diff --git a/ext/standard/tests/file/open_basedir_fileinode.phpt b/ext/standard/tests/file/open_basedir_fileinode.phpt deleted file mode 100644 index 070c2c806..000000000 --- a/ext/standard/tests/file/open_basedir_fileinode.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [fileinode] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: fileinode(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileinode(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [fileinode] *** - diff --git a/ext/standard/tests/file/open_basedir_filemtime.phpt b/ext/standard/tests/file/open_basedir_filemtime.phpt deleted file mode 100644 index 7213ddb5b..000000000 --- a/ext/standard/tests/file/open_basedir_filemtime.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [filemtime] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: filemtime(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filemtime(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [filemtime] *** - diff --git a/ext/standard/tests/file/open_basedir_fileowner.phpt b/ext/standard/tests/file/open_basedir_fileowner.phpt deleted file mode 100644 index b363b7e0e..000000000 --- a/ext/standard/tests/file/open_basedir_fileowner.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [fileowner] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: fileowner(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileowner(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [fileowner] *** - diff --git a/ext/standard/tests/file/open_basedir_fileperms.phpt b/ext/standard/tests/file/open_basedir_fileperms.phpt deleted file mode 100644 index a1e6511b0..000000000 --- a/ext/standard/tests/file/open_basedir_fileperms.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [fileperms] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: fileperms(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: fileperms(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [fileperms] *** - diff --git a/ext/standard/tests/file/open_basedir_filesize.phpt b/ext/standard/tests/file/open_basedir_filesize.phpt deleted file mode 100644 index a335dfd17..000000000 --- a/ext/standard/tests/file/open_basedir_filesize.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [filesize] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: filesize(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filesize(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) -*** Finished testing open_basedir configuration [filesize] *** - diff --git a/ext/standard/tests/file/open_basedir_filetype.phpt b/ext/standard/tests/file/open_basedir_filetype.phpt deleted file mode 100644 index 5091db56f..000000000 --- a/ext/standard/tests/file/open_basedir_filetype.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [filetype] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: filetype(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: filetype(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -string(3) "dir" -string(4) "file" -string(4) "file" -string(4) "file" -string(4) "file" -*** Finished testing open_basedir configuration [filetype] *** - diff --git a/ext/standard/tests/file/open_basedir_fopen.phpt b/ext/standard/tests/file/open_basedir_fopen.phpt deleted file mode 100644 index c6c9a253f..000000000 --- a/ext/standard/tests/file/open_basedir_fopen.phpt +++ /dev/null @@ -1,86 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [fopen] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: fopen(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(../bad): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(..): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(../): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(/): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(../bad/.): failed to open stream: Operation not permitted in %s on line %d -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(../bad/./bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(../bad/./bad.txt): failed to open stream: Operation not permitted in %s on line 12 -bool(false) - -Warning: fopen(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d - -Warning: fopen(./../.): failed to open stream: Operation not permitted in %s on line %d -bool(false) -resource(%d) of type (stream) -resource(%d) of type (stream) -resource(%d) of type (stream) -resource(%d) of type (stream) -resource(%d) of type (stream) -*** Finished testing open_basedir configuration [fopen] *** - diff --git a/ext/standard/tests/file/open_basedir_glob-win32.phpt b/ext/standard/tests/file/open_basedir_glob-win32.phpt deleted file mode 100644 index 3fa19afa3..000000000 --- a/ext/standard/tests/file/open_basedir_glob-win32.phpt +++ /dev/null @@ -1,59 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [glob] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(false) -bool(false) -bool(false) -array(0) { -} -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -array(1) { - [0]=> - string(5) "../ok" -} -array(1) { - [0]=> - string(6) "ok.txt" -} -array(1) { - [0]=> - string(12) "../ok/ok.txt" -} -array(1) { - [0]=> - string(%d) "%s/test/ok/ok.txt" -} -array(1) { - [0]=> - string(%d) "%s/test/ok/../ok/ok.txt" -} -*** Finished testing open_basedir configuration [glob] *** - diff --git a/ext/standard/tests/file/open_basedir_glob.phpt b/ext/standard/tests/file/open_basedir_glob.phpt deleted file mode 100644 index 591cd8f4f..000000000 --- a/ext/standard/tests/file/open_basedir_glob.phpt +++ /dev/null @@ -1,58 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [glob] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -array(1) { - [0]=> - string(5) "../ok" -} -array(1) { - [0]=> - string(6) "ok.txt" -} -array(1) { - [0]=> - string(12) "../ok/ok.txt" -} -array(1) { - [0]=> - string(%d) "%s/test/ok/ok.txt" -} -array(1) { - [0]=> - string(%d) "%s/test/ok/../ok/ok.txt" -} -*** Finished testing open_basedir configuration [glob] *** - diff --git a/ext/standard/tests/file/open_basedir_is_dir.phpt b/ext/standard/tests/file/open_basedir_is_dir.phpt deleted file mode 100644 index e4ad620d7..000000000 --- a/ext/standard/tests/file/open_basedir_is_dir.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_dir] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_dir(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_dir(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(false) -bool(false) -bool(false) -bool(false) -*** Finished testing open_basedir configuration [is_dir] *** - diff --git a/ext/standard/tests/file/open_basedir_is_executable.phpt b/ext/standard/tests/file/open_basedir_is_executable.phpt deleted file mode 100644 index 1bab86055..000000000 --- a/ext/standard/tests/file/open_basedir_is_executable.phpt +++ /dev/null @@ -1,59 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_executable] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_executable(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_executable(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -*** Finished testing open_basedir configuration [is_executable] *** diff --git a/ext/standard/tests/file/open_basedir_is_file.phpt b/ext/standard/tests/file/open_basedir_is_file.phpt deleted file mode 100644 index 51ef0a2d1..000000000 --- a/ext/standard/tests/file/open_basedir_is_file.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_file] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_file(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_file(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [is_file] *** - diff --git a/ext/standard/tests/file/open_basedir_is_link.phpt b/ext/standard/tests/file/open_basedir_is_link.phpt deleted file mode 100644 index 5d12148d8..000000000 --- a/ext/standard/tests/file/open_basedir_is_link.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_link] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_link(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_link(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -*** Finished testing open_basedir configuration [is_link] *** - diff --git a/ext/standard/tests/file/open_basedir_is_readable.phpt b/ext/standard/tests/file/open_basedir_is_readable.phpt deleted file mode 100644 index 951a19ac7..000000000 --- a/ext/standard/tests/file/open_basedir_is_readable.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_readable] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_readable(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_readable(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [is_readable] *** - diff --git a/ext/standard/tests/file/open_basedir_is_writable.phpt b/ext/standard/tests/file/open_basedir_is_writable.phpt deleted file mode 100644 index 25ce1c63a..000000000 --- a/ext/standard/tests/file/open_basedir_is_writable.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [is_writable] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: is_writable(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: is_writable(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [is_writable] *** - diff --git a/ext/standard/tests/file/open_basedir_link.phpt b/ext/standard/tests/file/open_basedir_link.phpt deleted file mode 100644 index a54c22f4b..000000000 --- a/ext/standard/tests/file/open_basedir_link.phpt +++ /dev/null @@ -1,78 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [link] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad/link.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/link.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad/link.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/link.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: link(): open_basedir restriction in effect. File(%s/test/bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [link] *** - diff --git a/ext/standard/tests/file/open_basedir_linkinfo.phpt b/ext/standard/tests/file/open_basedir_linkinfo.phpt deleted file mode 100644 index ab12a5149..000000000 --- a/ext/standard/tests/file/open_basedir_linkinfo.phpt +++ /dev/null @@ -1,64 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [linkinfo] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -int(%d) -int(%d) -int(%d) -int(%d) -int(%d) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -int(%d) - -Warning: unlink(): open_basedir restriction in effect. File(%s/test/ok/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [linkinfo] *** - diff --git a/ext/standard/tests/file/open_basedir_lstat.phpt b/ext/standard/tests/file/open_basedir_lstat.phpt deleted file mode 100644 index 35e5a2201..000000000 --- a/ext/standard/tests/file/open_basedir_lstat.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [lstat] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: lstat(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: lstat(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [lstat] *** - diff --git a/ext/standard/tests/file/open_basedir_mkdir.phpt b/ext/standard/tests/file/open_basedir_mkdir.phpt deleted file mode 100644 index 253818ccf..000000000 --- a/ext/standard/tests/file/open_basedir_mkdir.phpt +++ /dev/null @@ -1,52 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [mkdir] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: mkdir(): open_basedir restriction in effect. File(../bad/blah) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: mkdir(): open_basedir restriction in effect. File(../blah) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: mkdir(): open_basedir restriction in effect. File(../bad/./blah) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: mkdir(): open_basedir restriction in effect. File(./.././blah) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [mkdir] *** diff --git a/ext/standard/tests/file/open_basedir_parse_ini_file.phpt b/ext/standard/tests/file/open_basedir_parse_ini_file.phpt deleted file mode 100644 index dadddac98..000000000 --- a/ext/standard/tests/file/open_basedir_parse_ini_file.phpt +++ /dev/null @@ -1,74 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [parse_ini_file] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: parse_ini_file(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(../bad): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(../bad/bad.txt): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(..): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(../): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(../bad/.): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(): open_basedir restriction in effect. File(../bad/./bad.txt) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(../bad/./bad.txt): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} - -Warning: parse_ini_file(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d - -Warning: parse_ini_file(./../.): failed to open stream: Operation not permitted in %s on line %d -array(0) { -} -*** Finished testing open_basedir configuration [parse_ini_file] *** - diff --git a/ext/standard/tests/file/open_basedir_readlink.phpt b/ext/standard/tests/file/open_basedir_readlink.phpt deleted file mode 100644 index cbba4307e..000000000 --- a/ext/standard/tests/file/open_basedir_readlink.phpt +++ /dev/null @@ -1,76 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [readlink] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: readlink(): open_basedir restriction in effect. File(symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: readlink(): open_basedir restriction in effect. File(../ok/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: readlink(): open_basedir restriction in effect. File(../ok/./symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: readlink(): open_basedir restriction in effect. File(./symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: readlink(): open_basedir restriction in effect. File(%s/test/ok/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: readlink(): open_basedir restriction in effect. File(%s/test/ok/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(): open_basedir restriction in effect. File(%s/test/ok/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [readlink] *** - diff --git a/ext/standard/tests/file/open_basedir_realpath.phpt b/ext/standard/tests/file/open_basedir_realpath.phpt deleted file mode 100644 index 8cae890e9..000000000 --- a/ext/standard/tests/file/open_basedir_realpath.phpt +++ /dev/null @@ -1,61 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [realpath] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test\bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test\bad\bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test\bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test\bad\bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test\bad\bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: realpath(): open_basedir restriction in effect. File(%s\test) is not within the allowed path(s): (.) in %s on line %d -bool(false) -string(%d) "%s\test\ok" -string(%d) "%s\test\ok\ok.txt" -string(%d) "%s\test\ok\ok.txt" -string(%d) "%s\test\ok\ok.txt" -string(%d) "%s\test\ok\ok.txt" -*** Finished testing open_basedir configuration [realpath] *** - diff --git a/ext/standard/tests/file/open_basedir_rename.phpt b/ext/standard/tests/file/open_basedir_rename.phpt deleted file mode 100644 index 428e7a070..000000000 --- a/ext/standard/tests/file/open_basedir_rename.phpt +++ /dev/null @@ -1,47 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [rename] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: rename(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rename(): open_basedir restriction in effect. File(.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rename(): open_basedir restriction in effect. File(../bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rename(): open_basedir restriction in effect. File(./.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rename(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [rename] *** - diff --git a/ext/standard/tests/file/open_basedir_rmdir.phpt b/ext/standard/tests/file/open_basedir_rmdir.phpt deleted file mode 100644 index b4d61f8b7..000000000 --- a/ext/standard/tests/file/open_basedir_rmdir.phpt +++ /dev/null @@ -1,47 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [rmdir] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: rmdir(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rmdir(): open_basedir restriction in effect. File(.././bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rmdir(): open_basedir restriction in effect. File(../bad/../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rmdir(): open_basedir restriction in effect. File(./.././bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: rmdir(): open_basedir restriction in effect. File(%s/test/bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [rmdir] *** - diff --git a/ext/standard/tests/file/open_basedir_stat.phpt b/ext/standard/tests/file/open_basedir_stat.phpt deleted file mode 100644 index b80b854d6..000000000 --- a/ext/standard/tests/file/open_basedir_stat.phpt +++ /dev/null @@ -1,55 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [stat] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: stat(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(%s/test/bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: stat(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [stat] *** - diff --git a/ext/standard/tests/file/open_basedir_symlink.phpt b/ext/standard/tests/file/open_basedir_symlink.phpt deleted file mode 100644 index 3b3f1d571..000000000 --- a/ext/standard/tests/file/open_basedir_symlink.phpt +++ /dev/null @@ -1,78 +0,0 @@ ---TEST-- -Test open_basedir configuration ---SKIPIF-- - ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [symlink] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/symlink.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: symlink(): open_basedir restriction in effect. File(%s/test/bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [symlink] *** - diff --git a/ext/standard/tests/file/open_basedir_tempnam.phpt b/ext/standard/tests/file/open_basedir_tempnam.phpt deleted file mode 100644 index 247ac88d5..000000000 --- a/ext/standard/tests/file/open_basedir_tempnam.phpt +++ /dev/null @@ -1,57 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [tempnam] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: tempnam(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: tempnam(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: tempnam(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: tempnam(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: tempnam(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: tempnam(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -string(%d) "%s" -bool(true) -*** Finished testing open_basedir configuration [tempnam] *** - diff --git a/ext/standard/tests/file/open_basedir_touch.phpt b/ext/standard/tests/file/open_basedir_touch.phpt deleted file mode 100644 index b0a5aee61..000000000 --- a/ext/standard/tests/file/open_basedir_touch.phpt +++ /dev/null @@ -1,70 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [touch] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: touch(): open_basedir restriction in effect. File(../bad) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(..) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(../bad/.) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(../bad/./bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: touch(): open_basedir restriction in effect. File(./../.) is not within the allowed path(s): (.) in %s on line %d -bool(false) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -*** Finished testing open_basedir configuration [touch] *** - diff --git a/ext/standard/tests/file/open_basedir_unlink.phpt b/ext/standard/tests/file/open_basedir_unlink.phpt deleted file mode 100644 index 75b0f3f4a..000000000 --- a/ext/standard/tests/file/open_basedir_unlink.phpt +++ /dev/null @@ -1,47 +0,0 @@ ---TEST-- -Test open_basedir configuration ---INI-- -open_basedir=. ---FILE-- - ---CLEAN-- - ---EXPECTF-- -*** Testing open_basedir configuration [unlink] *** -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) - -Warning: unlink(): open_basedir restriction in effect. File(../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(): open_basedir restriction in effect. File(.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(): open_basedir restriction in effect. File(../bad/../bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(): open_basedir restriction in effect. File(./.././bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) - -Warning: unlink(): open_basedir restriction in effect. File(%s/test/bad/bad.txt) is not within the allowed path(s): (.) in %s on line %d -bool(false) -*** Finished testing open_basedir configuration [unlink] *** - diff --git a/ext/standard/tests/file/parse_ini_file_error.phpt b/ext/standard/tests/file/parse_ini_file_error.phpt index 65a6ac1d8..309a00f44 100644 --- a/ext/standard/tests/file/parse_ini_file_error.phpt +++ b/ext/standard/tests/file/parse_ini_file_error.phpt @@ -8,10 +8,6 @@ Test parse_ini_file() function : error conditions * Alias to functions: */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing parse_ini_file() : error conditions ***\n"; // Zero arguments @@ -47,6 +43,5 @@ NULL -- Testing parse_ini_file() function with a non-existent file -- Warning: parse_ini_file(%s): failed to open stream: No such file or directory in %s on line %d -array(0) { -} +bool(false) Done diff --git a/ext/standard/tests/file/parse_ini_file_variation1.phpt b/ext/standard/tests/file/parse_ini_file_variation1.phpt new file mode 100644 index 000000000..a24bc1c05 --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation1.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test parse_ini_file() function : variation: identical properties and values are not referenced. +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing parse_ini_file() : variation *** +array(2) { + ["section1"]=> + array(2) { + ["value1"]=> + string(8) "original" + ["value2"]=> + string(8) "original" + } + ["section2"]=> + array(2) { + ["value1"]=> + string(8) "original" + ["value2"]=> + string(9) "different" + } +} +array(2) { + ["section1"]=> + array(2) { + ["value1"]=> + string(7) "changed" + ["value2"]=> + string(8) "original" + } + ["section2"]=> + array(2) { + ["value1"]=> + string(8) "original" + ["value2"]=> + string(9) "different" + } +} +===DONE=== diff --git a/ext/standard/tests/file/parse_ini_file_variation2.phpt b/ext/standard/tests/file/parse_ini_file_variation2.phpt new file mode 100644 index 000000000..20ad6bb06 --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation2.phpt @@ -0,0 +1,111 @@ +--TEST-- +Test parse_ini_file() function : variation: handling different boolean values +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing parse_ini_file() : variation *** +array(8) { + ["section1"]=> + array(2) { + ["value1"]=> + string(1) "1" + ["value2"]=> + string(0) "" + } + ["section2"]=> + array(2) { + ["value1"]=> + string(1) "1" + ["value2"]=> + string(0) "" + } + ["section3"]=> + array(2) { + ["value1"]=> + string(1) "1" + ["value2"]=> + string(0) "" + } + ["section4"]=> + array(2) { + ["value1"]=> + string(0) "" + ["value2"]=> + string(0) "" + } + ["section5"]=> + array(2) { + ["value1"]=> + string(2) "on" + ["value2"]=> + string(3) "off" + } + ["section6"]=> + array(2) { + ["value1"]=> + string(4) "true" + ["value2"]=> + string(5) "false" + } + ["section7"]=> + array(2) { + ["value1"]=> + string(3) "yes" + ["value2"]=> + string(2) "no" + } + ["section8"]=> + array(2) { + ["value1"]=> + string(4) "null" + ["value2"]=> + string(0) "" + } +} +===DONE=== diff --git a/ext/standard/tests/file/parse_ini_file_variation3.phpt b/ext/standard/tests/file/parse_ini_file_variation3.phpt new file mode 100644 index 000000000..c1245a91c --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation3.phpt @@ -0,0 +1,104 @@ +--TEST-- +Test parse_ini_file() function : variation: include path searching +--CREDITS-- +Dave Kelsey +--FILE-- + +===Done=== +--CLEAN-- + +--EXPECTF-- +*** Testing parse_ini_file() : variation *** +New include path is : %sparse_ini_file_variation3.dir1%sparse_ini_file_variation3.dir2%sparse_ini_file_variation3.dir3%S +array(11) { + ["error_reporting"]=> + string(4) "6143" + ["display_errors"]=> + string(1) "1" + ["display_startup_errors"]=> + string(0) "" + ["log_errors"]=> + string(0) "" + ["log_errors_max_len"]=> + string(4) "1024" + ["ignore_repeated_errors"]=> + string(0) "" + ["ignore_repeated_source"]=> + string(0) "" + ["report_memleaks"]=> + string(1) "1" + ["track_errors"]=> + string(0) "" + ["docref_root"]=> + string(11) "/phpmanual/" + ["docref_ext"]=> + string(5) ".html" +} +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/file/parse_ini_file_variation4.phpt b/ext/standard/tests/file/parse_ini_file_variation4.phpt new file mode 100644 index 000000000..ec443e95b --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation4.phpt @@ -0,0 +1,216 @@ +--TEST-- +Test parse_ini_file() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for filename + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( parse_ini_file($value, $process_sections) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing parse_ini_file() : usage variation *** + +--int 0-- +Error: 2 - parse_ini_file(0): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 1-- +Error: 2 - parse_ini_file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - parse_ini_file(12345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - parse_ini_file(-2345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - parse_ini_file(10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - parse_ini_file(-10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - parse_ini_file(123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - parse_ini_file(-123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float .5-- +Error: 2 - parse_ini_file(0.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - parse_ini_file(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - parse_ini_file(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - parse_ini_file(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - parse_ini_file(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - parse_ini_file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - parse_ini_file(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - parse_ini_file(Class A object): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - parse_ini_file(Object): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) + +--unset var-- +Error: 2 - parse_ini_file(): Filename cannot be empty, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/parse_ini_file_variation5.phpt b/ext/standard/tests/file/parse_ini_file_variation5.phpt new file mode 100644 index 000000000..206969bda --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation5.phpt @@ -0,0 +1,265 @@ +--TEST-- +Test parse_ini_file() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for process_sections + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( parse_ini_file($filename, $value) ); +}; + +unlink($filename); +?> +===DONE=== +--EXPECTF-- +*** Testing parse_ini_file() : usage variation *** + +--int 0-- +array(1) { + ["a"]=> + string(4) "test" +} + +--int 1-- +array(1) { + ["a"]=> + string(4) "test" +} + +--int 12345-- +array(1) { + ["a"]=> + string(4) "test" +} + +--int -12345-- +array(1) { + ["a"]=> + string(4) "test" +} + +--float 10.5-- +array(1) { + ["a"]=> + string(4) "test" +} + +--float -10.5-- +array(1) { + ["a"]=> + string(4) "test" +} + +--float 12.3456789000e10-- +array(1) { + ["a"]=> + string(4) "test" +} + +--float -12.3456789000e10-- +array(1) { + ["a"]=> + string(4) "test" +} + +--float .5-- +array(1) { + ["a"]=> + string(4) "test" +} + +--empty array-- +array(1) { + ["a"]=> + string(4) "test" +} + +--int indexed array-- +array(1) { + ["a"]=> + string(4) "test" +} + +--associative array-- +array(1) { + ["a"]=> + string(4) "test" +} + +--nested arrays-- +array(1) { + ["a"]=> + string(4) "test" +} + +--uppercase NULL-- +array(1) { + ["a"]=> + string(4) "test" +} + +--lowercase null-- +array(1) { + ["a"]=> + string(4) "test" +} + +--empty string DQ-- +array(1) { + ["a"]=> + string(4) "test" +} + +--empty string SQ-- +array(1) { + ["a"]=> + string(4) "test" +} + +--string DQ-- +array(1) { + ["a"]=> + string(4) "test" +} + +--string SQ-- +array(1) { + ["a"]=> + string(4) "test" +} + +--mixed case string-- +array(1) { + ["a"]=> + string(4) "test" +} + +--heredoc-- +array(1) { + ["a"]=> + string(4) "test" +} + +--instance of classWithToString-- +array(1) { + ["a"]=> + string(4) "test" +} + +--instance of classWithoutToString-- +array(1) { + ["a"]=> + string(4) "test" +} + +--undefined var-- +array(1) { + ["a"]=> + string(4) "test" +} + +--unset var-- +array(1) { + ["a"]=> + string(4) "test" +} +===DONE=== diff --git a/ext/standard/tests/file/parse_ini_file_variation6-win32.phpt b/ext/standard/tests/file/parse_ini_file_variation6-win32.phpt new file mode 100644 index 000000000..6dfbee990 --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation6-win32.phpt @@ -0,0 +1,143 @@ +--TEST-- +Test parse_ini_file() function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing parse_ini_file() : variation *** + +-- Iteration 1 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 2 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 3 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 4 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 5 -- + +Warning: parse_ini_file(%sparseIniFileVar6.dir\parseIniFileVar6Sub\..\\\parseIniFileVar6Sub\\..\\..\parseIniFileVar6Sub\ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: parse_ini_file(%sparseIniFileVar6.dir\parseIniFileVar6Sub\BADDIR\ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 8 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 9 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 10 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 11 -- + +Warning: parse_ini_file(BADDIR\ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 12 -- +array(1) { + ["a"]=> + string(4) "test" +} + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/parse_ini_file_variation6.phpt b/ext/standard/tests/file/parse_ini_file_variation6.phpt new file mode 100644 index 000000000..e9844e905 --- /dev/null +++ b/ext/standard/tests/file/parse_ini_file_variation6.phpt @@ -0,0 +1,129 @@ +--TEST-- +Test parse_ini_file() function : variation - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing parse_ini_file() : variation *** + +-- Iteration 1 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 2 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 3 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 4 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 5 -- + +Warning: parse_ini_file(%sparseIniFileVar6.dir/parseIniFileVar6Sub/..///parseIniFileVar6Sub//..//../parseIniFileVar6Sub/ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: parse_ini_file(%sparseIniFileVar6.dir/parseIniFileVar6Sub/BADDIR/ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 8 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 9 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 10 -- +array(1) { + ["a"]=> + string(4) "test" +} + +-- Iteration 11 -- + +Warning: parse_ini_file(BADDIR/ParseIniFileVar6.ini): failed to open stream: No such file or directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/pathinfo_basic1-win32.phpt b/ext/standard/tests/file/pathinfo_basic1-win32.phpt new file mode 100644 index 000000000..9e84b9979 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_basic1-win32.phpt @@ -0,0 +1,609 @@ +--TEST-- +Test pathinfo() function: basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing basic functions of pathinfo() *** +-- Iteration 1 -- +string(0) "" +string(0) "" +string(0) "" +string(0) "" +array(2) { + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 2 -- +string(1) "." +string(1) " " +string(0) "" +string(1) " " +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) " " + ["filename"]=> + string(1) " " +} +-- Iteration 3 -- +string(2) "c:" +string(2) "c:" +string(0) "" +string(2) "c:" +array(3) { + ["dirname"]=> + string(2) "c:" + ["basename"]=> + string(2) "c:" + ["filename"]=> + string(2) "c:" +} +-- Iteration 4 -- +string(3) "c:\" +string(2) "c:" +string(0) "" +string(2) "c:" +array(3) { + ["dirname"]=> + string(3) "c:\" + ["basename"]=> + string(2) "c:" + ["filename"]=> + string(2) "c:" +} +-- Iteration 5 -- +string(3) "c:\" +string(2) "c:" +string(0) "" +string(2) "c:" +array(3) { + ["dirname"]=> + string(3) "c:\" + ["basename"]=> + string(2) "c:" + ["filename"]=> + string(2) "c:" +} +-- Iteration 6 -- +string(1) "." +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 7 -- +string(7) "c:\test" +string(4) "adir" +string(0) "" +string(4) "adir" +array(3) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(4) "adir" + ["filename"]=> + string(4) "adir" +} +-- Iteration 8 -- +string(7) "c:\test" +string(4) "adir" +string(0) "" +string(4) "adir" +array(3) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(4) "adir" + ["filename"]=> + string(4) "adir" +} +-- Iteration 9 -- +string(12) "/usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(12) "/usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 10 -- +string(12) "/usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(12) "/usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 11 -- +string(11) "usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(11) "usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 12 -- +string(11) "usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(11) "usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 13 -- +string(7) "c:\test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 14 -- +string(7) "c:\test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 15 -- +string(8) "c://test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(8) "c://test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 16 -- +string(7) "c:\test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 17 -- +string(7) "c:\test" +string(8) "prog.exe" +string(3) "exe" +string(4) "prog" +array(4) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(8) "prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(4) "prog" +} +-- Iteration 18 -- +string(7) "c:\test" +string(8) "prog.exe" +string(3) "exe" +string(4) "prog" +array(4) { + ["dirname"]=> + string(7) "c:\test" + ["basename"]=> + string(8) "prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(4) "prog" +} +-- Iteration 19 -- +string(7) "c:/test" +string(8) "prog.exe" +string(3) "exe" +string(4) "prog" +array(4) { + ["dirname"]=> + string(7) "c:/test" + ["basename"]=> + string(8) "prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(4) "prog" +} +-- Iteration 20 -- +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 21 -- +string(19) "//usr/include//arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(19) "//usr/include//arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 22 -- +string(1) "\" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 23 -- +string(1) "\" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 24 -- +string(1) "\" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 25 -- +string(1) "\" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 26 -- +string(1) "\" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 27 -- +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 28 -- +string(31) "c:\windows/system32\drivers/etc" +string(5) "hosts" +string(0) "" +string(5) "hosts" +array(3) { + ["dirname"]=> + string(31) "c:\windows/system32\drivers/etc" + ["basename"]=> + string(5) "hosts" + ["filename"]=> + string(5) "hosts" +} +-- Iteration 29 -- +string(17) "/usr\include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr\include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 30 -- +string(15) " c:\test\adir" +string(9) "afile.txt" +string(3) "txt" +string(5) "afile" +array(4) { + ["dirname"]=> + string(15) " c:\test\adir" + ["basename"]=> + string(9) "afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(5) "afile" +} +-- Iteration 31 -- +string(12) "c:\test\adir" +string(12) "afile.txt " +string(6) "txt " +string(5) "afile" +array(4) { + ["dirname"]=> + string(12) "c:\test\adir" + ["basename"]=> + string(12) "afile.txt " + ["extension"]=> + string(6) "txt " + ["filename"]=> + string(5) "afile" +} +-- Iteration 32 -- +string(15) " c:\test\adir" +string(12) "afile.txt " +string(6) "txt " +string(5) "afile" +array(4) { + ["dirname"]=> + string(15) " c:\test\adir" + ["basename"]=> + string(12) "afile.txt " + ["extension"]=> + string(6) "txt " + ["filename"]=> + string(5) "afile" +} +-- Iteration 33 -- +string(20) " /usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(20) " /usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 34 -- +string(17) "/usr/include/arpa" +string(9) "inet.h " +string(4) "h " +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(9) "inet.h " + ["extension"]=> + string(4) "h " + ["filename"]=> + string(4) "inet" +} +-- Iteration 35 -- +string(20) " /usr/include/arpa" +string(9) "inet.h " +string(4) "h " +string(4) "inet" +array(4) { + ["dirname"]=> + string(20) " /usr/include/arpa" + ["basename"]=> + string(9) "inet.h " + ["extension"]=> + string(4) "h " + ["filename"]=> + string(4) "inet" +} +-- Iteration 36 -- +string(1) "." +string(3) " c:" +string(0) "" +string(3) " c:" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(3) " c:" + ["filename"]=> + string(3) " c:" +} +-- Iteration 37 -- +string(14) " c:\test\adir" +string(9) "afile.txt" +string(3) "txt" +string(5) "afile" +array(4) { + ["dirname"]=> + string(14) " c:\test\adir" + ["basename"]=> + string(9) "afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(5) "afile" +} +-- Iteration 38 -- +string(1) "\" +string(3) "usr" +string(0) "" +string(3) "usr" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(3) "usr" + ["filename"]=> + string(3) "usr" +} +-- Iteration 39 -- +string(1) "\" +string(3) "usr" +string(0) "" +string(3) "usr" +array(3) { + ["dirname"]=> + string(1) "\" + ["basename"]=> + string(3) "usr" + ["filename"]=> + string(3) "usr" +} +Done diff --git a/ext/standard/tests/file/pathinfo_basic1.phpt b/ext/standard/tests/file/pathinfo_basic1.phpt new file mode 100644 index 000000000..61b183f87 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_basic1.phpt @@ -0,0 +1,609 @@ +--TEST-- +Test pathinfo() function: basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing basic functions of pathinfo() *** +-- Iteration 1 -- +string(0) "" +string(0) "" +string(0) "" +string(0) "" +array(2) { + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 2 -- +string(1) "." +string(1) " " +string(0) "" +string(1) " " +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) " " + ["filename"]=> + string(1) " " +} +-- Iteration 3 -- +string(1) "." +string(2) "c:" +string(0) "" +string(2) "c:" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) "c:" + ["filename"]=> + string(2) "c:" +} +-- Iteration 4 -- +string(1) "." +string(3) "c:\" +string(0) "" +string(3) "c:\" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(3) "c:\" + ["filename"]=> + string(3) "c:\" +} +-- Iteration 5 -- +string(1) "." +string(2) "c:" +string(0) "" +string(2) "c:" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) "c:" + ["filename"]=> + string(2) "c:" +} +-- Iteration 6 -- +string(1) "." +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 7 -- +string(1) "." +string(12) "c:\test\adir" +string(0) "" +string(12) "c:\test\adir" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(12) "c:\test\adir" + ["filename"]=> + string(12) "c:\test\adir" +} +-- Iteration 8 -- +string(1) "." +string(13) "c:\test\adir\" +string(0) "" +string(13) "c:\test\adir\" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(13) "c:\test\adir\" + ["filename"]=> + string(13) "c:\test\adir\" +} +-- Iteration 9 -- +string(12) "/usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(12) "/usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 10 -- +string(12) "/usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(12) "/usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 11 -- +string(11) "usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(11) "usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 12 -- +string(11) "usr/include" +string(4) "arpa" +string(0) "" +string(4) "arpa" +array(3) { + ["dirname"]=> + string(11) "usr/include" + ["basename"]=> + string(4) "arpa" + ["filename"]=> + string(4) "arpa" +} +-- Iteration 13 -- +string(1) "." +string(13) "c:\test\afile" +string(0) "" +string(13) "c:\test\afile" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(13) "c:\test\afile" + ["filename"]=> + string(13) "c:\test\afile" +} +-- Iteration 14 -- +string(1) "." +string(13) "c:\test\afile" +string(0) "" +string(13) "c:\test\afile" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(13) "c:\test\afile" + ["filename"]=> + string(13) "c:\test\afile" +} +-- Iteration 15 -- +string(8) "c://test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(8) "c://test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 16 -- +string(1) "." +string(14) "c:\test\afile\" +string(0) "" +string(14) "c:\test\afile\" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(14) "c:\test\afile\" + ["filename"]=> + string(14) "c:\test\afile\" +} +-- Iteration 17 -- +string(1) "." +string(16) "c:\test\prog.exe" +string(3) "exe" +string(12) "c:\test\prog" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(16) "c:\test\prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(12) "c:\test\prog" +} +-- Iteration 18 -- +string(1) "." +string(16) "c:\test\prog.exe" +string(3) "exe" +string(12) "c:\test\prog" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(16) "c:\test\prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(12) "c:\test\prog" +} +-- Iteration 19 -- +string(7) "c:/test" +string(8) "prog.exe" +string(3) "exe" +string(4) "prog" +array(4) { + ["dirname"]=> + string(7) "c:/test" + ["basename"]=> + string(8) "prog.exe" + ["extension"]=> + string(3) "exe" + ["filename"]=> + string(4) "prog" +} +-- Iteration 20 -- +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 21 -- +string(19) "//usr/include//arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(19) "//usr/include//arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 22 -- +string(1) "." +string(1) "\" +string(0) "" +string(1) "\" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "\" + ["filename"]=> + string(1) "\" +} +-- Iteration 23 -- +string(1) "." +string(2) "\\" +string(0) "" +string(2) "\\" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) "\\" + ["filename"]=> + string(2) "\\" +} +-- Iteration 24 -- +string(1) "/" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 25 -- +string(1) "/" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 26 -- +string(1) "/" +string(0) "" +string(0) "" +string(0) "" +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 27 -- +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 28 -- +string(27) "c:\windows/system32\drivers" +string(9) "etc\hosts" +string(0) "" +string(9) "etc\hosts" +array(3) { + ["dirname"]=> + string(27) "c:\windows/system32\drivers" + ["basename"]=> + string(9) "etc\hosts" + ["filename"]=> + string(9) "etc\hosts" +} +-- Iteration 29 -- +string(12) "/usr\include" +string(11) "arpa\inet.h" +string(1) "h" +string(9) "arpa\inet" +array(4) { + ["dirname"]=> + string(12) "/usr\include" + ["basename"]=> + string(11) "arpa\inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(9) "arpa\inet" +} +-- Iteration 30 -- +string(1) "." +string(25) " c:\test\adir\afile.txt" +string(3) "txt" +string(21) " c:\test\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(25) " c:\test\adir\afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(21) " c:\test\adir\afile" +} +-- Iteration 31 -- +string(1) "." +string(25) "c:\test\adir\afile.txt " +string(6) "txt " +string(18) "c:\test\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(25) "c:\test\adir\afile.txt " + ["extension"]=> + string(6) "txt " + ["filename"]=> + string(18) "c:\test\adir\afile" +} +-- Iteration 32 -- +string(1) "." +string(28) " c:\test\adir\afile.txt " +string(6) "txt " +string(21) " c:\test\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(28) " c:\test\adir\afile.txt " + ["extension"]=> + string(6) "txt " + ["filename"]=> + string(21) " c:\test\adir\afile" +} +-- Iteration 33 -- +string(20) " /usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(20) " /usr/include/arpa" + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 34 -- +string(17) "/usr/include/arpa" +string(9) "inet.h " +string(4) "h " +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(9) "inet.h " + ["extension"]=> + string(4) "h " + ["filename"]=> + string(4) "inet" +} +-- Iteration 35 -- +string(20) " /usr/include/arpa" +string(9) "inet.h " +string(4) "h " +string(4) "inet" +array(4) { + ["dirname"]=> + string(20) " /usr/include/arpa" + ["basename"]=> + string(9) "inet.h " + ["extension"]=> + string(4) "h " + ["filename"]=> + string(4) "inet" +} +-- Iteration 36 -- +string(1) "." +string(3) " c:" +string(0) "" +string(3) " c:" +array(3) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(3) " c:" + ["filename"]=> + string(3) " c:" +} +-- Iteration 37 -- +string(1) "." +string(24) " c:\test\adir\afile.txt" +string(3) "txt" +string(20) " c:\test\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(24) " c:\test\adir\afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(20) " c:\test\adir\afile" +} +-- Iteration 38 -- +string(1) "/" +string(3) "usr" +string(0) "" +string(3) "usr" +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(3) "usr" + ["filename"]=> + string(3) "usr" +} +-- Iteration 39 -- +string(1) "/" +string(3) "usr" +string(0) "" +string(3) "usr" +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(3) "usr" + ["filename"]=> + string(3) "usr" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/file/pathinfo_basic2-win32.phpt b/ext/standard/tests/file/pathinfo_basic2-win32.phpt new file mode 100644 index 000000000..c88bc25ff --- /dev/null +++ b/ext/standard/tests/file/pathinfo_basic2-win32.phpt @@ -0,0 +1,270 @@ +--TEST-- +Test pathinfo() function: basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing basic functions of pathinfo() *** +-- Iteration 1 -- +string(5) "c:\.." +string(4) "dir1" +string(0) "" +string(4) "dir1" +array(3) { + ["dirname"]=> + string(5) "c:\.." + ["basename"]=> + string(4) "dir1" + ["filename"]=> + string(4) "dir1" +} +-- Iteration 2 -- +string(23) "c:\test\..\test2\.\adir" +string(9) "afile.txt" +string(3) "txt" +string(5) "afile" +array(4) { + ["dirname"]=> + string(23) "c:\test\..\test2\.\adir" + ["basename"]=> + string(9) "afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(5) "afile" +} +-- Iteration 3 -- +string(22) "/usr/include/../arpa/." +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(22) "/usr/include/../arpa/." + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 4 -- +string(12) "c:\test\adir" +string(10) "afile..txt" +string(3) "txt" +string(6) "afile." +array(4) { + ["dirname"]=> + string(12) "c:\test\adir" + ["basename"]=> + string(10) "afile..txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(6) "afile." +} +-- Iteration 5 -- +string(17) "/usr/include/arpa" +string(7) "inet..h" +string(1) "h" +string(5) "inet." +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(7) "inet..h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(5) "inet." +} +-- Iteration 6 -- +string(12) "c:\test\adir" +string(6) "afile." +string(0) "" +string(5) "afile" +array(4) { + ["dirname"]=> + string(12) "c:\test\adir" + ["basename"]=> + string(6) "afile." + ["extension"]=> + string(0) "" + ["filename"]=> + string(5) "afile" +} +-- Iteration 7 -- +string(17) "/usr/include/arpa" +string(5) "inet." +string(0) "" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(5) "inet." + ["extension"]=> + string(0) "" + ["filename"]=> + string(4) "inet" +} +-- Iteration 8 -- +string(17) "/usr/include/arpa" +string(6) "inet,h" +string(0) "" +string(6) "inet,h" +array(3) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet,h" + ["filename"]=> + string(6) "inet,h" +} +-- Iteration 9 -- +string(3) "c:." +string(11) "c:afile.txt" +string(3) "txt" +string(7) "c:afile" +array(4) { + ["dirname"]=> + string(3) "c:." + ["basename"]=> + string(11) "c:afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(7) "c:afile" +} +-- Iteration 10 -- +string(12) "..\.\..\test" +string(9) "afile.txt" +string(3) "txt" +string(5) "afile" +array(4) { + ["dirname"]=> + string(12) "..\.\..\test" + ["basename"]=> + string(9) "afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(5) "afile" +} +-- Iteration 11 -- +string(12) ".././../test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(12) ".././../test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 12 -- +string(1) "." +string(1) "." +string(0) "" +string(0) "" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 13 -- +string(1) "." +string(2) ".." +string(0) "" +string(1) "." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) ".." + ["extension"]=> + string(0) "" + ["filename"]=> + string(1) "." +} +-- Iteration 14 -- +string(1) "." +string(3) "..." +string(0) "" +string(2) ".." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(3) "..." + ["extension"]=> + string(0) "" + ["filename"]=> + string(2) ".." +} +-- Iteration 15 -- +string(12) "/usr/lib/..." +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(12) "/usr/lib/..." + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/file/pathinfo_basic2.phpt b/ext/standard/tests/file/pathinfo_basic2.phpt new file mode 100644 index 000000000..7bddda039 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_basic2.phpt @@ -0,0 +1,272 @@ +--TEST-- +Test pathinfo() function: basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Testing basic functions of pathinfo() *** +-- Iteration 1 -- +string(1) "." +string(10) "c:\..\dir1" +string(5) "\dir1" +string(4) "c:\." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(10) "c:\..\dir1" + ["extension"]=> + string(5) "\dir1" + ["filename"]=> + string(4) "c:\." +} +-- Iteration 2 -- +string(1) "." +string(33) "c:\test\..\test2\.\adir\afile.txt" +string(3) "txt" +string(29) "c:\test\..\test2\.\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(33) "c:\test\..\test2\.\adir\afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(29) "c:\test\..\test2\.\adir\afile" +} +-- Iteration 3 -- +string(22) "/usr/include/../arpa/." +string(6) "inet.h" +string(1) "h" +string(4) "inet" +array(4) { + ["dirname"]=> + string(22) "/usr/include/../arpa/." + ["basename"]=> + string(6) "inet.h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(4) "inet" +} +-- Iteration 4 -- +string(1) "." +string(23) "c:\test\adir\afile..txt" +string(3) "txt" +string(19) "c:\test\adir\afile." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(23) "c:\test\adir\afile..txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(19) "c:\test\adir\afile." +} +-- Iteration 5 -- +string(17) "/usr/include/arpa" +string(7) "inet..h" +string(1) "h" +string(5) "inet." +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(7) "inet..h" + ["extension"]=> + string(1) "h" + ["filename"]=> + string(5) "inet." +} +-- Iteration 6 -- +string(1) "." +string(19) "c:\test\adir\afile." +string(0) "" +string(18) "c:\test\adir\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(19) "c:\test\adir\afile." + ["extension"]=> + string(0) "" + ["filename"]=> + string(18) "c:\test\adir\afile" +} +-- Iteration 7 -- +string(17) "/usr/include/arpa" +string(5) "inet." +string(0) "" +string(4) "inet" +array(4) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(5) "inet." + ["extension"]=> + string(0) "" + ["filename"]=> + string(4) "inet" +} +-- Iteration 8 -- +string(17) "/usr/include/arpa" +string(6) "inet,h" +string(0) "" +string(6) "inet,h" +array(3) { + ["dirname"]=> + string(17) "/usr/include/arpa" + ["basename"]=> + string(6) "inet,h" + ["filename"]=> + string(6) "inet,h" +} +-- Iteration 9 -- +string(1) "." +string(11) "c:afile.txt" +string(3) "txt" +string(7) "c:afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(11) "c:afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(7) "c:afile" +} +-- Iteration 10 -- +string(1) "." +string(22) "..\.\..\test\afile.txt" +string(3) "txt" +string(18) "..\.\..\test\afile" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(22) "..\.\..\test\afile.txt" + ["extension"]=> + string(3) "txt" + ["filename"]=> + string(18) "..\.\..\test\afile" +} +-- Iteration 11 -- +string(12) ".././../test" +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(12) ".././../test" + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +-- Iteration 12 -- +string(1) "." +string(1) "." +string(0) "" +string(0) "" +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +-- Iteration 13 -- +string(1) "." +string(2) ".." +string(0) "" +string(1) "." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) ".." + ["extension"]=> + string(0) "" + ["filename"]=> + string(1) "." +} +-- Iteration 14 -- +string(1) "." +string(3) "..." +string(0) "" +string(2) ".." +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(3) "..." + ["extension"]=> + string(0) "" + ["filename"]=> + string(2) ".." +} +-- Iteration 15 -- +string(12) "/usr/lib/..." +string(5) "afile" +string(0) "" +string(5) "afile" +array(3) { + ["dirname"]=> + string(12) "/usr/lib/..." + ["basename"]=> + string(5) "afile" + ["filename"]=> + string(5) "afile" +} +Done \ No newline at end of file diff --git a/ext/standard/tests/file/pathinfo_variation1.phpt b/ext/standard/tests/file/pathinfo_variation1.phpt new file mode 100644 index 000000000..ff4c1eb81 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_variation1.phpt @@ -0,0 +1,190 @@ +--TEST-- +Test pathinfo() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( pathinfo($value, $options) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing pathinfo() : usage variation *** + +--int 0-- +string(1) "." + +--int 1-- +string(1) "." + +--int 12345-- +string(1) "." + +--int -12345-- +string(1) "." + +--float 10.5-- +string(1) "." + +--float -10.5-- +string(1) "." + +--float 12.3456789000e10-- +string(1) "." + +--float -12.3456789000e10-- +string(1) "." + +--float .5-- +string(1) "." + +--empty array-- +Error: 2 - pathinfo() expects parameter 1 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - pathinfo() expects parameter 1 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - pathinfo() expects parameter 1 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - pathinfo() expects parameter 1 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +string(0) "" + +--lowercase null-- +string(0) "" + +--lowercase true-- +string(1) "." + +--lowercase false-- +string(0) "" + +--uppercase TRUE-- +string(1) "." + +--uppercase FALSE-- +string(0) "" + +--empty string DQ-- +string(0) "" + +--empty string SQ-- +string(0) "" + +--instance of classWithToString-- +string(1) "." + +--instance of classWithoutToString-- +Error: 2 - pathinfo() expects parameter 1 to be string, object given, %s(%d) +NULL + +--undefined var-- +string(0) "" + +--unset var-- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/file/pathinfo_variation2.phpt b/ext/standard/tests/file/pathinfo_variation2.phpt new file mode 100644 index 000000000..9d18a4b79 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_variation2.phpt @@ -0,0 +1,197 @@ +--TEST-- +Test pathinfo() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for options + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( pathinfo($path, $value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing pathinfo() : usage variation *** + +--float 10.5-- +string(6) "inet.h" + +--float -10.5-- +string(6) "inet.h" + +--float 12.3456789000e10-- +string(%d) %s + +--float -12.3456789000e10-- +string(%d) %s + +--float .5-- +string(%d) %s + +--empty array-- +Error: 2 - pathinfo() expects parameter 2 to be long, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - pathinfo() expects parameter 2 to be long, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - pathinfo() expects parameter 2 to be long, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - pathinfo() expects parameter 2 to be long, array given, %s(%d) +NULL + +--uppercase NULL-- +string(0) "" + +--lowercase null-- +string(0) "" + +--lowercase true-- +string(17) "/usr/include/arpa" + +--lowercase false-- +string(0) "" + +--uppercase TRUE-- +string(17) "/usr/include/arpa" + +--uppercase FALSE-- +string(0) "" + +--empty string DQ-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - pathinfo() expects parameter 2 to be long, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - pathinfo() expects parameter 2 to be long, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - pathinfo() expects parameter 2 to be long, object given, %s(%d) +NULL + +--undefined var-- +string(0) "" + +--unset var-- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/file/pathinfo_variation3.phpt b/ext/standard/tests/file/pathinfo_variation3.phpt new file mode 100644 index 000000000..333aa5683 --- /dev/null +++ b/ext/standard/tests/file/pathinfo_variation3.phpt @@ -0,0 +1,80 @@ +--TEST-- +Test pathinfo() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing pathinfo() : usage variation *** +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "%s" + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(10) ".cvsignore" + ["extension"]=> + string(9) "cvsignore" + ["filename"]=> + string(0) "" +} +string(6) "inet.h" +string(4) "inet" +string(1) "h" +string(17) "/usr/include/arpa" +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(1) "h" +string(6) "inet.h" +string(17) "/usr/include/arpa" +string(6) "inet.h" +string(17) "/usr/include/arpa" +string(17) "/usr/include/arpa" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/pclose_variation1.phpt b/ext/standard/tests/file/pclose_variation1.phpt new file mode 100644 index 000000000..38c7f09a1 --- /dev/null +++ b/ext/standard/tests/file/pclose_variation1.phpt @@ -0,0 +1,231 @@ +--TEST-- +Test pclose() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for fp + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( pclose($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing pclose() : usage variation *** + +--int 0-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--int 1-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--float .5-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--empty array-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--associative array-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--string DQ-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--string SQ-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--heredoc-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) + +--unset var-- +Error: 2 - pclose(): supplied argument is not a valid stream resource, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/popen_pclose_error-sunos.phpt b/ext/standard/tests/file/popen_pclose_error-sunos.phpt index d2de737cf..b63dbeb7e 100644 --- a/ext/standard/tests/file/popen_pclose_error-sunos.phpt +++ b/ext/standard/tests/file/popen_pclose_error-sunos.phpt @@ -40,8 +40,8 @@ NULL Warning: Wrong parameter count for popen() in %s on line %d NULL -resource(%d) of type (stream) sh: abc.txt: not found +resource(%d) of type (stream) Warning: Wrong parameter count for pclose() in %s on line %d NULL diff --git a/ext/standard/tests/file/proc_open01.phpt b/ext/standard/tests/file/proc_open01.phpt index 2c211f616..3c64908eb 100644 --- a/ext/standard/tests/file/proc_open01.phpt +++ b/ext/standard/tests/file/proc_open01.phpt @@ -9,7 +9,7 @@ if ($php === false) { die("no php executable defined"); } $proc = proc_open( - $php, + "$php -n", array(0 => array('pipe', 'r'), 1 => array('pipe', 'w')), $pipes ); diff --git a/ext/standard/tests/file/readfile_error.phpt b/ext/standard/tests/file/readfile_error.phpt index d92f9bb03..bb6ee8c98 100644 --- a/ext/standard/tests/file/readfile_error.phpt +++ b/ext/standard/tests/file/readfile_error.phpt @@ -38,8 +38,14 @@ Warning: readfile() expects at most 3 parameters, 4 given in %s on line %d bool(false) -- Testing readfile() with invalid arguments -- + +Warning: readfile(): Filename cannot be empty in %s on line %d bool(false) + +Warning: readfile(): Filename cannot be empty in %s on line %d bool(false) + +Warning: readfile(): Filename cannot be empty in %s on line %d bool(false) Warning: readfile() expects parameter 3 to be resource, string given in %s on line %d @@ -50,6 +56,6 @@ bool(false) -- Testing readfile() with non-existent file -- -Warning: readfile(%s/non_existent_file.tmp): failed to open stream: %s in %s on line %d +Warning: readfile(%s/non_existent_file.tmp): failed to open stream: No such file or directory in %s on line %d bool(false) Done diff --git a/ext/standard/tests/file/readfile_variation10-win32.phpt b/ext/standard/tests/file/readfile_variation10-win32.phpt new file mode 100644 index 000000000..d4cad6c1e --- /dev/null +++ b/ext/standard/tests/file/readfile_variation10-win32.phpt @@ -0,0 +1,87 @@ +--TEST-- +Test readfile() function : variation - various invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + -1, + "TRUE" => TRUE, + "FALSE" => FALSE, + "NULL" => NULL, + "\"\"" => "", + "\" \"" => " ", + "\\0" => "\0", + "array()" => array(), + + /* prefix with path separator of a non existing directory*/ + "/no/such/file/dir" => "/no/such/file/dir", + "php/php"=> "php/php" + +); + +foreach($names_arr as $key => $value) { + echo "\n-- Filename: $key --\n"; + readfile($value); +}; + +?> +===Done=== +--EXPECTF-- +*** Testing readfile() : variation *** + +-- Filename: -1 -- + +Warning: readfile(-1): failed to open stream: No such file or directory in %s on line %d + +-- Filename: TRUE -- + +Warning: readfile(1): failed to open stream: No such file or directory in %s on line %d + +-- Filename: FALSE -- + +Warning: readfile(): Filename cannot be empty in %s on line %d + +-- Filename: NULL -- + +Warning: readfile(): Filename cannot be empty in %s on line %d + +-- Filename: "" -- + +Warning: readfile(): Filename cannot be empty in %s on line %d + +-- Filename: " " -- + +Warning: readfile( ): failed to open stream: Permission denied in %s on line %d + +-- Filename: \0 -- + +Warning: readfile(): Filename cannot be empty in %s on line %d + +-- Filename: array() -- + +Warning: readfile() expects parameter 1 to be string, array given in %s on line %d + +-- Filename: /no/such/file/dir -- + +Warning: readfile(/no/such/file/dir): failed to open stream: No such file or directory in %s on line %d + +-- Filename: php/php -- + +Warning: readfile(php/php): failed to open stream: No such file or directory in %s on line %d +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/file/readfile_variation10.phpt b/ext/standard/tests/file/readfile_variation10.phpt new file mode 100644 index 000000000..7072830da Binary files /dev/null and b/ext/standard/tests/file/readfile_variation10.phpt differ diff --git a/ext/standard/tests/file/readfile_variation4.phpt b/ext/standard/tests/file/readfile_variation4.phpt new file mode 100644 index 000000000..94b3326b5 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation4.phpt @@ -0,0 +1,251 @@ +--TEST-- +Test readfile() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // file resource + 'file resource' => $fileRes, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $h = readfile($filename, $use_include_path, $value); + if ($h == false) { + echo "file not read\n"; + } + else { + echo "\n"; + } +}; + +unlink($filename); +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing readfile() : usage variation *** + +--int 0-- +Error: 2 - readfile() expects parameter 3 to be resource, integer given, %s(%d) +file not read + +--int 1-- +Error: 2 - readfile() expects parameter 3 to be resource, integer given, %s(%d) +file not read + +--int 12345-- +Error: 2 - readfile() expects parameter 3 to be resource, integer given, %s(%d) +file not read + +--int -12345-- +Error: 2 - readfile() expects parameter 3 to be resource, integer given, %s(%d) +file not read + +--float 10.5-- +Error: 2 - readfile() expects parameter 3 to be resource, double given, %s(%d) +file not read + +--float -10.5-- +Error: 2 - readfile() expects parameter 3 to be resource, double given, %s(%d) +file not read + +--float 12.3456789000e10-- +Error: 2 - readfile() expects parameter 3 to be resource, double given, %s(%d) +file not read + +--float -12.3456789000e10-- +Error: 2 - readfile() expects parameter 3 to be resource, double given, %s(%d) +file not read + +--float .5-- +Error: 2 - readfile() expects parameter 3 to be resource, double given, %s(%d) +file not read + +--empty array-- +Error: 2 - readfile() expects parameter 3 to be resource, array given, %s(%d) +file not read + +--int indexed array-- +Error: 2 - readfile() expects parameter 3 to be resource, array given, %s(%d) +file not read + +--associative array-- +Error: 2 - readfile() expects parameter 3 to be resource, array given, %s(%d) +file not read + +--nested arrays-- +Error: 2 - readfile() expects parameter 3 to be resource, array given, %s(%d) +file not read + +--uppercase NULL-- +testing readfile + +--lowercase null-- +testing readfile + +--lowercase true-- +Error: 2 - readfile() expects parameter 3 to be resource, boolean given, %s(%d) +file not read + +--lowercase false-- +Error: 2 - readfile() expects parameter 3 to be resource, boolean given, %s(%d) +file not read + +--uppercase TRUE-- +Error: 2 - readfile() expects parameter 3 to be resource, boolean given, %s(%d) +file not read + +--uppercase FALSE-- +Error: 2 - readfile() expects parameter 3 to be resource, boolean given, %s(%d) +file not read + +--empty string DQ-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--empty string SQ-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--string DQ-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--string SQ-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--mixed case string-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--heredoc-- +Error: 2 - readfile() expects parameter 3 to be resource, string given, %s(%d) +file not read + +--instance of classWithToString-- +Error: 2 - readfile() expects parameter 3 to be resource, object given, %s(%d) +file not read + +--instance of classWithoutToString-- +Error: 2 - readfile() expects parameter 3 to be resource, object given, %s(%d) +file not read + +--undefined var-- +testing readfile + +--unset var-- +testing readfile + +--file resource-- +Error: 2 - readfile(): supplied resource is not a valid Stream-Context resource, %s(%d) +testing readfile +===DONE=== diff --git a/ext/standard/tests/file/readfile_variation5.phpt b/ext/standard/tests/file/readfile_variation5.phpt new file mode 100644 index 000000000..21856f813 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation5.phpt @@ -0,0 +1,221 @@ +--TEST-- +Test readfile() function : usage variation +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for use_include_path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = readfile($filename, $value); + if ($res == false) { + echo "File not read\n"; + } + else { + echo "\n"; + } +}; + +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing readfile() : usage variation *** + +--int 0-- +testing readfile + +--int 1-- +testing readfile + +--int 12345-- +testing readfile + +--int -12345-- +testing readfile + +--float 10.5-- +testing readfile + +--float -10.5-- +testing readfile + +--float 12.3456789000e10-- +testing readfile + +--float -12.3456789000e10-- +testing readfile + +--float .5-- +testing readfile + +--empty array-- +Error: 2 - readfile() expects parameter 2 to be boolean, array given, %s(%d) +File not read + +--int indexed array-- +Error: 2 - readfile() expects parameter 2 to be boolean, array given, %s(%d) +File not read + +--associative array-- +Error: 2 - readfile() expects parameter 2 to be boolean, array given, %s(%d) +File not read + +--nested arrays-- +Error: 2 - readfile() expects parameter 2 to be boolean, array given, %s(%d) +File not read + +--uppercase NULL-- +testing readfile + +--lowercase null-- +testing readfile + +--lowercase true-- +testing readfile + +--lowercase false-- +testing readfile + +--uppercase TRUE-- +testing readfile + +--uppercase FALSE-- +testing readfile + +--empty string DQ-- +testing readfile + +--empty string SQ-- +testing readfile + +--string DQ-- +testing readfile + +--string SQ-- +testing readfile + +--mixed case string-- +testing readfile + +--heredoc-- +testing readfile + +--instance of classWithToString-- +Error: 2 - readfile() expects parameter 2 to be boolean, object given, %s(%d) +File not read + +--instance of classWithoutToString-- +Error: 2 - readfile() expects parameter 2 to be boolean, object given, %s(%d) +File not read + +--undefined var-- +testing readfile + +--unset var-- +testing readfile +===DONE=== diff --git a/ext/standard/tests/file/readfile_variation6.phpt b/ext/standard/tests/file/readfile_variation6.phpt new file mode 100644 index 000000000..02e708220 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation6.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test readfile() function : variation - test include path +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing readfile() : variation *** +File in include path +===DONE=== diff --git a/ext/standard/tests/file/readfile_variation7.phpt b/ext/standard/tests/file/readfile_variation7.phpt new file mode 100644 index 000000000..d26f52f49 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation7.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test readfile() function : variation +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing readfile() : variation *** +File in script location +===DONE=== diff --git a/ext/standard/tests/file/readfile_variation8-win32.phpt b/ext/standard/tests/file/readfile_variation8-win32.phpt new file mode 100644 index 000000000..a66af5d25 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation8-win32.phpt @@ -0,0 +1,109 @@ +--TEST-- +Test readfile() function : variation +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing readfile() : variation *** + +-- %s\readfileVar8\readfileVar8Sub\ -- +The File Contents +-- %s\readfileVar8\readfileVar8Sub\..\readfileVar8Sub -- +The File Contents +-- %s\readfileVar8\readfileVar8Sub\\..\.\readfileVar8Sub -- +The File Contents +-- %s\readfileVar8\readfileVar8Sub\..\..\readfileVar8\.\readfileVar8Sub -- +The File Contents +-- %s\readfileVar8\readfileVar8Sub\..\\\readfileVar8Sub\\..\\..\readfileVar8Sub -- + +Warning: readfile(%s\readfileVar8\readfileVar8Sub\..\\\readfileVar8Sub\\..\\..\readfileVar8Sub\fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +-- %s\readfileVar8\readfileVar8Sub\BADDIR -- + +Warning: readfile(%s\readfileVar8\readfileVar8Sub\BADDIR\fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +-- readfileVar8\readfileVar8Sub -- +The File Contents +-- readfileVar8\\readfileVar8Sub -- +The File Contents +-- readfileVar8\\\readfileVar8Sub -- +The File Contents +-- .\readfileVar8\..\readfileVar8\readfileVar8Sub -- +The File Contents +-- BADDIR -- + +Warning: readfile(BADDIR\fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +-- /%s/readfileVar8/readfileVar8Sub -- +The File Contents +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/readfile_variation9.phpt b/ext/standard/tests/file/readfile_variation9.phpt new file mode 100644 index 000000000..c802f4018 --- /dev/null +++ b/ext/standard/tests/file/readfile_variation9.phpt @@ -0,0 +1,99 @@ +--TEST-- +Test readfile() function : variation - variable types of path +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing readfile() : variation *** + +-- Iteration 1 -- +The File Contents +-- Iteration 2 -- +The File Contents +-- Iteration 3 -- +The File Contents +-- Iteration 4 -- +The File Contents +-- Iteration 5 -- + +Warning: readfile(%sreadfileVar8Sub/..///readfileVar8Sub//..//../readfileVar8Sub/fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +-- Iteration 6 -- + +Warning: readfile(%sreadfileVar8Sub/BADDIR/fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +-- Iteration 7 -- +The File Contents +-- Iteration 8 -- +The File Contents +-- Iteration 9 -- +The File Contents +-- Iteration 10 -- +The File Contents +-- Iteration 11 -- + +Warning: readfile(BADDIR/fileToRead.tmp): failed to open stream: No such file or directory in %s on line %d + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/readlink_realpath_basic1.phpt b/ext/standard/tests/file/readlink_realpath_basic1.phpt index e2a076c94..99195e2b2 100644 --- a/ext/standard/tests/file/readlink_realpath_basic1.phpt +++ b/ext/standard/tests/file/readlink_realpath_basic1.phpt @@ -39,9 +39,6 @@ $linknames = array ( "$file_path/readlink_realpath_basic1/home/test/readlink_realpath_basic1_link.tmp", "$file_path/readlink_realpath_basic1//home/test//../test/./readlink_realpath_basic1_link.tmp", - // checking for binary safe - b"$file_path/readlink_realpath_basic1/home/readlink_realpath_basic1_link.tmp", - /* linknames with invalid linkpath */ "$file_path///readlink_realpath_basic1/home//..//././test//readlink_realpath_basic1_link.tmp", "$file_path/readlink_realpath_basic1/home/../home/../test/../readlink_realpath_basic1_link.tmp", @@ -89,28 +86,24 @@ string(%d) "%s/readlink_realpath_basic1/home/test/readlink_realpath_basic1.tmp" string(%d) "%s/readlink_realpath_basic1/home/test/readlink_realpath_basic1.tmp" -- Iteration 4 -- -string(%d) "%s/readlink_realpath_basic1/home/readlink_realpath_basic1.tmp" -string(%d) "%s/readlink_realpath_basic1/home/readlink_realpath_basic1.tmp" - --- Iteration 5 -- Warning: readlink(): No such file or directory in %s on line %d bool(false) bool(false) --- Iteration 6 -- +-- Iteration 5 -- Warning: readlink(): No such file or directory in %s on line %d bool(false) bool(false) --- Iteration 7 -- +-- Iteration 6 -- Warning: readlink(): No such file or directory in %s on line %d bool(false) %s --- Iteration 8 -- +-- Iteration 7 -- Warning: readlink(): %s in %s on line %d bool(false) diff --git a/ext/standard/tests/file/readlink_realpath_basic2.phpt b/ext/standard/tests/file/readlink_realpath_basic2.phpt index 7a9e741ef..91955cd4f 100644 --- a/ext/standard/tests/file/readlink_realpath_basic2.phpt +++ b/ext/standard/tests/file/readlink_realpath_basic2.phpt @@ -34,9 +34,6 @@ $filenames = array ( "$file_path/readlink_realpath_basic2//home/test//../test/./readlink_realpath_basic2.tmp", "$file_path/readlink_realpath_basic2/home//../././readlink_realpath_basic2.tmp", - // checking for binary safe - b"$file_path/readlink_realpath_basic2/home/readlink_realpath_basic2.tmp", - /* filenames with invalid path */ "$file_path///readlink_realpath_basic2/home//..//././test//readlink_realpath_basic2.tmp", "$file_path/readlink_realpath_basic2/home/../home/../test/../readlink_realpath_basic2.tmp", @@ -79,14 +76,11 @@ string(%d) "%s/readlink_realpath_basic2/home/test/readlink_realpath_basic2.tmp" string(%d) "%s/readlink_realpath_basic2/readlink_realpath_basic2.tmp" -- Iteration 5 -- -string(%d) "%s/readlink_realpath_basic2/home/readlink_realpath_basic2.tmp" +bool(false) -- Iteration 6 -- bool(false) -- Iteration 7 -- -bool(false) - --- Iteration 8 -- %s Done diff --git a/ext/standard/tests/file/readlink_variation1.phpt b/ext/standard/tests/file/readlink_variation1.phpt new file mode 100644 index 000000000..86bca81fa --- /dev/null +++ b/ext/standard/tests/file/readlink_variation1.phpt @@ -0,0 +1,77 @@ +--TEST-- +Test readlink() function: usage variations - invalid filenames +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECTF-- +*** Testing Invalid file types *** + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +Warning: readlink(): No such file or directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/realpath_variation2.phpt b/ext/standard/tests/file/realpath_variation2.phpt new file mode 100644 index 000000000..a5031aa7b --- /dev/null +++ b/ext/standard/tests/file/realpath_variation2.phpt @@ -0,0 +1,74 @@ +--TEST-- +Test realpath() function : variation +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing realpath() : variation *** + +--c:\-- +bool(false) + +--c:-- +bool(false) + +--c-- +bool(false) + +--\-- +bool(false) + +--/-- +string(1) "/" + +--c:temp-- +bool(false) + +--c:\/-- +bool(false) + +--/tmp/-- +string(%d) %s/tmp" + +--/tmp/\-- +bool(false) + +--\tmp-- +bool(false) + +--\tmp\-- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/rename_basic.phpt b/ext/standard/tests/file/rename_basic.phpt index 28d3b1988..019d9e454 100755 --- a/ext/standard/tests/file/rename_basic.phpt +++ b/ext/standard/tests/file/rename_basic.phpt @@ -8,38 +8,40 @@ Test rename() function: basic functionality echo "*** Testing rename() on non-existing file ***\n"; $file_path = dirname(__FILE__); +require "$file_path/file.inc"; + $src_name = "$file_path/rename_basic.tmp"; $dest_name = "$file_path/rename_basic_new.tmp"; // create the file $fp = fopen($src_name, "w"); -$s1 = stat($src_name); +$old_stat = stat($src_name); fclose($fp); var_dump( rename($src_name, $dest_name) ); // expecting true var_dump( file_exists($src_name) ); // expecting false var_dump( file_exists($dest_name) ); // expecting true -$s2 = stat("$file_path/rename_basic_new.tmp"); +$new_stat = stat("$file_path/rename_basic_new.tmp"); -// checking statistics of old and renamed file - both should be same -for ($i = 0; $i <= 12; $i++) { - if ($s1[$i] != $s2[$i]) { - echo "rename_basic.tmp and rename_basic_new.tmp stat differ at element $i\n"; - } -} +// checking statistics of old and renamed file - both should be same except ctime +$keys_to_compare = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, + "dev", "ino", "mode", "nlink", "uid", "gid", + "rdev", "size", "atime", "mtime", "blksize", "blocks"); +var_dump( compare_stats($old_stat, $new_stat, $keys_to_compare) ); -echo "Done\n"; ?> +===Done=== --CLEAN-- ---EXPECTF-- +--EXPECT-- *** Testing rename() on non-existing file *** bool(true) bool(false) bool(true) -Done +bool(true) +===Done=== diff --git a/ext/standard/tests/file/rename_variation-win32.phpt b/ext/standard/tests/file/rename_variation-win32.phpt index ae9555760..7d3b1956a 100644 --- a/ext/standard/tests/file/rename_variation-win32.phpt +++ b/ext/standard/tests/file/rename_variation-win32.phpt @@ -71,7 +71,7 @@ bool(true) Warning: rename(%s/rename_variation/rename_variation.tmp/,%s/rename_variation2.tmp): Invalid argument in %s on line %d bool(false) -bool(true) +bool(false) bool(false) Warning: unlink(%s/rename_variation2.tmp): No such file or directory in %s on line %d diff --git a/ext/standard/tests/file/rename_variation10.phpt b/ext/standard/tests/file/rename_variation10.phpt new file mode 100644 index 000000000..fbb109cd2 --- /dev/null +++ b/ext/standard/tests/file/rename_variation10.phpt @@ -0,0 +1,253 @@ +--TEST-- +Test rename() function : usage variation - different types for context +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // file resource + 'file resource' => $fileRes, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + touch($old_name); + $res = rename($old_name, $new_name, $value); + var_dump($res); + if ($res == true) { + unlink($new_name); + } + else { + unlink($old_name); + } +}; + +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing rename() : usage variation *** + +--int 0-- +Error: 2 - rename() expects parameter 3 to be resource, integer given, %s(%d) +bool(false) + +--int 1-- +Error: 2 - rename() expects parameter 3 to be resource, integer given, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - rename() expects parameter 3 to be resource, integer given, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - rename() expects parameter 3 to be resource, integer given, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - rename() expects parameter 3 to be resource, double given, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - rename() expects parameter 3 to be resource, double given, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - rename() expects parameter 3 to be resource, double given, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - rename() expects parameter 3 to be resource, double given, %s(%d) +bool(false) + +--float .5-- +Error: 2 - rename() expects parameter 3 to be resource, double given, %s(%d) +bool(false) + +--empty array-- +Error: 2 - rename() expects parameter 3 to be resource, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - rename() expects parameter 3 to be resource, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - rename() expects parameter 3 to be resource, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - rename() expects parameter 3 to be resource, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - rename() expects parameter 3 to be resource, null given, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - rename() expects parameter 3 to be resource, null given, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - rename() expects parameter 3 to be resource, boolean given, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - rename() expects parameter 3 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - rename() expects parameter 3 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - rename() expects parameter 3 to be resource, boolean given, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--string DQ-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--string SQ-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--heredoc-- +Error: 2 - rename() expects parameter 3 to be resource, string given, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - rename() expects parameter 3 to be resource, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - rename() expects parameter 3 to be resource, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - rename() expects parameter 3 to be resource, null given, %s(%d) +bool(false) + +--unset var-- +Error: 2 - rename() expects parameter 3 to be resource, null given, %s(%d) +bool(false) + +--file resource-- +Error: 2 - rename(): supplied resource is not a valid Stream-Context resource, %s(%d) +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/rename_variation11-win32.phpt b/ext/standard/tests/file/rename_variation11-win32.phpt new file mode 100644 index 000000000..d17b0d283 --- /dev/null +++ b/ext/standard/tests/file/rename_variation11-win32.phpt @@ -0,0 +1,128 @@ +--TEST-- +Test rename() function : variation - various relative, absolute paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing rename() with absolute and relative paths *** + +-- Iteration 1 -- +bool(true) +bool(true) + +-- Iteration 2 -- +bool(true) +bool(true) + +-- Iteration 3 -- +bool(true) +bool(true) + +-- Iteration 4 -- +bool(true) +bool(true) + +-- Iteration 5 -- + +Warning: rename(%s\renameVar11\renameVar11Sub\..\\\renameVar11Sub\\..\\..\renameVar11Sub\renameMe.tmp,%s\renameVar11\renameVar11Sub\..\\\renameVar11Sub\\..\\..\renameVar11Sub\IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: rename(%s\renameVar11\renameVar11Sub\BADDIR\renameMe.tmp,%s\renameVar11\renameVar11Sub\BADDIR\IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +bool(true) +bool(true) + +-- Iteration 8 -- +bool(true) +bool(true) + +-- Iteration 9 -- +bool(true) +bool(true) + +-- Iteration 10 -- +bool(true) +bool(true) + +-- Iteration 11 -- + +Warning: rename(BADDIR\renameMe.tmp,BADDIR\IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +-- Iteration 12 -- +bool(true) +bool(true) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/rename_variation12.phpt b/ext/standard/tests/file/rename_variation12.phpt new file mode 100644 index 000000000..11274f03d --- /dev/null +++ b/ext/standard/tests/file/rename_variation12.phpt @@ -0,0 +1,117 @@ +--TEST-- +Test rename() function : variation - various relative, absolute paths +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +*** Testing rename() with absolute and relative paths *** + +-- Iteration 1 -- +bool(true) +bool(true) + +-- Iteration 2 -- +bool(true) +bool(true) + +-- Iteration 3 -- +bool(true) +bool(true) + +-- Iteration 4 -- +bool(true) +bool(true) + +-- Iteration 5 -- + +Warning: rename(%s/renameVar11/renameVar11Sub/..///renameVar11Sub//..//../renameVar11Sub/renameMe.tmp,%s/renameVar11/renameVar11Sub/..///renameVar11Sub//..//../renameVar11Sub/IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +-- Iteration 6 -- + +Warning: rename(%s/renameVar11/renameVar11Sub/BADDIR/renameMe.tmp,%s/renameVar11/renameVar11Sub/BADDIR/IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +-- Iteration 7 -- +bool(true) +bool(true) + +-- Iteration 8 -- +bool(true) +bool(true) + +-- Iteration 9 -- +bool(true) +bool(true) + +-- Iteration 10 -- +bool(true) +bool(true) + +-- Iteration 11 -- + +Warning: rename(BADDIR/renameMe.tmp,BADDIR/IwasRenamed.tmp): No such file or directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/rename_variation13-win32.phpt b/ext/standard/tests/file/rename_variation13-win32.phpt new file mode 100644 index 000000000..1407c01c2 --- /dev/null +++ b/ext/standard/tests/file/rename_variation13-win32.phpt @@ -0,0 +1,139 @@ +--TEST-- +Test rename() function : variation - various invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing rename() with obscure files *** +-- testing '-1' -- +bool(true) + +Warning: rename(-1,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '1' -- +bool(true) + +Warning: rename(1,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing ' ' -- + +Warning: rename(%s/renameVar13/afile.tmp, ): %s in %s on line %d +bool(false) + +Warning: rename( ,%s/renameVar13/afile.tmp): %s in %s on line %d +bool(false) +-- testing '%s' -- + +Warning: rename(%s/renameVar13/afile.tmp,): %s in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): %s in %s on line %d +bool(false) +-- testing 'Array' -- + +Warning: rename() expects parameter 2 to be string, array given in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d + +Warning: rename() expects parameter 1 to be string, array given in %s on line %d +bool(false) +-- testing '/no/such/file/dir' -- + +Warning: rename(%s/renameVar13/afile.tmp,/no/such/file/dir): No such file or directory in %s on line %d +bool(false) + +Warning: rename(/no/such/file/dir,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing 'php/php' -- + +Warning: rename(%s/renameVar13/afile.tmp,php/php): No such file or directory in %s on line %d +bool(false) + +Warning: rename(php/php,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/rename_variation13.phpt b/ext/standard/tests/file/rename_variation13.phpt new file mode 100644 index 000000000..d3082ab38 --- /dev/null +++ b/ext/standard/tests/file/rename_variation13.phpt @@ -0,0 +1,132 @@ +--TEST-- +Test rename() function : variation - various invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing rename() with obscure files *** +-- testing '-1' -- +bool(true) + +Warning: rename(-1,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '1' -- +bool(true) + +Warning: rename(1,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '' -- + +Warning: rename(%s/renameVar13/afile.tmp,): No such file or directory in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing ' ' -- +bool(true) + +Warning: rename( ,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing '%s' -- + +Warning: rename(%s/renameVar13/afile.tmp,): %s in %s on line %d +bool(false) + +Warning: rename(,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing 'Array' -- + +Warning: rename() expects parameter 2 to be string, array given in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d + +Warning: rename() expects parameter 1 to be string, array given in %s on line %d +bool(false) +-- testing '/no/such/file/dir' -- + +Warning: rename(%s/renameVar13/afile.tmp,/no/such/file/dir): No such file or directory in %s on line %d +bool(false) + +Warning: rename(/no/such/file/dir,%s/renameVar13/afile.tmp): No such file or directory in %s on line %d +bool(false) +-- testing 'php/php' -- + +Warning: rename(%s/renameVar13/afile.tmp,php/php): %s directory in %s on line %d +bool(false) + +Warning: rename(php/php,%s/renameVar13/afile.tmp): %s directory in %s on line %d +bool(false) + +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/rmdir_variation1-win32.phpt b/ext/standard/tests/file/rmdir_variation1-win32.phpt new file mode 100644 index 000000000..0732821c5 --- /dev/null +++ b/ext/standard/tests/file/rmdir_variation1-win32.phpt @@ -0,0 +1,127 @@ +--TEST-- +Test rmdir() function : usage variation - invalid filenames +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase false' =>false, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // other + // php outputs Permission Denied, p8 outputs no suck file or dir + 'single space' => ' ', +); + +// loop through each element of the array for dirname + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( rmdir($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing rmdir() : usage variation *** + +--uppercase NULL-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--unset var-- +Error: 2 - rmdir(): No such file or directory, %s(%d) +bool(false) + +--single space-- +Error: 2 - rmdir( ): %s, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/rmdir_variation1.phpt b/ext/standard/tests/file/rmdir_variation1.phpt new file mode 100644 index 000000000..a7a499007 --- /dev/null +++ b/ext/standard/tests/file/rmdir_variation1.phpt @@ -0,0 +1,127 @@ +--TEST-- +Test rmdir() function : usage variation - invalid file names +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase false' =>false, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // other + 'single space' => ' ', +); + +// loop through each element of the array for dirname + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( rmdir($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing rmdir() : usage variation *** + +--uppercase NULL-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--unset var-- +Error: 2 - rmdir(): %s, %s(%d) +bool(false) + +--single space-- +Error: 2 - rmdir( ): %s, %s(%d) +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/rmdir_variation2.phpt b/ext/standard/tests/file/rmdir_variation2.phpt new file mode 100644 index 000000000..2cee44083 --- /dev/null +++ b/ext/standard/tests/file/rmdir_variation2.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test rmdir() function : usage variation - different types for context +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +$fileres = fopen(__FILE__, 'r'); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // non stream context resource + $fileres, +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + @mkdir($dirname); + var_dump( rmdir($dirname, $value) ); +}; + +@rmdir($dirname); +fclose($fileres); +?> +===DONE=== +--EXPECTF-- +*** Testing rmdir() : usage variation *** + +--int 0-- +Error: 2 - rmdir() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int 1-- +Error: 2 - rmdir() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - rmdir() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - rmdir() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - rmdir() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - rmdir() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - rmdir() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - rmdir() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float .5-- +Error: 2 - rmdir() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--empty array-- +Error: 2 - rmdir() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - rmdir() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - rmdir() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - rmdir() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - rmdir() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - rmdir() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - rmdir() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - rmdir() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - rmdir() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - rmdir() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--string DQ-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--string SQ-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--heredoc-- +Error: 2 - rmdir() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - rmdir() expects parameter 2 to be resource, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - rmdir() expects parameter 2 to be resource, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - rmdir() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--unset var-- +Error: 2 - rmdir() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--0-- +Error: 2 - rmdir(): supplied resource is not a valid Stream-Context resource, %s(%d) +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/rmdir_variation3-win32.phpt b/ext/standard/tests/file/rmdir_variation3-win32.phpt new file mode 100644 index 000000000..e6b3eaabb --- /dev/null +++ b/ext/standard/tests/file/rmdir_variation3-win32.phpt @@ -0,0 +1,108 @@ +--TEST-- +Test rmdir() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing rmdir() : variation *** +-- removing rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing .\rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing rmdirVar3.tmp\..\rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing rmdirVar3.tmp\..\BADDIR\aSubDir -- + +Warning: rmdir(rmdirVar3.tmp\..\BADDIR\aSubDir): No such file or directory in %s on line %d +-- removing BADDIR\aSubDir -- + +Warning: rmdir(BADDIR\aSubDir): No such file or directory in %s on line %d +-- removing %s\rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing %s\.\rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing %s\rmdirVar3.tmp\..\rmdirVar3.tmp\aSubDir -- +Directory removed +-- removing %s\BADDIR\aSubDir -- + +Warning: rmdir(%s\BADDIR\aSubDir): No such file or directory in %s on line %d +-- removing rmdirVar3.tmp\aSubDir\ -- +Directory removed +-- removing %s\rmdirVar3.tmp\aSubDir\ -- +Directory removed +-- removing rmdirVar3.tmp\\aSubDir -- +Directory removed +-- removing %s\\rmdirVar3.tmp\\aSubDir -- +Directory removed +-- removing /%s/rmdirVar3.tmp/aSubDir -- +Directory removed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/rmdir_variation3.phpt b/ext/standard/tests/file/rmdir_variation3.phpt new file mode 100644 index 000000000..584800739 --- /dev/null +++ b/ext/standard/tests/file/rmdir_variation3.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test rmdir() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing rmdir() : variation *** +-- removing rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing ./rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing rmdirVar3.tmp/../rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing rmdirVar3.tmp/../BADDIR/aSubDir -- + +Warning: rmdir(rmdirVar3.tmp/../BADDIR/aSubDir): No such file or directory in %s on line %d +-- removing BADDIR/aSubDir -- + +Warning: rmdir(BADDIR/aSubDir): No such file or directory in %s on line %d +-- removing %s/rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing %s/./rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing %s/rmdirVar3.tmp/../rmdirVar3.tmp/aSubDir -- +Directory removed +-- removing %s/BADDIR/aSubDir -- + +Warning: rmdir(%s/BADDIR/aSubDir): No such file or directory in %s on line %d +-- removing rmdirVar3.tmp/aSubDir/ -- +Directory removed +-- removing %s/rmdirVar3.tmp/aSubDir/ -- +Directory removed +-- removing rmdirVar3.tmp//aSubDir -- +Directory removed +-- removing %s//rmdirVar3.tmp//aSubDir -- +Directory removed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt index b2ba0c889..52dd4b534 100644 --- a/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt +++ b/ext/standard/tests/file/symlink_link_linkinfo_is_link_error2.phpt @@ -42,6 +42,7 @@ var_dump( link($filename, $linkname, false) ); //invalid arguments var_dump( link(NULL, $linkname) ); // NULL as filename var_dump( link('', $linkname) ); // empty string as filename +var_dump( link(' ', $linkname) ); // space as filename var_dump( link(false, $linkname) ); // boolean false as filename var_dump( link($filename, NULL) ); // NULL as linkname var_dump( link($filename, '') ); // '' as linkname @@ -57,6 +58,7 @@ var_dump( is_link($linkname, "/") ); //invalid arguments var_dump( is_link(NULL) ); // NULL as linkname var_dump( is_link('') ); // empty string as linkname +var_dump( is_link(' ') ); // space as linkname var_dump( is_link(false) ); // boolean false as linkname var_dump( is_link($filename) ); // file given to is_link @@ -93,6 +95,9 @@ bool(false) Warning: link(): %s in %s on line %d bool(false) +Warning: link(): %s in %s on line %d +bool(false) + *** Testing is_link() for error conditions *** Warning: Wrong parameter count for is_link() in %s on line %d @@ -104,4 +109,5 @@ bool(false) bool(false) bool(false) bool(false) +bool(false) Done diff --git a/ext/standard/tests/file/symlink_to_symlink.phpt b/ext/standard/tests/file/symlink_to_symlink.phpt new file mode 100644 index 000000000..c672a5ab3 --- /dev/null +++ b/ext/standard/tests/file/symlink_to_symlink.phpt @@ -0,0 +1,50 @@ +--TEST-- +symlink() using a relative path, and symlink() to a symlink +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +string(%d) "symlink_to_symlink.php_file" +string(%d) "symlink_to_symlink.php_link1" +string(%d) "symlink_to_symlink.php_nonexistant" +string(%d) "%s/symlink_to_symlink.php_file" +string(%d) "%s/symlink_to_symlink.php_link4" diff --git a/ext/standard/tests/file/tempnam_variation1-win32.phpt b/ext/standard/tests/file/tempnam_variation1-win32.phpt index 907595033..a3dd7e9d6 100644 --- a/ext/standard/tests/file/tempnam_variation1-win32.phpt +++ b/ext/standard/tests/file/tempnam_variation1-win32.phpt @@ -3,7 +3,7 @@ Test tempnam() function: usage variations - creating files --SKIPIF-- --FILE-- "; + $file_dir = dirname($files[$i]); + + if (realpath($file_dir) == realpath(sys_get_temp_dir()) || realpath($file_dir."\\") == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else if (realpath($file_dir) == realpath($file_path) || realpath($file_dir."\\") == realpath($file_path)) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + clearstatcache(); } else { print("- File is not created -"); @@ -39,39 +53,51 @@ for($i=1; $i<=10; $i++) { for($i=1; $i<=10; $i++) { unlink($files[$i]); } +rmdir($file_path); + echo "*** Done ***\n"; ?> --EXPECTF-- *** Testing tempnam() in creation of unique files *** -- Iteration 1 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 7 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 8 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 9 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified -- Iteration 10 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => directory specified *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation1.phpt b/ext/standard/tests/file/tempnam_variation1.phpt index c94a65ba2..0745f5397 100644 --- a/ext/standard/tests/file/tempnam_variation1.phpt +++ b/ext/standard/tests/file/tempnam_variation1.phpt @@ -13,7 +13,8 @@ if(substr(PHP_OS, 0, 3) == "WIN") /* Creating number of unique files by passing a file name as prefix */ -$file_path = dirname(__FILE__); +$file_path = dirname(__FILE__)."/tempnamVar1"; +mkdir($file_path); echo "*** Testing tempnam() in creation of unique files ***\n"; for($i=1; $i<=10; $i++) { @@ -34,6 +35,19 @@ for($i=1; $i<=10; $i++) { echo "File inode is => "; print_r( fileinode($files[$i]) ); //checking inodes echo "\n"; + + echo "File created in => "; + $file_dir = dirname($files[$i]); + + if ($file_dir == sys_get_temp_dir()) { + echo "temp dir\n"; + } + else if ($file_dir == $file_path) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } clearstatcache(); } else { @@ -44,48 +58,59 @@ for($i=1; $i<=10; $i++) { unlink($files[$i]); } +rmdir($file_path); echo "*** Done ***\n"; ?> --EXPECTF-- *** Testing tempnam() in creation of unique files *** -- Iteration 1 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 7 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 8 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 9 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified -- Iteration 10 -- -File name is => %s +File name is => %s%etempnam_variation1.tmp%s File permissions are => 100600 File inode is => %d +File created in => directory specified *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation2-win32.phpt b/ext/standard/tests/file/tempnam_variation2-win32.phpt index a9fe4fd2d..4224966da 100644 --- a/ext/standard/tests/file/tempnam_variation2-win32.phpt +++ b/ext/standard/tests/file/tempnam_variation2-win32.phpt @@ -1,9 +1,9 @@ --TEST-- -Test tempnam() function: usage variations - relative paths +Test tempnam() function: usage variations - various absolute and relative paths --SKIPIF-- --FILE-- "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + $dir_req = $dir_paths[$i]; + + if (realpath($file_dir) == realpath(sys_get_temp_dir()) || realpath($file_dir."\\") == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else if (realpath($file_dir) == realpath($dir_req) || realpath($file_dir."\\") == realpath($dir_req)) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + + } - else + else { echo "-- File is not created --"; - unlink($file_name); + } + + unlink($file_name); } chdir($old_dir_path); @@ -60,38 +88,76 @@ rmdir($dir_name); echo "\n*** Done ***\n"; ?> --EXPECTF-- -*** Testing tempnam() with relative paths *** +*** Testing tempnam() with absolute and relative paths *** -- Iteration 1 -- -File name is => %s +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s\tempnam_variation2\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s\tempnam_variation2\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s\tempnam_variation2\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s\tempnam_variation2\t%s File permissions are => 100666 +File created in => directory specified -- Iteration 7 -- -File name is => %s +File name is => %s\t%s File permissions are => 100666 +File created in => temp dir -- Iteration 8 -- -File name is => %s +File name is => %s\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 9 -- +File name is => %s\t%s +File permissions are => 100666 +File created in => temp dir + +-- Iteration 10 -- +File name is => %s\t%s +File permissions are => 100666 +File created in => temp dir + +-- Iteration 11 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 12 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 13 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 14 -- +File name is => %s\t%s File permissions are => 100666 +File created in => temp dir -*** Done *** +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/tempnam_variation2.phpt b/ext/standard/tests/file/tempnam_variation2.phpt index 6d85e2562..b7e5cdc05 100644 --- a/ext/standard/tests/file/tempnam_variation2.phpt +++ b/ext/standard/tests/file/tempnam_variation2.phpt @@ -1,5 +1,5 @@ --TEST-- -Test tempnam() function: usage variations - relative paths +Test tempnam() function: usage variations - various absolute and relative paths --SKIPIF-- "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + $dir_req = $dir_paths[$i]; + + if (realpath($file_dir) == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else if ($file_dir == realpath($dir_req)) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + + } - else + else { echo "-- File is not created --"; - unlink($file_name); + } + + unlink($file_name); } chdir($old_dir_path); @@ -60,38 +88,76 @@ rmdir($dir_name); echo "\n*** Done ***\n"; ?> --EXPECTF-- -*** Testing tempnam() with relative paths *** +*** Testing tempnam() with absolute and relative paths *** -- Iteration 1 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2_sub/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2_sub/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s/tempnam_variation2/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => directory specified -- Iteration 7 -- -File name is => %s +File name is => %s/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 8 -- -File name is => %s +File name is => %s/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => directory specified + +-- Iteration 9 -- +File name is => %s/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => temp dir + +-- Iteration 10 -- +File name is => %s/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => temp dir + +-- Iteration 11 -- +File name is => %s/tempnam_variation2/tempnam_variation2_sub/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => directory specified + +-- Iteration 12 -- +File name is => %s/tempnam_variation2/tempnam_variation2_sub/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => directory specified + +-- Iteration 13 -- +File name is => %s/tempnam_variation2/tempnam_variation2_sub/tempnam_variation2.tmp%s +File permissions are => 100600 +File created in => directory specified + +-- Iteration 14 -- +File name is => %s/tempnam_variation2.tmp%s File permissions are => 100600 +File created in => temp dir -*** Done *** +*** Done *** \ No newline at end of file diff --git a/ext/standard/tests/file/tempnam_variation3-win32.phpt b/ext/standard/tests/file/tempnam_variation3-win32.phpt index 9dab92271..da0133af9 100644 --- a/ext/standard/tests/file/tempnam_variation3-win32.phpt +++ b/ext/standard/tests/file/tempnam_variation3-win32.phpt @@ -1,9 +1,9 @@ --TEST-- -Test tempnam() function: usage variations - invalid/non-existing file +Test tempnam() function: usage variations - obscure prefixes --SKIPIF-- --FILE-- "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + if (realpath($file_dir) == realpath(sys_get_temp_dir()) || realpath($file_dir."\\") == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else if (realpath($file_dir) == realpath($file_path) || realpath($file_dir."\\") == realpath($file_path)) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } } - else + else { echo "-- File is not created --\n"; + } unlink($file_name); } +rmdir($file_path); echo "\n*** Done ***\n"; ?> --EXPECTF-- -*** Testing tempnam() with invalid/non-existing file names *** +*** Testing tempnam() with obscure prefixes *** +-- Iteration 0 -- +File name is => %s\%s +File permissions are => 100666 +File created in => directory specified -- Iteration 1 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s\%s File permissions are => 100666 +File created in => directory specified -- Iteration 7 -- Notice: Array to string conversion in %s on line %d -File name is => %s +File name is => %s\Ar%s File permissions are => 100666 +File created in => directory specified -- Iteration 8 -- -File name is => %s +File name is => %s\di%s File permissions are => 100666 +File created in => directory specified -- Iteration 9 -- -File name is => %s +File name is => %s\ph%s File permissions are => 100666 +File created in => directory specified *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation3.phpt b/ext/standard/tests/file/tempnam_variation3.phpt index 08748bdc5..e350849fd 100644 --- a/ext/standard/tests/file/tempnam_variation3.phpt +++ b/ext/standard/tests/file/tempnam_variation3.phpt @@ -1,5 +1,5 @@ --TEST-- -Test tempnam() function: usage variations - invalid/non-existing file +Test tempnam() function: usage variations - obscure prefixes --SKIPIF-- "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + + if ($file_dir == sys_get_temp_dir()) { + echo "temp dir\n"; + } + else if ($file_dir == $file_path) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + } - else + else { echo "-- File is not created --\n"; + } unlink($file_name); } +rmdir($file_path); echo "\n*** Done ***\n"; ?> --EXPECTF-- -*** Testing tempnam() with invalid/non-existing file names *** +*** Testing tempnam() with obscure prefixes *** +-- Iteration 0 -- +File name is => %s/%s +File permissions are => 100600 +File created in => directory specified -- Iteration 1 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 4 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 5 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 6 -- -File name is => %s +File name is => %s/%s File permissions are => 100600 +File created in => directory specified -- Iteration 7 -- Notice: Array to string conversion in %s on line %d -File name is => %s +File name is => %s/Array%s File permissions are => 100600 +File created in => directory specified -- Iteration 8 -- -File name is => %s +File name is => %s/dir%s File permissions are => 100600 +File created in => directory specified -- Iteration 9 -- -File name is => %s +File name is => %s/php%s File permissions are => 100600 +File created in => directory specified *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation4.phpt b/ext/standard/tests/file/tempnam_variation4.phpt index 491eae734..5525b584a 100644 --- a/ext/standard/tests/file/tempnam_variation4.phpt +++ b/ext/standard/tests/file/tempnam_variation4.phpt @@ -20,22 +20,34 @@ if (substr(PHP_OS, 0, 3) == 'WIN') { echo "*** Testing tempnam() with dir of permissions from 0000 to 0777 ***\n"; $file_path = dirname(__FILE__); $dir_name = $file_path."/tempnam_variation4"; +$prefix = "tempnamVar4."; + mkdir($dir_name); -for($mode = 0000; $mode<=0777; $mode++) { +for($mode = 0000; $mode <= 0777; $mode++) { echo "-- dir perms "; printf("%o", $mode); echo " --\n"; chmod($dir_name, $mode); - $file_name = tempnam($dir_name, "tempnam_variation4.tmp"); + $file_name = tempnam($dir_name, $prefix); if(file_exists($file_name) ) { - print($file_name); - echo "\n"; + if (realpath(dirname($file_name)) == realpath(sys_get_temp_dir())) { + $msg = " created in temp dir "; + } + else if (dirname($file_name) == $dir_name) { + $msg = " created in requested dir"; + } + else { + $msg = " created in unexpected dir"; + } + + echo $msg."\n"; + unlink($file_name); + } + else { + print("FAILED: File is not created\n"); } - else - print("-- File is not created --"); - unlink($file_name); } rmdir($dir_name); @@ -45,1027 +57,1027 @@ echo "*** Done ***\n"; --EXPECTF-- *** Testing tempnam() with dir of permissions from 0000 to 0777 *** -- dir perms 0 -- -%s + created in temp dir -- dir perms 1 -- -%s + created in temp dir -- dir perms 2 -- -%s + created in temp dir -- dir perms 3 -- -%s + created in temp dir -- dir perms 4 -- -%s + created in temp dir -- dir perms 5 -- -%s + created in temp dir -- dir perms 6 -- -%s + created in temp dir -- dir perms 7 -- -%s + created in temp dir -- dir perms 10 -- -%s + created in temp dir -- dir perms 11 -- -%s + created in temp dir -- dir perms 12 -- -%s + created in temp dir -- dir perms 13 -- -%s + created in temp dir -- dir perms 14 -- -%s + created in temp dir -- dir perms 15 -- -%s + created in temp dir -- dir perms 16 -- -%s + created in temp dir -- dir perms 17 -- -%s + created in temp dir -- dir perms 20 -- -%s + created in temp dir -- dir perms 21 -- -%s + created in temp dir -- dir perms 22 -- -%s + created in temp dir -- dir perms 23 -- -%s + created in temp dir -- dir perms 24 -- -%s + created in temp dir -- dir perms 25 -- -%s + created in temp dir -- dir perms 26 -- -%s + created in temp dir -- dir perms 27 -- -%s + created in temp dir -- dir perms 30 -- -%s + created in temp dir -- dir perms 31 -- -%s + created in temp dir -- dir perms 32 -- -%s + created in temp dir -- dir perms 33 -- -%s + created in temp dir -- dir perms 34 -- -%s + created in temp dir -- dir perms 35 -- -%s + created in temp dir -- dir perms 36 -- -%s + created in temp dir -- dir perms 37 -- -%s + created in temp dir -- dir perms 40 -- -%s + created in temp dir -- dir perms 41 -- -%s + created in temp dir -- dir perms 42 -- -%s + created in temp dir -- dir perms 43 -- -%s + created in temp dir -- dir perms 44 -- -%s + created in temp dir -- dir perms 45 -- -%s + created in temp dir -- dir perms 46 -- -%s + created in temp dir -- dir perms 47 -- -%s + created in temp dir -- dir perms 50 -- -%s + created in temp dir -- dir perms 51 -- -%s + created in temp dir -- dir perms 52 -- -%s + created in temp dir -- dir perms 53 -- -%s + created in temp dir -- dir perms 54 -- -%s + created in temp dir -- dir perms 55 -- -%s + created in temp dir -- dir perms 56 -- -%s + created in temp dir -- dir perms 57 -- -%s + created in temp dir -- dir perms 60 -- -%s + created in temp dir -- dir perms 61 -- -%s + created in temp dir -- dir perms 62 -- -%s + created in temp dir -- dir perms 63 -- -%s + created in temp dir -- dir perms 64 -- -%s + created in temp dir -- dir perms 65 -- -%s + created in temp dir -- dir perms 66 -- -%s + created in temp dir -- dir perms 67 -- -%s + created in temp dir -- dir perms 70 -- -%s + created in temp dir -- dir perms 71 -- -%s + created in temp dir -- dir perms 72 -- -%s + created in temp dir -- dir perms 73 -- -%s + created in temp dir -- dir perms 74 -- -%s + created in temp dir -- dir perms 75 -- -%s + created in temp dir -- dir perms 76 -- -%s + created in temp dir -- dir perms 77 -- -%s + created in temp dir -- dir perms 100 -- -%s + created in temp dir -- dir perms 101 -- -%s + created in temp dir -- dir perms 102 -- -%s + created in temp dir -- dir perms 103 -- -%s + created in temp dir -- dir perms 104 -- -%s + created in temp dir -- dir perms 105 -- -%s + created in temp dir -- dir perms 106 -- -%s + created in temp dir -- dir perms 107 -- -%s + created in temp dir -- dir perms 110 -- -%s + created in temp dir -- dir perms 111 -- -%s + created in temp dir -- dir perms 112 -- -%s + created in temp dir -- dir perms 113 -- -%s + created in temp dir -- dir perms 114 -- -%s + created in temp dir -- dir perms 115 -- -%s + created in temp dir -- dir perms 116 -- -%s + created in temp dir -- dir perms 117 -- -%s + created in temp dir -- dir perms 120 -- -%s + created in temp dir -- dir perms 121 -- -%s + created in temp dir -- dir perms 122 -- -%s + created in temp dir -- dir perms 123 -- -%s + created in temp dir -- dir perms 124 -- -%s + created in temp dir -- dir perms 125 -- -%s + created in temp dir -- dir perms 126 -- -%s + created in temp dir -- dir perms 127 -- -%s + created in temp dir -- dir perms 130 -- -%s + created in temp dir -- dir perms 131 -- -%s + created in temp dir -- dir perms 132 -- -%s + created in temp dir -- dir perms 133 -- -%s + created in temp dir -- dir perms 134 -- -%s + created in temp dir -- dir perms 135 -- -%s + created in temp dir -- dir perms 136 -- -%s + created in temp dir -- dir perms 137 -- -%s + created in temp dir -- dir perms 140 -- -%s + created in temp dir -- dir perms 141 -- -%s + created in temp dir -- dir perms 142 -- -%s + created in temp dir -- dir perms 143 -- -%s + created in temp dir -- dir perms 144 -- -%s + created in temp dir -- dir perms 145 -- -%s + created in temp dir -- dir perms 146 -- -%s + created in temp dir -- dir perms 147 -- -%s + created in temp dir -- dir perms 150 -- -%s + created in temp dir -- dir perms 151 -- -%s + created in temp dir -- dir perms 152 -- -%s + created in temp dir -- dir perms 153 -- -%s + created in temp dir -- dir perms 154 -- -%s + created in temp dir -- dir perms 155 -- -%s + created in temp dir -- dir perms 156 -- -%s + created in temp dir -- dir perms 157 -- -%s + created in temp dir -- dir perms 160 -- -%s + created in temp dir -- dir perms 161 -- -%s + created in temp dir -- dir perms 162 -- -%s + created in temp dir -- dir perms 163 -- -%s + created in temp dir -- dir perms 164 -- -%s + created in temp dir -- dir perms 165 -- -%s + created in temp dir -- dir perms 166 -- -%s + created in temp dir -- dir perms 167 -- -%s + created in temp dir -- dir perms 170 -- -%s + created in temp dir -- dir perms 171 -- -%s + created in temp dir -- dir perms 172 -- -%s + created in temp dir -- dir perms 173 -- -%s + created in temp dir -- dir perms 174 -- -%s + created in temp dir -- dir perms 175 -- -%s + created in temp dir -- dir perms 176 -- -%s + created in temp dir -- dir perms 177 -- -%s + created in temp dir -- dir perms 200 -- -%s + created in temp dir -- dir perms 201 -- -%s + created in temp dir -- dir perms 202 -- -%s + created in temp dir -- dir perms 203 -- -%s + created in temp dir -- dir perms 204 -- -%s + created in temp dir -- dir perms 205 -- -%s + created in temp dir -- dir perms 206 -- -%s + created in temp dir -- dir perms 207 -- -%s + created in temp dir -- dir perms 210 -- -%s + created in temp dir -- dir perms 211 -- -%s + created in temp dir -- dir perms 212 -- -%s + created in temp dir -- dir perms 213 -- -%s + created in temp dir -- dir perms 214 -- -%s + created in temp dir -- dir perms 215 -- -%s + created in temp dir -- dir perms 216 -- -%s + created in temp dir -- dir perms 217 -- -%s + created in temp dir -- dir perms 220 -- -%s + created in temp dir -- dir perms 221 -- -%s + created in temp dir -- dir perms 222 -- -%s + created in temp dir -- dir perms 223 -- -%s + created in temp dir -- dir perms 224 -- -%s + created in temp dir -- dir perms 225 -- -%s + created in temp dir -- dir perms 226 -- -%s + created in temp dir -- dir perms 227 -- -%s + created in temp dir -- dir perms 230 -- -%s + created in temp dir -- dir perms 231 -- -%s + created in temp dir -- dir perms 232 -- -%s + created in temp dir -- dir perms 233 -- -%s + created in temp dir -- dir perms 234 -- -%s + created in temp dir -- dir perms 235 -- -%s + created in temp dir -- dir perms 236 -- -%s + created in temp dir -- dir perms 237 -- -%s + created in temp dir -- dir perms 240 -- -%s + created in temp dir -- dir perms 241 -- -%s + created in temp dir -- dir perms 242 -- -%s + created in temp dir -- dir perms 243 -- -%s + created in temp dir -- dir perms 244 -- -%s + created in temp dir -- dir perms 245 -- -%s + created in temp dir -- dir perms 246 -- -%s + created in temp dir -- dir perms 247 -- -%s + created in temp dir -- dir perms 250 -- -%s + created in temp dir -- dir perms 251 -- -%s + created in temp dir -- dir perms 252 -- -%s + created in temp dir -- dir perms 253 -- -%s + created in temp dir -- dir perms 254 -- -%s + created in temp dir -- dir perms 255 -- -%s + created in temp dir -- dir perms 256 -- -%s + created in temp dir -- dir perms 257 -- -%s + created in temp dir -- dir perms 260 -- -%s + created in temp dir -- dir perms 261 -- -%s + created in temp dir -- dir perms 262 -- -%s + created in temp dir -- dir perms 263 -- -%s + created in temp dir -- dir perms 264 -- -%s + created in temp dir -- dir perms 265 -- -%s + created in temp dir -- dir perms 266 -- -%s + created in temp dir -- dir perms 267 -- -%s + created in temp dir -- dir perms 270 -- -%s + created in temp dir -- dir perms 271 -- -%s + created in temp dir -- dir perms 272 -- -%s + created in temp dir -- dir perms 273 -- -%s + created in temp dir -- dir perms 274 -- -%s + created in temp dir -- dir perms 275 -- -%s + created in temp dir -- dir perms 276 -- -%s + created in temp dir -- dir perms 277 -- -%s + created in temp dir -- dir perms 300 -- -%s + created in requested dir -- dir perms 301 -- -%s + created in requested dir -- dir perms 302 -- -%s + created in requested dir -- dir perms 303 -- -%s + created in requested dir -- dir perms 304 -- -%s + created in requested dir -- dir perms 305 -- -%s + created in requested dir -- dir perms 306 -- -%s + created in requested dir -- dir perms 307 -- -%s + created in requested dir -- dir perms 310 -- -%s + created in requested dir -- dir perms 311 -- -%s + created in requested dir -- dir perms 312 -- -%s + created in requested dir -- dir perms 313 -- -%s + created in requested dir -- dir perms 314 -- -%s + created in requested dir -- dir perms 315 -- -%s + created in requested dir -- dir perms 316 -- -%s + created in requested dir -- dir perms 317 -- -%s + created in requested dir -- dir perms 320 -- -%s + created in requested dir -- dir perms 321 -- -%s + created in requested dir -- dir perms 322 -- -%s + created in requested dir -- dir perms 323 -- -%s + created in requested dir -- dir perms 324 -- -%s + created in requested dir -- dir perms 325 -- -%s + created in requested dir -- dir perms 326 -- -%s + created in requested dir -- dir perms 327 -- -%s + created in requested dir -- dir perms 330 -- -%s + created in requested dir -- dir perms 331 -- -%s + created in requested dir -- dir perms 332 -- -%s + created in requested dir -- dir perms 333 -- -%s + created in requested dir -- dir perms 334 -- -%s + created in requested dir -- dir perms 335 -- -%s + created in requested dir -- dir perms 336 -- -%s + created in requested dir -- dir perms 337 -- -%s + created in requested dir -- dir perms 340 -- -%s + created in requested dir -- dir perms 341 -- -%s + created in requested dir -- dir perms 342 -- -%s + created in requested dir -- dir perms 343 -- -%s + created in requested dir -- dir perms 344 -- -%s + created in requested dir -- dir perms 345 -- -%s + created in requested dir -- dir perms 346 -- -%s + created in requested dir -- dir perms 347 -- -%s + created in requested dir -- dir perms 350 -- -%s + created in requested dir -- dir perms 351 -- -%s + created in requested dir -- dir perms 352 -- -%s + created in requested dir -- dir perms 353 -- -%s + created in requested dir -- dir perms 354 -- -%s + created in requested dir -- dir perms 355 -- -%s + created in requested dir -- dir perms 356 -- -%s + created in requested dir -- dir perms 357 -- -%s + created in requested dir -- dir perms 360 -- -%s + created in requested dir -- dir perms 361 -- -%s + created in requested dir -- dir perms 362 -- -%s + created in requested dir -- dir perms 363 -- -%s + created in requested dir -- dir perms 364 -- -%s + created in requested dir -- dir perms 365 -- -%s + created in requested dir -- dir perms 366 -- -%s + created in requested dir -- dir perms 367 -- -%s + created in requested dir -- dir perms 370 -- -%s + created in requested dir -- dir perms 371 -- -%s + created in requested dir -- dir perms 372 -- -%s + created in requested dir -- dir perms 373 -- -%s + created in requested dir -- dir perms 374 -- -%s + created in requested dir -- dir perms 375 -- -%s + created in requested dir -- dir perms 376 -- -%s + created in requested dir -- dir perms 377 -- -%s + created in requested dir -- dir perms 400 -- -%s + created in temp dir -- dir perms 401 -- -%s + created in temp dir -- dir perms 402 -- -%s + created in temp dir -- dir perms 403 -- -%s + created in temp dir -- dir perms 404 -- -%s + created in temp dir -- dir perms 405 -- -%s + created in temp dir -- dir perms 406 -- -%s + created in temp dir -- dir perms 407 -- -%s + created in temp dir -- dir perms 410 -- -%s + created in temp dir -- dir perms 411 -- -%s + created in temp dir -- dir perms 412 -- -%s + created in temp dir -- dir perms 413 -- -%s + created in temp dir -- dir perms 414 -- -%s + created in temp dir -- dir perms 415 -- -%s + created in temp dir -- dir perms 416 -- -%s + created in temp dir -- dir perms 417 -- -%s + created in temp dir -- dir perms 420 -- -%s + created in temp dir -- dir perms 421 -- -%s + created in temp dir -- dir perms 422 -- -%s + created in temp dir -- dir perms 423 -- -%s + created in temp dir -- dir perms 424 -- -%s + created in temp dir -- dir perms 425 -- -%s + created in temp dir -- dir perms 426 -- -%s + created in temp dir -- dir perms 427 -- -%s + created in temp dir -- dir perms 430 -- -%s + created in temp dir -- dir perms 431 -- -%s + created in temp dir -- dir perms 432 -- -%s + created in temp dir -- dir perms 433 -- -%s + created in temp dir -- dir perms 434 -- -%s + created in temp dir -- dir perms 435 -- -%s + created in temp dir -- dir perms 436 -- -%s + created in temp dir -- dir perms 437 -- -%s + created in temp dir -- dir perms 440 -- -%s + created in temp dir -- dir perms 441 -- -%s + created in temp dir -- dir perms 442 -- -%s + created in temp dir -- dir perms 443 -- -%s + created in temp dir -- dir perms 444 -- -%s + created in temp dir -- dir perms 445 -- -%s + created in temp dir -- dir perms 446 -- -%s + created in temp dir -- dir perms 447 -- -%s + created in temp dir -- dir perms 450 -- -%s + created in temp dir -- dir perms 451 -- -%s + created in temp dir -- dir perms 452 -- -%s + created in temp dir -- dir perms 453 -- -%s + created in temp dir -- dir perms 454 -- -%s + created in temp dir -- dir perms 455 -- -%s + created in temp dir -- dir perms 456 -- -%s + created in temp dir -- dir perms 457 -- -%s + created in temp dir -- dir perms 460 -- -%s + created in temp dir -- dir perms 461 -- -%s + created in temp dir -- dir perms 462 -- -%s + created in temp dir -- dir perms 463 -- -%s + created in temp dir -- dir perms 464 -- -%s + created in temp dir -- dir perms 465 -- -%s + created in temp dir -- dir perms 466 -- -%s + created in temp dir -- dir perms 467 -- -%s + created in temp dir -- dir perms 470 -- -%s + created in temp dir -- dir perms 471 -- -%s + created in temp dir -- dir perms 472 -- -%s + created in temp dir -- dir perms 473 -- -%s + created in temp dir -- dir perms 474 -- -%s + created in temp dir -- dir perms 475 -- -%s + created in temp dir -- dir perms 476 -- -%s + created in temp dir -- dir perms 477 -- -%s + created in temp dir -- dir perms 500 -- -%s + created in temp dir -- dir perms 501 -- -%s + created in temp dir -- dir perms 502 -- -%s + created in temp dir -- dir perms 503 -- -%s + created in temp dir -- dir perms 504 -- -%s + created in temp dir -- dir perms 505 -- -%s + created in temp dir -- dir perms 506 -- -%s + created in temp dir -- dir perms 507 -- -%s + created in temp dir -- dir perms 510 -- -%s + created in temp dir -- dir perms 511 -- -%s + created in temp dir -- dir perms 512 -- -%s + created in temp dir -- dir perms 513 -- -%s + created in temp dir -- dir perms 514 -- -%s + created in temp dir -- dir perms 515 -- -%s + created in temp dir -- dir perms 516 -- -%s + created in temp dir -- dir perms 517 -- -%s + created in temp dir -- dir perms 520 -- -%s + created in temp dir -- dir perms 521 -- -%s + created in temp dir -- dir perms 522 -- -%s + created in temp dir -- dir perms 523 -- -%s + created in temp dir -- dir perms 524 -- -%s + created in temp dir -- dir perms 525 -- -%s + created in temp dir -- dir perms 526 -- -%s + created in temp dir -- dir perms 527 -- -%s + created in temp dir -- dir perms 530 -- -%s + created in temp dir -- dir perms 531 -- -%s + created in temp dir -- dir perms 532 -- -%s + created in temp dir -- dir perms 533 -- -%s + created in temp dir -- dir perms 534 -- -%s + created in temp dir -- dir perms 535 -- -%s + created in temp dir -- dir perms 536 -- -%s + created in temp dir -- dir perms 537 -- -%s + created in temp dir -- dir perms 540 -- -%s + created in temp dir -- dir perms 541 -- -%s + created in temp dir -- dir perms 542 -- -%s + created in temp dir -- dir perms 543 -- -%s + created in temp dir -- dir perms 544 -- -%s + created in temp dir -- dir perms 545 -- -%s + created in temp dir -- dir perms 546 -- -%s + created in temp dir -- dir perms 547 -- -%s + created in temp dir -- dir perms 550 -- -%s + created in temp dir -- dir perms 551 -- -%s + created in temp dir -- dir perms 552 -- -%s + created in temp dir -- dir perms 553 -- -%s + created in temp dir -- dir perms 554 -- -%s + created in temp dir -- dir perms 555 -- -%s + created in temp dir -- dir perms 556 -- -%s + created in temp dir -- dir perms 557 -- -%s + created in temp dir -- dir perms 560 -- -%s + created in temp dir -- dir perms 561 -- -%s + created in temp dir -- dir perms 562 -- -%s + created in temp dir -- dir perms 563 -- -%s + created in temp dir -- dir perms 564 -- -%s + created in temp dir -- dir perms 565 -- -%s + created in temp dir -- dir perms 566 -- -%s + created in temp dir -- dir perms 567 -- -%s + created in temp dir -- dir perms 570 -- -%s + created in temp dir -- dir perms 571 -- -%s + created in temp dir -- dir perms 572 -- -%s + created in temp dir -- dir perms 573 -- -%s + created in temp dir -- dir perms 574 -- -%s + created in temp dir -- dir perms 575 -- -%s + created in temp dir -- dir perms 576 -- -%s + created in temp dir -- dir perms 577 -- -%s + created in temp dir -- dir perms 600 -- -%s + created in temp dir -- dir perms 601 -- -%s + created in temp dir -- dir perms 602 -- -%s + created in temp dir -- dir perms 603 -- -%s + created in temp dir -- dir perms 604 -- -%s + created in temp dir -- dir perms 605 -- -%s + created in temp dir -- dir perms 606 -- -%s + created in temp dir -- dir perms 607 -- -%s + created in temp dir -- dir perms 610 -- -%s + created in temp dir -- dir perms 611 -- -%s + created in temp dir -- dir perms 612 -- -%s + created in temp dir -- dir perms 613 -- -%s + created in temp dir -- dir perms 614 -- -%s + created in temp dir -- dir perms 615 -- -%s + created in temp dir -- dir perms 616 -- -%s + created in temp dir -- dir perms 617 -- -%s + created in temp dir -- dir perms 620 -- -%s + created in temp dir -- dir perms 621 -- -%s + created in temp dir -- dir perms 622 -- -%s + created in temp dir -- dir perms 623 -- -%s + created in temp dir -- dir perms 624 -- -%s + created in temp dir -- dir perms 625 -- -%s + created in temp dir -- dir perms 626 -- -%s + created in temp dir -- dir perms 627 -- -%s + created in temp dir -- dir perms 630 -- -%s + created in temp dir -- dir perms 631 -- -%s + created in temp dir -- dir perms 632 -- -%s + created in temp dir -- dir perms 633 -- -%s + created in temp dir -- dir perms 634 -- -%s + created in temp dir -- dir perms 635 -- -%s + created in temp dir -- dir perms 636 -- -%s + created in temp dir -- dir perms 637 -- -%s + created in temp dir -- dir perms 640 -- -%s + created in temp dir -- dir perms 641 -- -%s + created in temp dir -- dir perms 642 -- -%s + created in temp dir -- dir perms 643 -- -%s + created in temp dir -- dir perms 644 -- -%s + created in temp dir -- dir perms 645 -- -%s + created in temp dir -- dir perms 646 -- -%s + created in temp dir -- dir perms 647 -- -%s + created in temp dir -- dir perms 650 -- -%s + created in temp dir -- dir perms 651 -- -%s + created in temp dir -- dir perms 652 -- -%s + created in temp dir -- dir perms 653 -- -%s + created in temp dir -- dir perms 654 -- -%s + created in temp dir -- dir perms 655 -- -%s + created in temp dir -- dir perms 656 -- -%s + created in temp dir -- dir perms 657 -- -%s + created in temp dir -- dir perms 660 -- -%s + created in temp dir -- dir perms 661 -- -%s + created in temp dir -- dir perms 662 -- -%s + created in temp dir -- dir perms 663 -- -%s + created in temp dir -- dir perms 664 -- -%s + created in temp dir -- dir perms 665 -- -%s + created in temp dir -- dir perms 666 -- -%s + created in temp dir -- dir perms 667 -- -%s + created in temp dir -- dir perms 670 -- -%s + created in temp dir -- dir perms 671 -- -%s + created in temp dir -- dir perms 672 -- -%s + created in temp dir -- dir perms 673 -- -%s + created in temp dir -- dir perms 674 -- -%s + created in temp dir -- dir perms 675 -- -%s + created in temp dir -- dir perms 676 -- -%s + created in temp dir -- dir perms 677 -- -%s + created in temp dir -- dir perms 700 -- -%s + created in requested dir -- dir perms 701 -- -%s + created in requested dir -- dir perms 702 -- -%s + created in requested dir -- dir perms 703 -- -%s + created in requested dir -- dir perms 704 -- -%s + created in requested dir -- dir perms 705 -- -%s + created in requested dir -- dir perms 706 -- -%s + created in requested dir -- dir perms 707 -- -%s + created in requested dir -- dir perms 710 -- -%s + created in requested dir -- dir perms 711 -- -%s + created in requested dir -- dir perms 712 -- -%s + created in requested dir -- dir perms 713 -- -%s + created in requested dir -- dir perms 714 -- -%s + created in requested dir -- dir perms 715 -- -%s + created in requested dir -- dir perms 716 -- -%s + created in requested dir -- dir perms 717 -- -%s + created in requested dir -- dir perms 720 -- -%s + created in requested dir -- dir perms 721 -- -%s + created in requested dir -- dir perms 722 -- -%s + created in requested dir -- dir perms 723 -- -%s + created in requested dir -- dir perms 724 -- -%s + created in requested dir -- dir perms 725 -- -%s + created in requested dir -- dir perms 726 -- -%s + created in requested dir -- dir perms 727 -- -%s + created in requested dir -- dir perms 730 -- -%s + created in requested dir -- dir perms 731 -- -%s + created in requested dir -- dir perms 732 -- -%s + created in requested dir -- dir perms 733 -- -%s + created in requested dir -- dir perms 734 -- -%s + created in requested dir -- dir perms 735 -- -%s + created in requested dir -- dir perms 736 -- -%s + created in requested dir -- dir perms 737 -- -%s + created in requested dir -- dir perms 740 -- -%s + created in requested dir -- dir perms 741 -- -%s + created in requested dir -- dir perms 742 -- -%s + created in requested dir -- dir perms 743 -- -%s + created in requested dir -- dir perms 744 -- -%s + created in requested dir -- dir perms 745 -- -%s + created in requested dir -- dir perms 746 -- -%s + created in requested dir -- dir perms 747 -- -%s + created in requested dir -- dir perms 750 -- -%s + created in requested dir -- dir perms 751 -- -%s + created in requested dir -- dir perms 752 -- -%s + created in requested dir -- dir perms 753 -- -%s + created in requested dir -- dir perms 754 -- -%s + created in requested dir -- dir perms 755 -- -%s + created in requested dir -- dir perms 756 -- -%s + created in requested dir -- dir perms 757 -- -%s + created in requested dir -- dir perms 760 -- -%s + created in requested dir -- dir perms 761 -- -%s + created in requested dir -- dir perms 762 -- -%s + created in requested dir -- dir perms 763 -- -%s + created in requested dir -- dir perms 764 -- -%s + created in requested dir -- dir perms 765 -- -%s + created in requested dir -- dir perms 766 -- -%s + created in requested dir -- dir perms 767 -- -%s + created in requested dir -- dir perms 770 -- -%s + created in requested dir -- dir perms 771 -- -%s + created in requested dir -- dir perms 772 -- -%s + created in requested dir -- dir perms 773 -- -%s + created in requested dir -- dir perms 774 -- -%s + created in requested dir -- dir perms 775 -- -%s + created in requested dir -- dir perms 776 -- -%s + created in requested dir -- dir perms 777 -- -%s + created in requested dir *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation5-win32.phpt b/ext/standard/tests/file/tempnam_variation5-win32.phpt new file mode 100644 index 000000000..3e39352fe --- /dev/null +++ b/ext/standard/tests/file/tempnam_variation5-win32.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test tempnam() function: usage variations - existing file +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + "; + print($created_file); + echo "\n"; + } + else + print("File is not created"); + + unlink($created_file); +} +fclose($h); +unlink($dir_name."/tempnam_variation6.tmp"); +rmdir($dir_name); + +echo "\n*** Done ***\n"; +?> +--EXPECTF-- +*** Test tempnam() function: by passing an existing filename as prefix *** +-- Iteration 1 -- +File name is => %stempnam_variation6%et%s +-- Iteration 2 -- +File name is => %stempnam_variation6%et%s +-- Iteration 3 -- +File name is => %stempnam_variation6%et%s + +*** Done *** diff --git a/ext/standard/tests/file/tempnam_variation5.phpt b/ext/standard/tests/file/tempnam_variation5.phpt index 2d5f53dcd..26c3f91f1 100644 --- a/ext/standard/tests/file/tempnam_variation5.phpt +++ b/ext/standard/tests/file/tempnam_variation5.phpt @@ -1,5 +1,10 @@ --TEST-- Test tempnam() function: usage variations - existing file +--SKIPIF-- + --FILE-- %s +File name is => %stempnam_variation6%etempnam_variation6.tmp%s -- Iteration 2 -- -File name is => %s +File name is => %stempnam_variation6%etempnam_variation6.tmp%s -- Iteration 3 -- -File name is => %s +File name is => %stempnam_variation6%etempnam_variation6.tmp%s *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation6-win32.phpt b/ext/standard/tests/file/tempnam_variation6-win32.phpt new file mode 100644 index 000000000..efe7e86e8 --- /dev/null +++ b/ext/standard/tests/file/tempnam_variation6-win32.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test tempnam() function: usage variations - Using previous unique filename +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + "; + print($file_name); + echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + + if ($file_dir == sys_get_temp_dir()) { + echo "temp dir\n"; + } + else if ($file_dir == $file_path) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + } + + unlink($file_name); +} + +echo "\n*** Done ***\n"; +?> +--EXPECTF-- +*** Test tempnam(): by passing previously created filenames *** +-- Iteration 1 -- +File name is => %s%et%s +File created in => directory specified +-- Iteration 2 -- +File name is => %s%et%s +File created in => directory specified +-- Iteration 3 -- +File name is => %s%et%s +File created in => directory specified + +*** Done *** diff --git a/ext/standard/tests/file/tempnam_variation6.phpt b/ext/standard/tests/file/tempnam_variation6.phpt index 51ecde9a7..5eb6e6fc8 100644 --- a/ext/standard/tests/file/tempnam_variation6.phpt +++ b/ext/standard/tests/file/tempnam_variation6.phpt @@ -1,5 +1,10 @@ --TEST-- -Test tempnam() function: usage variations - Using previous unique filename +Test tempnam() function: usage variations - Using previous unique filename +--SKIPIF-- + --FILE-- "; print($file_name); echo "\n"; - } + + echo "File created in => "; + $file_dir = dirname($file_name); + + if ($file_dir == sys_get_temp_dir()) { + echo "temp dir\n"; + } + else if ($file_dir == $file_path) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + } unlink($file_name); } @@ -30,10 +48,13 @@ echo "\n*** Done ***\n"; --EXPECTF-- *** Test tempnam(): by passing previously created filenames *** -- Iteration 1 -- -File name is => %s +File name is => %s%etempnam_variation6.tmp%s +File created in => directory specified -- Iteration 2 -- -File name is => %s +File name is => %s%etempnam_variation6.tmp%s +File created in => directory specified -- Iteration 3 -- -File name is => %s +File name is => %s%etempnam_variation6.tmp%s +File created in => directory specified *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation7-win32.phpt b/ext/standard/tests/file/tempnam_variation7-win32.phpt index a88866b9b..98fd2ba37 100644 --- a/ext/standard/tests/file/tempnam_variation7-win32.phpt +++ b/ext/standard/tests/file/tempnam_variation7-win32.phpt @@ -3,7 +3,7 @@ Test tempnam() function: usage variations - invalid/non-existing dir --SKIPIF-- --FILE-- "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + if (realpath($file_dir) == realpath(sys_get_temp_dir()) || realpath($file_dir."\\") == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else { + echo "unknown location\n"; + } } - else + else { echo "-- File is not created --\n"; + } unlink($file_name); } @@ -59,34 +67,47 @@ echo "\n*** Done ***\n"; ?> --EXPECTF-- *** Testing tempnam() with invalid/non-existing directory names *** +-- Iteration 0 -- +File name is => %s%et%s +File permissions are => 100666 +File created in => temp dir -- Iteration 1 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 2 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 3 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 4 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 5 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 6 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 7 -- Notice: Array to string conversion in %s on line %d -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 8 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir -- Iteration 9 -- -File name is => %s +File name is => %s%et%s File permissions are => 100666 +File created in => temp dir *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation7.phpt b/ext/standard/tests/file/tempnam_variation7.phpt index b4b0035c9..65001207e 100644 --- a/ext/standard/tests/file/tempnam_variation7.phpt +++ b/ext/standard/tests/file/tempnam_variation7.phpt @@ -15,8 +15,6 @@ if(substr(PHP_OS, 0, 3) == "WIN") hence the unique files will be created in temporary dir */ echo "*** Testing tempnam() with invalid/non-existing directory names ***\n"; -$file_path = dirname(__FILE__); - /* An array of names, which will be passed as a dir name */ $names_arr = array( /* Invalid args */ @@ -26,7 +24,7 @@ $names_arr = array( NULL, "", " ", - "/0", + "\0", array(), /* Non-existing dirs */ @@ -35,7 +33,7 @@ $names_arr = array( ); -for( $i=1; $i "; printf("%o", fileperms($file_name) ); echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + + if (realpath($file_dir) == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else { + echo "unknown location\n"; + } + } - else + else { echo "-- File is not created --\n"; + } unlink($file_name); } @@ -59,34 +69,47 @@ echo "\n*** Done ***\n"; ?> --EXPECTF-- *** Testing tempnam() with invalid/non-existing directory names *** +-- Iteration 0 -- +File name is => %s%etempnam_variation3.tmp%s +File permissions are => 100600 +File created in => temp dir -- Iteration 1 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 2 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 3 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 4 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 5 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 6 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 7 -- Notice: Array to string conversion in %s on line %d -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 8 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir -- Iteration 9 -- -File name is => %s +File name is => %s%etempnam_variation3.tmp%s File permissions are => 100600 +File created in => temp dir *** Done *** diff --git a/ext/standard/tests/file/tempnam_variation8-win32.phpt b/ext/standard/tests/file/tempnam_variation8-win32.phpt new file mode 100644 index 000000000..8df67b609 --- /dev/null +++ b/ext/standard/tests/file/tempnam_variation8-win32.phpt @@ -0,0 +1,147 @@ +--TEST-- +Test tempnam() function: usage variations - various absolute and relative paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + "; + print(realpath($file_name)); + echo "\n"; + + echo "File permissions are => "; + printf("%o", fileperms($file_name) ); + echo "\n"; + + echo "File created in => "; + $file_dir = dirname($file_name); + $dir_req = $dir_paths[$i]; + + if (realpath($file_dir) == realpath(sys_get_temp_dir()) || realpath($file_dir."\\") == realpath(sys_get_temp_dir())) { + echo "temp dir\n"; + } + else if (realpath($file_dir) == realpath($dir_req) || realpath($file_dir."\\") == realpath($dir_req)) { + echo "directory specified\n"; + } + else { + echo "unknown location\n"; + } + + + } + else { + echo "-- File is not created --"; + } + + unlink($file_name); +} + +chdir($old_dir_path); +rmdir($dir_path); +rmdir($dir_name); + +echo "\n*** Done ***\n"; +?> +--EXPECTF-- +*** Testing tempnam() with absolute and relative paths *** + +-- Iteration 1 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 2 -- +File name is => %s\tempnam_variation2\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 3 -- +File name is => %s\tempnam_variation2\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 4 -- +File name is => %s\tempnam_variation2\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 5 -- +File name is => %s\tempnam_variation2\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 6 -- +File name is => %s\t%s +File permissions are => 100666 +File created in => temp dir + +-- Iteration 7 -- +File name is => %s\t%s +File permissions are => 100666 +File created in => temp dir + +-- Iteration 8 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 9 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 10 -- +File name is => %s\tempnam_variation2\tempnam_variation2_sub\t%s +File permissions are => 100666 +File created in => directory specified + +-- Iteration 11 -- +File name is => %s\t%s +File permissions are => 100666 +File created in => temp dir + +*** Done *** diff --git a/ext/standard/tests/file/touch.phpt b/ext/standard/tests/file/touch.phpt index 504674f17..4ea1ffd40 100644 --- a/ext/standard/tests/file/touch.phpt +++ b/ext/standard/tests/file/touch.phpt @@ -1,8 +1,16 @@ --TEST-- touch() tests +--SKIPIF-- + --FILE-- +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing touch() : basic functionality *** + +--- testing touch creates a file --- +bool(true) + + --- testing touch doesn't alter file contents --- +Here is a test line + + --- testing touch alters the correct file metadata --- +stat data differs at atime +stat data differs at mtime + + --- testing touch using all parameters --- +bool(true) +ctime=%d +mtime=10000 +atime=20470 +Done diff --git a/ext/standard/tests/file/touch_basic.phpt b/ext/standard/tests/file/touch_basic.phpt new file mode 100644 index 000000000..fb042df67 --- /dev/null +++ b/ext/standard/tests/file/touch_basic.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test touch() function : basic functionality +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing touch() : basic functionality *** + +--- testing touch creates a file --- +bool(true) + + --- testing touch doesn't alter file contents --- +Here is a test line + + --- testing touch alters the correct file metadata --- +stat data differs at atime +stat data differs at mtime +stat data differs at ctime + + --- testing touch using all parameters --- +bool(true) +ctime=%d +mtime=10000 +atime=20470 +Done diff --git a/ext/standard/tests/file/touch_error.phpt b/ext/standard/tests/file/touch_error.phpt new file mode 100644 index 000000000..778969928 --- /dev/null +++ b/ext/standard/tests/file/touch_error.phpt @@ -0,0 +1,21 @@ +--TEST-- +touch() error tests +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECTF-- +Warning: Wrong parameter count for touch() in %s on line %d +NULL + +Warning: Wrong parameter count for touch() in %s on line %d +NULL + +Warning: touch(): Unable to create file /no/such/file/or/directory because %s in %s on line %d +bool(false) \ No newline at end of file diff --git a/ext/standard/tests/file/touch_variation1.phpt b/ext/standard/tests/file/touch_variation1.phpt new file mode 100644 index 000000000..dba41a607 --- /dev/null +++ b/ext/standard/tests/file/touch_variation1.phpt @@ -0,0 +1,39 @@ +--TEST-- +touch() with times +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +int(101) +int(101) +bool(true) +int(100) +int(102) +Done \ No newline at end of file diff --git a/ext/standard/tests/file/touch_variation2.phpt b/ext/standard/tests/file/touch_variation2.phpt new file mode 100644 index 000000000..9ccb90c75 --- /dev/null +++ b/ext/standard/tests/file/touch_variation2.phpt @@ -0,0 +1,24 @@ +--TEST-- +touch() - ensure touch does not delete existing file. +--CREDITS-- +Dave Kelsey +--FILE-- + +--EXPECT-- +bool(true) +string(6) "mydata" +Done diff --git a/ext/standard/tests/file/touch_variation3-win32.phpt b/ext/standard/tests/file/touch_variation3-win32.phpt new file mode 100644 index 000000000..c994199c7 --- /dev/null +++ b/ext/standard/tests/file/touch_variation3-win32.phpt @@ -0,0 +1,198 @@ +--TEST-- +Test touch() function : usage variation - different types for time +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for time + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( touch($filename, $value, $atime) ); +}; + +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing touch() : usage variation *** + +--float 10.5-- +bool(true) + +--float -10.5-- +Error: 2 - touch(): Utime failed: Invalid argument, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - touch(): Utime failed: Invalid argument, %s(%d) +bool(false) + +--float -12.3456789000e10-- +bool(true) + +--float .5-- +bool(true) + +--empty array-- +bool(true) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +bool(true) + +--lowercase null-- +bool(true) + +--lowercase true-- +bool(true) + +--lowercase false-- +bool(true) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +bool(true) + +--empty string DQ-- +bool(true) + +--empty string SQ-- +bool(true) + +--string DQ-- +bool(true) + +--string SQ-- +bool(true) + +--mixed case string-- +bool(true) + +--heredoc-- +bool(true) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +bool(true) + +--unset var-- +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/touch_variation3.phpt b/ext/standard/tests/file/touch_variation3.phpt new file mode 100644 index 000000000..3e4f7763c --- /dev/null +++ b/ext/standard/tests/file/touch_variation3.phpt @@ -0,0 +1,196 @@ +--TEST-- +Test touch() function : usage variation - different types for time +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for time + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( touch($filename, $value, $atime) ); +}; + +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing touch() : usage variation *** + +--float 10.5-- +bool(true) + +--float -10.5-- +bool(true) + +--float 12.3456789000e10-- +bool(true) + +--float -12.3456789000e10-- +bool(true) + +--float .5-- +bool(true) + +--empty array-- +bool(true) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +bool(true) + +--lowercase null-- +bool(true) + +--lowercase true-- +bool(true) + +--lowercase false-- +bool(true) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +bool(true) + +--empty string DQ-- +bool(true) + +--empty string SQ-- +bool(true) + +--string DQ-- +bool(true) + +--string SQ-- +bool(true) + +--mixed case string-- +bool(true) + +--heredoc-- +bool(true) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +bool(true) + +--unset var-- +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/touch_variation4-win32.phpt b/ext/standard/tests/file/touch_variation4-win32.phpt new file mode 100644 index 000000000..49cf8d576 --- /dev/null +++ b/ext/standard/tests/file/touch_variation4-win32.phpt @@ -0,0 +1,198 @@ +--TEST-- +Test touch() function : usage variation - different types for atime +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for atime + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( touch($filename, $time, $value) ); +}; + +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing touch() : usage variation *** + +--float 10.5-- +bool(true) + +--float -10.5-- +Error: 2 - touch(): Utime failed: Invalid argument, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - touch(): Utime failed: Invalid argument, %s(%d) +bool(false) + +--float -12.3456789000e10-- +bool(true) + +--float .5-- +bool(true) + +--empty array-- +bool(true) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +bool(true) + +--lowercase null-- +bool(true) + +--lowercase true-- +bool(true) + +--lowercase false-- +bool(true) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +bool(true) + +--empty string DQ-- +bool(true) + +--empty string SQ-- +bool(true) + +--string DQ-- +bool(true) + +--string SQ-- +bool(true) + +--mixed case string-- +bool(true) + +--heredoc-- +bool(true) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +bool(true) + +--unset var-- +bool(true) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/touch_variation4.phpt b/ext/standard/tests/file/touch_variation4.phpt new file mode 100644 index 000000000..c71298a6e --- /dev/null +++ b/ext/standard/tests/file/touch_variation4.phpt @@ -0,0 +1,196 @@ +--TEST-- +Test touch() function : usage variation - different types for atime +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for atime + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( touch($filename, $time, $value) ); +}; + +unlink($filename); + +?> +===DONE=== +--EXPECTF-- +*** Testing touch() : usage variation *** + +--float 10.5-- +bool(true) + +--float -10.5-- +bool(true) + +--float 12.3456789000e10-- +bool(true) + +--float -12.3456789000e10-- +bool(true) + +--float .5-- +bool(true) + +--empty array-- +bool(true) + +--int indexed array-- +bool(true) + +--associative array-- +bool(true) + +--nested arrays-- +bool(true) + +--uppercase NULL-- +bool(true) + +--lowercase null-- +bool(true) + +--lowercase true-- +bool(true) + +--lowercase false-- +bool(true) + +--uppercase TRUE-- +bool(true) + +--uppercase FALSE-- +bool(true) + +--empty string DQ-- +bool(true) + +--empty string SQ-- +bool(true) + +--string DQ-- +bool(true) + +--string SQ-- +bool(true) + +--mixed case string-- +bool(true) + +--heredoc-- +bool(true) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +bool(true) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +bool(true) + +--undefined var-- +bool(true) + +--unset var-- +bool(true) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/touch_variation5-win32.phpt b/ext/standard/tests/file/touch_variation5-win32.phpt new file mode 100644 index 000000000..6b7bde4c4 --- /dev/null +++ b/ext/standard/tests/file/touch_variation5-win32.phpt @@ -0,0 +1,249 @@ +--TEST-- +Test touch() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +===DONE=== +--EXPECTF-- +*** Testing touch() : variation *** + +*** testing nonexisting paths *** +--- testing touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/aSubDirOrFile - created +--- testing ./touchVar5.tmp/aSubDirOrFile --- +PASSED: ./touchVar5.tmp/aSubDirOrFile - created +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created +--- testing touchVar5.tmp/../BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file touchVar5.tmp/../BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing %s/touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/touchVar5.tmp/aSubDirOrFile - created +--- testing %s/./touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/./touchVar5.tmp/aSubDirOrFile - created +--- testing %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created +--- testing %s/BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file %s/BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Unable to create file touchVar5.tmp/aSubDirOrFile/ because Invalid argument in %s on line %d +--- testing %s/touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Unable to create file %s/touchVar5.tmp/aSubDirOrFile/ because Invalid argument in %s on line %d +--- testing touchVar5.tmp//aSubDirOrFile --- +PASSED: touchVar5.tmp//aSubDirOrFile - created +--- testing %s//touchVar5.tmp//aSubDirOrFile --- +PASSED: %s//touchVar5.tmp//aSubDirOrFile - created + +*** testing existing files *** +--- testing touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/aSubDirOrFile - touched +--- testing ./touchVar5.tmp/aSubDirOrFile --- +PASSED: ./touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing %s/touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/touchVar5.tmp/aSubDirOrFile - touched +--- testing %s/./touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/./touchVar5.tmp/aSubDirOrFile - touched +--- testing %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp//aSubDirOrFile --- +PASSED: touchVar5.tmp//aSubDirOrFile - touched +--- testing %s//touchVar5.tmp//aSubDirOrFile --- +PASSED: %s//touchVar5.tmp//aSubDirOrFile - touched + +*** testing existing directories *** +--- testing touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing ./touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: ./touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing %s/touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s/touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing %s/./touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s/./touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - access time not changed +--- testing touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp/aSubDirOrFile/ - access time not changed +--- testing %s/touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s/touchVar5.tmp/aSubDirOrFile/ - access time not changed +--- testing touchVar5.tmp//aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp//aSubDirOrFile - access time not changed +--- testing %s//touchVar5.tmp//aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s//touchVar5.tmp//aSubDirOrFile - access time not changed +===DONE=== + diff --git a/ext/standard/tests/file/touch_variation5.phpt b/ext/standard/tests/file/touch_variation5.phpt new file mode 100644 index 000000000..f0e1f7869 --- /dev/null +++ b/ext/standard/tests/file/touch_variation5.phpt @@ -0,0 +1,230 @@ +--TEST-- +Test touch() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing touch() : variation *** + +*** testing nonexisting paths *** +--- testing touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/aSubDirOrFile - created +--- testing ./touchVar5.tmp/aSubDirOrFile --- +PASSED: ./touchVar5.tmp/aSubDirOrFile - created +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created +--- testing touchVar5.tmp/../BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file touchVar5.tmp/../BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile - created +--- testing /%s/./touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - created +--- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - created +--- testing /%s/BADDIR/aSubDirOrFile --- + +Warning: touch(): Unable to create file /%s/BADDIR/aSubDirOrFile because %s in %s on line %d +--- testing touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Unable to create file touchVar5.tmp/aSubDirOrFile/ because Is a directory in %s on line %d +--- testing /%s/touchVar5.tmp/aSubDirOrFile/ --- + +Warning: touch(): Unable to create file /%s/touchVar5.tmp/aSubDirOrFile/ because Is a directory in %s on line %d +--- testing touchVar5.tmp//aSubDirOrFile --- +PASSED: touchVar5.tmp//aSubDirOrFile - created +--- testing /%s//touchVar5.tmp//aSubDirOrFile --- +PASSED: /%s//touchVar5.tmp//aSubDirOrFile - created + +*** testing existing files *** +--- testing touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/aSubDirOrFile - touched +--- testing ./touchVar5.tmp/aSubDirOrFile --- +PASSED: ./touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/./touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp//aSubDirOrFile --- +PASSED: touchVar5.tmp//aSubDirOrFile - touched +--- testing /%s//touchVar5.tmp//aSubDirOrFile --- +PASSED: /%s//touchVar5.tmp//aSubDirOrFile - touched + +*** testing existing directories *** +--- testing touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/aSubDirOrFile - touched +--- testing ./touchVar5.tmp/aSubDirOrFile --- +PASSED: ./touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/./touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/./touchVar5.tmp/aSubDirOrFile - touched +--- testing /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/../touchVar5.tmp/aSubDirOrFile - touched +--- testing touchVar5.tmp/aSubDirOrFile/ --- +PASSED: touchVar5.tmp/aSubDirOrFile/ - touched +--- testing /%s/touchVar5.tmp/aSubDirOrFile/ --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile/ - touched +--- testing touchVar5.tmp//aSubDirOrFile --- +PASSED: touchVar5.tmp//aSubDirOrFile - touched +--- testing /%s//touchVar5.tmp//aSubDirOrFile --- +PASSED: /%s//touchVar5.tmp//aSubDirOrFile - touched +===DONE=== + diff --git a/ext/standard/tests/file/touch_variation6-win32.phpt b/ext/standard/tests/file/touch_variation6-win32.phpt new file mode 100644 index 000000000..8c87d4904 --- /dev/null +++ b/ext/standard/tests/file/touch_variation6-win32.phpt @@ -0,0 +1,263 @@ +--TEST-- +Test touch() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing touch() : variation *** + +*** testing nonexisting paths *** +--- testing touchVar5.tmp\aSubDirOrFile --- +PASSED: touchVar5.tmp\aSubDirOrFile - created +--- testing .\touchVar5.tmp\aSubDirOrFile --- +PASSED: .\touchVar5.tmp\aSubDirOrFile - created +--- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- +PASSED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - created +--- testing touchVar5.tmp\..\BADDIR\aSubDirOrFile --- + +Warning: touch(): Unable to create file touchVar5.tmp\..\BADDIR\aSubDirOrFile because %s in %s on line %d +--- testing BADDIR\aSubDirOrFile --- + +Warning: touch(): Unable to create file BADDIR\aSubDirOrFile because %s in %s on line %d +--- testing %s\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\touchVar5.tmp\aSubDirOrFile - created +--- testing %s\.\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\.\touchVar5.tmp\aSubDirOrFile - created +--- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - created +--- testing %s\BADDIR\aSubDirOrFile --- + +Warning: touch(): Unable to create file %s\BADDIR\aSubDirOrFile because %s in %s on line %d +--- testing touchVar5.tmp\aSubDirOrFile\ --- + +Warning: touch(): Unable to create file touchVar5.tmp\aSubDirOrFile\ because Invalid argument in %s on line %d +--- testing %s\touchVar5.tmp\aSubDirOrFile\ --- + +Warning: touch(): Unable to create file %s\touchVar5.tmp\aSubDirOrFile\ because Invalid argument in %s on line %d +--- testing touchVar5.tmp\\aSubDirOrFile --- +PASSED: touchVar5.tmp\\aSubDirOrFile - created +--- testing %s\\touchVar5.tmp\\aSubDirOrFile --- +PASSED: %s\\touchVar5.tmp\\aSubDirOrFile - created +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile - created + +*** testing existing files *** +--- testing touchVar5.tmp\aSubDirOrFile --- +PASSED: touchVar5.tmp\aSubDirOrFile - touched +--- testing .\touchVar5.tmp\aSubDirOrFile --- +PASSED: .\touchVar5.tmp\aSubDirOrFile - touched +--- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- +PASSED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched +--- testing %s\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\touchVar5.tmp\aSubDirOrFile - touched +--- testing %s\.\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\.\touchVar5.tmp\aSubDirOrFile - touched +--- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- +PASSED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - touched +--- testing touchVar5.tmp\\aSubDirOrFile --- +PASSED: touchVar5.tmp\\aSubDirOrFile - touched +--- testing %s\\touchVar5.tmp\\aSubDirOrFile --- +PASSED: %s\\touchVar5.tmp\\aSubDirOrFile - touched +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- +PASSED: /%s/touchVar5.tmp/aSubDirOrFile - touched + +*** testing existing directories *** +--- testing touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing .\touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: .\touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing %s\touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s\touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing %s\.\touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s\.\touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s\touchVar5.tmp\..\touchVar5.tmp\aSubDirOrFile - access time not changed +--- testing touchVar5.tmp\aSubDirOrFile\ --- + +Warning: touch(): Utime failed: No such file or directory in %s on line %d +FAILED: touchVar5.tmp\aSubDirOrFile\ - access time not changed +--- testing %s\touchVar5.tmp\aSubDirOrFile\ --- + +Warning: touch(): Utime failed: No such file or directory in %s on line %d +FAILED: %s\touchVar5.tmp\aSubDirOrFile\ - access time not changed +--- testing touchVar5.tmp\\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: touchVar5.tmp\\aSubDirOrFile - access time not changed +--- testing %s\\touchVar5.tmp\\aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: %s\\touchVar5.tmp\\aSubDirOrFile - access time not changed +--- testing /%s/touchVar5.tmp/aSubDirOrFile --- + +Warning: touch(): Utime failed: Permission denied in %s on line %d +FAILED: /%s/touchVar5.tmp/aSubDirOrFile - access time not changed +===DONE=== + diff --git a/ext/standard/tests/file/umask_variation3.phpt b/ext/standard/tests/file/umask_variation3.phpt new file mode 100644 index 000000000..b5b1c2e0f --- /dev/null +++ b/ext/standard/tests/file/umask_variation3.phpt @@ -0,0 +1,226 @@ +--TEST-- +Test umask() function : usage variation +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + //out of boundary integers + 'int -100' => -100, + 'int 99999' => 99999, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + //'float -12.3456789000e10' => -12.3456789000e10, different in p8 + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for mask + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + umask(0); + var_dump(umask($value)); + var_dump( umask()); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing umask() : usage variation *** + +--int -100-- +int(0) +int(412) + +--int 99999-- +int(0) +int(159) + +--float 10.5-- +int(0) +int(10) + +--float -10.5-- +int(0) +int(502) + +--float 12.3456789000e10-- +int(0) +int(8) + +--float .5-- +int(0) +int(0) + +--empty array-- +int(0) +int(0) + +--int indexed array-- +int(0) +int(1) + +--associative array-- +int(0) +int(1) + +--nested arrays-- +int(0) +int(1) + +--uppercase NULL-- +int(0) +int(0) + +--lowercase null-- +int(0) +int(0) + +--lowercase true-- +int(0) +int(1) + +--lowercase false-- +int(0) +int(0) + +--uppercase TRUE-- +int(0) +int(1) + +--uppercase FALSE-- +int(0) +int(0) + +--empty string DQ-- +int(0) +int(0) + +--empty string SQ-- +int(0) +int(0) + +--string DQ-- +int(0) +int(0) + +--string SQ-- +int(0) +int(0) + +--mixed case string-- +int(0) +int(0) + +--heredoc-- +int(0) +int(0) + +--instance of classWithToString-- +Error: 8 - Object of class classWithToString could not be converted to int, %s(%d) +int(0) +int(1) + +--instance of classWithoutToString-- +Error: 8 - Object of class classWithoutToString could not be converted to int, %s(%d) +int(0) +int(1) + +--undefined var-- +int(0) +int(0) + +--unset var-- +int(0) +int(0) +===DONE=== diff --git a/ext/standard/tests/file/unlink_variation10.phpt b/ext/standard/tests/file/unlink_variation10.phpt new file mode 100644 index 000000000..e0c92caeb --- /dev/null +++ b/ext/standard/tests/file/unlink_variation10.phpt @@ -0,0 +1,106 @@ +--TEST-- +Test unlink() function : variation: unlinking directories +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unlink() : variation *** +-- unlinking soft link unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link ./unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link unlinkVar8.tmp/../unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link /%s/unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link /%s/./unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/subDir.tmp -- +directory unlinked +-- unlinking soft link unlinkVar8.tmp//subDir.tmp -- +directory unlinked +-- unlinking soft link /%s//unlinkVar8.tmp//subDir.tmp -- +directory unlinked + +--- try to unlink a directory --- + +Warning: unlink(unlinkVar8.tmp/linkme.tmp): %s in %s on line %d +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/unlink_variation6.phpt b/ext/standard/tests/file/unlink_variation6.phpt new file mode 100644 index 000000000..ede9ada09 --- /dev/null +++ b/ext/standard/tests/file/unlink_variation6.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test unlink() function : variation +--CREDITS-- +Dave Kelsey +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unlink() : variation: contexts and relative files *** +subdir/testfile.txt exists +bool(true) +subdir/testfile.txt doesn't exist +===DONE=== diff --git a/ext/standard/tests/file/unlink_variation7.phpt b/ext/standard/tests/file/unlink_variation7.phpt new file mode 100644 index 000000000..4c63e11c8 --- /dev/null +++ b/ext/standard/tests/file/unlink_variation7.phpt @@ -0,0 +1,246 @@ +--TEST-- +Test unlink() function : usage variation different types for context +--CREDITS-- +Dave Kelsey +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // file resource + 'file resource' => $fileRes +); + +// loop through each element of the array for context + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + touch($filename); // create if it doesn't exist + var_dump( unlink($filename, $value) ); +}; + +if (file_exists($filename)) { + unlink($filename); +} +fclose($fileRes); + +?> +===DONE=== +--EXPECTF-- +*** Testing unlink() : usage variation different types for context *** + +--int 0-- +Error: 2 - unlink() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int 1-- +Error: 2 - unlink() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - unlink() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - unlink() expects parameter 2 to be resource, integer given, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - unlink() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - unlink() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - unlink() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - unlink() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--float .5-- +Error: 2 - unlink() expects parameter 2 to be resource, double given, %s(%d) +bool(false) + +--empty array-- +Error: 2 - unlink() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--int indexed array-- +Error: 2 - unlink() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--associative array-- +Error: 2 - unlink() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--nested arrays-- +Error: 2 - unlink() expects parameter 2 to be resource, array given, %s(%d) +bool(false) + +--uppercase NULL-- +Error: 2 - unlink() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - unlink() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - unlink() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - unlink() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - unlink() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - unlink() expects parameter 2 to be resource, boolean given, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--string DQ-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--string SQ-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--mixed case string-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--heredoc-- +Error: 2 - unlink() expects parameter 2 to be resource, string given, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - unlink() expects parameter 2 to be resource, object given, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - unlink() expects parameter 2 to be resource, object given, %s(%d) +bool(false) + +--undefined var-- +Error: 2 - unlink() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--unset var-- +Error: 2 - unlink() expects parameter 2 to be resource, null given, %s(%d) +bool(false) + +--file resource-- +Error: 2 - unlink(): supplied resource is not a valid Stream-Context resource, %s(%d) +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/unlink_variation8-win32.phpt b/ext/standard/tests/file/unlink_variation8-win32.phpt new file mode 100644 index 000000000..5348676e4 --- /dev/null +++ b/ext/standard/tests/file/unlink_variation8-win32.phpt @@ -0,0 +1,112 @@ +--TEST-- +Test unlink() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unlink() : variation *** +-- removing unlinkVar8.tmp/file.tmp -- +file removed +-- removing ./unlinkVar8.tmp/file.tmp -- +file removed +-- removing unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file removed +-- removing unlinkVar8.tmp/../BADDIR/file.tmp -- + +Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing BADDIR/file.tmp -- + +Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing %s/unlinkVar8.tmp/file.tmp -- +file removed +-- removing %s/./unlinkVar8.tmp/file.tmp -- +file removed +-- removing %s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file removed +-- removing %s/BADDIR/file.tmp -- + +Warning: unlink(%s/BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(unlinkVar8.tmp/file.tmp/): Invalid argument in %s on line %d +-- removing %s/unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(%s/unlinkVar8.tmp/file.tmp/): Invalid argument in %s on line %d +-- removing unlinkVar8.tmp//file.tmp -- +file removed +-- removing %s//unlinkVar8.tmp//file.tmp -- +file removed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/unlink_variation8.phpt b/ext/standard/tests/file/unlink_variation8.phpt new file mode 100644 index 000000000..e87a584f5 --- /dev/null +++ b/ext/standard/tests/file/unlink_variation8.phpt @@ -0,0 +1,206 @@ +--TEST-- +Test unlink() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unlink() : variation *** +-- removing unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing ./unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link ./unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link ./unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing unlinkVar8.tmp/../BADDIR/file.tmp -- + +Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking soft link unlinkVar8.tmp/../BADDIR/file.tmp -- + +Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking hard link unlinkVar8.tmp/../BADDIR/file.tmp -- + +Warning: unlink(unlinkVar8.tmp/../BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing BADDIR/file.tmp -- + +Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking soft link BADDIR/file.tmp -- + +Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking hard link BADDIR/file.tmp -- + +Warning: unlink(BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing /%s/unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link /%s/unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link /%s/unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing /%s/./unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link /%s/./unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link /%s/./unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file removed +-- unlinking soft link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file unlinked +-- unlinking hard link /%s/unlinkVar8.tmp/../unlinkVar8.tmp/file.tmp -- +file unlinked +-- removing /%s/BADDIR/file.tmp -- + +Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking soft link /%s/BADDIR/file.tmp -- + +Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d +-- unlinking hard link /%s/BADDIR/file.tmp -- + +Warning: unlink(/%s/BADDIR/file.tmp): No such file or directory in %s on line %d +-- removing unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- unlinking soft link unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- unlinking hard link unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- removing /%s/unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- unlinking soft link /%s/unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- unlinking hard link /%s/unlinkVar8.tmp/file.tmp/ -- + +Warning: unlink(/%s/unlinkVar8.tmp/file.tmp/): Not a directory in %s on line %d +-- removing unlinkVar8.tmp//file.tmp -- +file removed +-- unlinking soft link unlinkVar8.tmp//file.tmp -- +file unlinked +-- unlinking hard link unlinkVar8.tmp//file.tmp -- +file unlinked +-- removing /%s//unlinkVar8.tmp//file.tmp -- +file removed +-- unlinking soft link /%s//unlinkVar8.tmp//file.tmp -- +file unlinked +-- unlinking hard link /%s//unlinkVar8.tmp//file.tmp -- +file unlinked +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/unlink_variation9-win32.phpt b/ext/standard/tests/file/unlink_variation9-win32.phpt new file mode 100644 index 000000000..4f1a8bb8d --- /dev/null +++ b/ext/standard/tests/file/unlink_variation9-win32.phpt @@ -0,0 +1,120 @@ +--TEST-- +Test unlink() function : variation: various valid and invalid paths +--CREDITS-- +Dave Kelsey +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unlink() : variation *** +-- removing unlinkVar9.tmp\file.tmp -- +file removed +-- removing .\unlinkVar9.tmp\file.tmp -- +file removed +-- removing unlinkVar9.tmp\..\unlinkVar9.tmp\file.tmp -- +file removed +-- removing unlinkVar9.tmp\..\BADDIR\file.tmp -- + +Warning: unlink(unlinkVar9.tmp\..\BADDIR\file.tmp): No such file or directory in %s on line %d +-- removing BADDIR\file.tmp -- + +Warning: unlink(BADDIR\file.tmp): No such file or directory in %s on line %d +-- removing %s\unlinkVar9.tmp\file.tmp -- +file removed +-- removing %s\.\unlinkVar9.tmp\file.tmp -- +file removed +-- removing %s\unlinkVar9.tmp\..\unlinkVar9.tmp\file.tmp -- +file removed +-- removing %s\BADDIR\file.tmp -- + +Warning: unlink(%s\BADDIR\file.tmp): No such file or directory in %s on line %d +-- removing unlinkVar9.tmp\file.tmp\ -- + +Warning: unlink(unlinkVar9.tmp\file.tmp\): Invalid argument in %s on line %d +-- removing %s\unlinkVar9.tmp\file.tmp\ -- + +Warning: unlink(%s\unlinkVar9.tmp\file.tmp\): Invalid argument in %s on line %d +-- removing unlinkVar9.tmp\\file.tmp -- +file removed +-- removing %s\\unlinkVar9.tmp\\file.tmp -- +file removed +-- removing /%s/unlinkVar9.tmp/file.tmp -- +file removed +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/file/userstreams_004.phpt b/ext/standard/tests/file/userstreams_004.phpt new file mode 100644 index 000000000..da9f148b5 --- /dev/null +++ b/ext/standard/tests/file/userstreams_004.phpt @@ -0,0 +1,58 @@ +--TEST-- +User-space streams: stream_lock() +--FILE-- +mode = $mode; + } +} +function test($name, $fd, $mode) { + echo "------ $name: -------\n"; + flock($fd, $mode); + $data = stream_get_meta_data($fd); + var_dump($data['wrapper_data']->mode === $mode); +} + +var_dump(stream_wrapper_register('test', 'test_wrapper')); +var_dump(stream_wrapper_register('test2', 'test_wrapper_base')); + +$fd = fopen("test://foo","r"); +$fd2 = fopen("test2://foo","r"); + +test("stream_lock not implemented", $fd2, LOCK_EX); + +foreach(array("LOCK_SH","LOCK_EX","LOCK_UN") as $mode) { + test("fclock($mode)", $fd, constant($mode)); + test("fclock($mode|LOCK_NB)", $fd, constant($mode)|LOCK_NB); +} + +?> +--EXPECTF-- +bool(true) +bool(true) +------ stream_lock not implemented: ------- + +Warning: flock(): test_wrapper_base::stream_lock is not implemented! in %s +bool(false) +------ fclock(LOCK_SH): ------- +bool(true) +------ fclock(LOCK_SH|LOCK_NB): ------- +bool(true) +------ fclock(LOCK_EX): ------- +bool(true) +------ fclock(LOCK_EX|LOCK_NB): ------- +bool(true) +------ fclock(LOCK_UN): ------- +bool(true) +------ fclock(LOCK_UN|LOCK_NB): ------- +bool(true) diff --git a/ext/standard/tests/filters/bug46164-1.phpt b/ext/standard/tests/filters/bug46164-1.phpt new file mode 100644 index 000000000..b2d2d4e85 --- /dev/null +++ b/ext/standard/tests/filters/bug46164-1.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #46164 - 1 (stream_filter_remove() closes the stream) +--FILE-- +datalen; + stream_bucket_append($out, $bucket); + } + return PSFS_PASS_ON; + } +} +stream_filter_register('user_filter','user_filter'); + +$fd = fopen('php://memory','w'); +$filter = stream_filter_append($fd, 'user_filter'); +stream_filter_remove($filter); +var_dump(fclose($fd)); +?> +--EXPECT-- +bool(true) diff --git a/ext/standard/tests/filters/bug46164-2.phpt b/ext/standard/tests/filters/bug46164-2.phpt new file mode 100644 index 000000000..6a1bde596 --- /dev/null +++ b/ext/standard/tests/filters/bug46164-2.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #46164 - 2 (stream_filter_remove() closes the stream) +--FILE-- +datalen; + stream_bucket_append($out, $bucket); + } + unset($this->stream); + return PSFS_PASS_ON; + } +} +stream_filter_register('user_filter','user_filter'); + +$fd = fopen('php://memory','w'); +$filter = stream_filter_append($fd, 'user_filter'); +fwrite($fd, "foo"); +fflush($fd); +var_dump(fclose($fd)); +?> +--EXPECT-- +bool(true) diff --git a/ext/standard/tests/filters/filter_errors.inc b/ext/standard/tests/filters/filter_errors.inc new file mode 100644 index 000000000..a03e272b4 --- /dev/null +++ b/ext/standard/tests/filters/filter_errors.inc @@ -0,0 +1,34 @@ + +--FILE-- + +--EXPECTF-- +test filtering of buffered data + +Warning: stream_filter_append(): stream filter (convert.base64-decode): invalid byte sequence in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): stream filter (convert.base64-decode): invalid byte sequence in %s diff --git a/ext/standard/tests/filters/filter_errors_user.phpt b/ext/standard/tests/filters/filter_errors_user.phpt new file mode 100644 index 000000000..7bdf8de08 --- /dev/null +++ b/ext/standard/tests/filters/filter_errors_user.phpt @@ -0,0 +1,179 @@ +--TEST-- +Filter errors: user filter +--FILE-- +datalen; + stream_bucket_append($out, $bucket); + } + return PSFS_ERR_FATAL; + } +} +class test_filter3 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + if (!$closing) { + $bucket = stream_bucket_new($this->stream, "42"); + stream_bucket_append($out, $bucket); + } + return PSFS_ERR_FATAL; + } +} +class test_filter4 extends php_user_filter { + function filter($in, $out, &$consumed, $closing) { + if (!$closing) { + $bucket = stream_bucket_new($this->stream, "42"); + } + return PSFS_ERR_FATAL; + } +} + +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + var_dump(stream_filter_register("test_filter$i", "test_filter$i")); + filter_errors_test("test_filter$i", "42"); +} + +echo "test append / read / remove\n"; +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $stream = fopen('php://memory', 'wb+'); + fwrite($stream, b"42"); + fseek($stream, 0, SEEK_SET); + $f = stream_filter_append($stream, "test_filter$i"); + stream_get_contents($stream); + stream_filter_remove($f); +} + +echo "test append all / read / remove all\n"; +$stream = fopen('php://memory', 'wb+'); +fwrite($stream, b"42"); +fseek($stream, 0, SEEK_SET); +$filters = array(); +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $filters[] = stream_filter_append($stream, "test_filter$i"); +} +stream_get_contents($stream); +foreach($filters as $filter) { + stream_filter_remove($filter); +} + +echo "test append all / read / close\n"; +$stream = fopen('php://memory', 'wb+'); +fwrite($stream, b"42"); +fseek($stream, 0, SEEK_SET); +$filters = array(); +for($i = 0; $i < 5; ++$i) { + echo "test_filter$i\n"; + $filters[] = stream_filter_append($stream, "test_filter$i"); +} +stream_get_contents($stream); +fclose($stream); + +?> +--EXPECTF-- +test_filter0 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test_filter1 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data +test_filter2 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data +test_filter3 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test_filter4 +bool(true) +test filtering of buffered data + +Warning: stream_filter_append(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s +test append / read / remove +test_filter0 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter1 + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter2 + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter3 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test append all / read / remove all +test_filter0 +test_filter1 +test_filter2 +test_filter3 +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s + +Warning: stream_filter_remove(): Unable to flush filter, not removing in %s +test append all / read / close +test_filter0 +test_filter1 +test_filter2 +test_filter3 +test_filter4 + +Warning: stream_get_contents(): Unprocessed filter buckets remaining on input brigade in %s diff --git a/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt b/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt new file mode 100644 index 000000000..ebb3b21df --- /dev/null +++ b/ext/standard/tests/filters/filter_errors_zlib_inflate.phpt @@ -0,0 +1,14 @@ +--TEST-- +Filter errors: zlib.inflate +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +test filtering of buffered data + +Warning: stream_filter_append(): Filter failed to process pre-buffered data in %s +test filtering of non buffered data diff --git a/ext/standard/tests/general_functions/008.phpt b/ext/standard/tests/general_functions/008.phpt index bb633c334..f76c73572 100644 --- a/ext/standard/tests/general_functions/008.phpt +++ b/ext/standard/tests/general_functions/008.phpt @@ -34,7 +34,7 @@ array(14) { [11]=> float(123456789012) [12]=> - float(1234567890120) + float(1.23456789012E+12) [13]=> float(1.23456789012E+19) } \ No newline at end of file diff --git a/ext/standard/tests/general_functions/bug42272.phpt b/ext/standard/tests/general_functions/bug42272.phpt index 5a455d725..8b8c248bc 100644 --- a/ext/standard/tests/general_functions/bug42272.phpt +++ b/ext/standard/tests/general_functions/bug42272.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #42272: var_export() incorrectly escapes char(0). +Bug #42272 (var_export() incorrectly escapes char(0)) --FILE-- +--INI-- +session.name=PHPSESSID --FILE-- --EXPECTF--
asd diff --git a/ext/standard/tests/general_functions/bug47027.phpt b/ext/standard/tests/general_functions/bug47027.phpt new file mode 100644 index 000000000..e4f5aae9d --- /dev/null +++ b/ext/standard/tests/general_functions/bug47027.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #47027 (var_export doesn't show numeric indices on ArrayObject) +--FILE-- + "foo", "bar" => "baz")); +var_export ($ao); +?> +--EXPECT-- +ArrayObject::__set_state(array( + 2 => 'foo', + 'bar' => 'baz', +)) diff --git a/ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt b/ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt new file mode 100644 index 000000000..37716cd5d --- /dev/null +++ b/ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt @@ -0,0 +1,57 @@ +--TEST-- +call_user_func_array() passes by reference if the array element is referenced, regardless of function signature. +--FILE-- + +--EXPECTF-- +------ Calling by_val() with unreferenced argument ------ +array(1) { + [0]=> + string(8) "original" +} +------ Calling by_ref() with unreferenced argument ------ +array(1) { + [0]=> + string(8) "original" +} +------ Calling by_val() with referenced argument ------ +array(1) { + [0]=> + &string(7) "changed" +} +------ Calling by_ref() with referenced argument ------ +array(1) { + [0]=> + &string(7) "changed" +} diff --git a/ext/standard/tests/general_functions/call_user_func_array_variation_002.phpt b/ext/standard/tests/general_functions/call_user_func_array_variation_002.phpt new file mode 100644 index 000000000..73f193753 --- /dev/null +++ b/ext/standard/tests/general_functions/call_user_func_array_variation_002.phpt @@ -0,0 +1,210 @@ +--TEST-- +Test call_user_func_array() function : first parameter variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for function_name + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( call_user_func_array($value, $parameters) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing call_user_func_array() : usage variation *** + +--int 0-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '0' was given, %s(%d) +NULL + +--int 1-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '1' was given, %s(%d) +NULL + +--int 12345-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '12345' was given, %s(%d) +NULL + +--int -12345-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '-2345' was given, %s(%d) +NULL + +--float 10.5-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '10.5' was given, %s(%d) +NULL + +--float -10.5-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '-10.5' was given, %s(%d) +NULL + +--float 12.3456789000e10-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '123456789000' was given, %s(%d) +NULL + +--float -12.3456789000e10-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '-123456789000' was given, %s(%d) +NULL + +--float .5-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '0.5' was given, %s(%d) +NULL + +--empty array-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Array' was given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Array' was given, %s(%d) +NULL + +--associative array-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Array' was given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Array' was given, %s(%d) +NULL + +--uppercase NULL-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--lowercase null-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--lowercase true-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '1' was given, %s(%d) +NULL + +--lowercase false-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--uppercase TRUE-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '1' was given, %s(%d) +NULL + +--uppercase FALSE-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--empty string DQ-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Class A object' was given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, 'Object' was given, %s(%d) +NULL + +--undefined var-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL + +--unset var-- +Error: 2 - call_user_func_array(): First argument is expected to be a valid callback, '' was given, %s(%d) +NULL +===DONE=== diff --git a/ext/standard/tests/general_functions/call_user_func_array_variation_003.phpt b/ext/standard/tests/general_functions/call_user_func_array_variation_003.phpt new file mode 100644 index 000000000..9cf6e4e9f --- /dev/null +++ b/ext/standard/tests/general_functions/call_user_func_array_variation_003.phpt @@ -0,0 +1,185 @@ +--TEST-- +Test call_user_func_array() function : second parameter variation +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, +); + +// loop through each element of the array for parameters + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( call_user_func_array($function_name, $value) ); +}; + +?> +===DONE=== +--EXPECT-- +*** Testing call_user_func_array() : usage variation *** + +--int 0-- +NULL + +--int 1-- +NULL + +--int 12345-- +NULL + +--int -12345-- +NULL + +--float 10.5-- +NULL + +--float -10.5-- +NULL + +--float 12.3456789000e10-- +NULL + +--float -12.3456789000e10-- +NULL + +--float .5-- +NULL + +--uppercase NULL-- +NULL + +--lowercase null-- +NULL + +--lowercase true-- +NULL + +--lowercase false-- +NULL + +--uppercase TRUE-- +NULL + +--uppercase FALSE-- +NULL + +--empty string DQ-- +NULL + +--empty string SQ-- +NULL + +--string DQ-- +NULL + +--string SQ-- +NULL + +--mixed case string-- +NULL + +--heredoc-- +NULL + +--instance of classWithToString-- +NULL + +--instance of classWithoutToString-- +NULL + +--undefined var-- +NULL + +--unset var-- +NULL +===DONE=== diff --git a/ext/standard/tests/general_functions/escapeshellarg_basic-win32.phpt b/ext/standard/tests/general_functions/escapeshellarg_basic-win32.phpt new file mode 100644 index 000000000..888005633 --- /dev/null +++ b/ext/standard/tests/general_functions/escapeshellarg_basic-win32.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test escapeshellarg() function: basic test +--SKIPIF-- + +--FILE-- + +--EXPECT-- +Simple testcase for escapeshellarg() function +string(11) ""Mr O'Neil"" +string(12) ""Mr O\'Neil"" +string(11) "" FILENAME"" +string(2) """" +Done \ No newline at end of file diff --git a/ext/standard/tests/general_functions/escapeshellarg_basic.phpt b/ext/standard/tests/general_functions/escapeshellarg_basic.phpt new file mode 100644 index 000000000..c26915c92 --- /dev/null +++ b/ext/standard/tests/general_functions/escapeshellarg_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test escapeshellarg() function: basic test +--SKIPIF-- + +--FILE-- + +--EXPECT-- +Simple testcase for escapeshellarg() function +string(14) "'Mr O'\''Neil'" +string(15) "'Mr O\'\''Neil'" +string(11) "'%FILENAME'" +string(2) "''" +Done \ No newline at end of file diff --git a/ext/standard/tests/general_functions/escapeshellarg_error.phpt b/ext/standard/tests/general_functions/escapeshellarg_error.phpt new file mode 100644 index 000000000..139a44520 --- /dev/null +++ b/ext/standard/tests/general_functions/escapeshellarg_error.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test escapeshellarg() function : error conditions - wrong numbers of parameters +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing escapeshellarg() : error conditions *** + +-- Testing escapeshellarg() function with no arguments -- + +Warning: escapeshellarg() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing escapeshellarg() function with more than expected no. of arguments -- + +Warning: escapeshellarg() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +-- Testing escapeshellarg() function with a object supplied for argument -- + +Warning: escapeshellarg() expects parameter 1 to be string, object given in %s on line %d +NULL + +-- Testing escapeshellarg() function with a resource supplied for argument -- + +Warning: escapeshellarg() expects parameter 1 to be string, resource given in %s on line %d +NULL + +-- Testing escapeshellarg() function with a array supplied for argument -- + +Warning: escapeshellarg() expects parameter 1 to be string, array given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/general_functions/escapeshellarg_variation1-win32.phpt b/ext/standard/tests/general_functions/escapeshellarg_variation1-win32.phpt new file mode 100644 index 000000000..8f8bc19d8 --- /dev/null +++ b/ext/standard/tests/general_functions/escapeshellarg_variation1-win32.phpt @@ -0,0 +1,140 @@ +--TEST-- +Test escapeshellarg() function : usage variations - different data types as $arg arg +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing escapeshellarg() : usage variations *** + +-- Iteration 1 -- +string(3) ""0"" + +-- Iteration 2 -- +string(3) ""1"" + +-- Iteration 3 -- +string(4) ""12"" + +-- Iteration 4 -- +string(5) ""-12"" + +-- Iteration 5 -- +string(12) ""2147483647"" + +-- Iteration 6 -- +string(6) ""10.5"" + +-- Iteration 7 -- +string(7) ""-10.5"" + +-- Iteration 8 -- +string(10) ""123.4567"" + +-- Iteration 9 -- +string(12) ""0.01234567"" + +-- Iteration 10 -- +string(5) ""0.5"" + +-- Iteration 11 -- +string(2) """" + +-- Iteration 12 -- +string(2) """" + +-- Iteration 13 -- +string(3) ""1"" + +-- Iteration 14 -- +string(2) """" + +-- Iteration 15 -- +string(3) ""1"" + +-- Iteration 16 -- +string(2) """" + +-- Iteration 17 -- +string(2) """" + +-- Iteration 18 -- +string(2) """" + +-- Iteration 19 -- +string(2) """" + +-- Iteration 20 -- +string(2) """" +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/escapeshellarg_variation1.phpt b/ext/standard/tests/general_functions/escapeshellarg_variation1.phpt new file mode 100644 index 000000000..32431a581 --- /dev/null +++ b/ext/standard/tests/general_functions/escapeshellarg_variation1.phpt @@ -0,0 +1,140 @@ +--TEST-- +Test escapeshellarg() function : usage variations - different data types as $y arg +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing escapeshellarg() : usage variations *** + +-- Iteration 1 -- +string(3) "'0'" + +-- Iteration 2 -- +string(3) "'1'" + +-- Iteration 3 -- +string(4) "'12'" + +-- Iteration 4 -- +string(5) "'-12'" + +-- Iteration 5 -- +string(12) "'2147483647'" + +-- Iteration 6 -- +string(6) "'10.5'" + +-- Iteration 7 -- +string(7) "'-10.5'" + +-- Iteration 8 -- +string(10) "'123.4567'" + +-- Iteration 9 -- +string(12) "'0.01234567'" + +-- Iteration 10 -- +string(5) "'0.5'" + +-- Iteration 11 -- +string(2) "''" + +-- Iteration 12 -- +string(2) "''" + +-- Iteration 13 -- +string(3) "'1'" + +-- Iteration 14 -- +string(2) "''" + +-- Iteration 15 -- +string(3) "'1'" + +-- Iteration 16 -- +string(2) "''" + +-- Iteration 17 -- +string(2) "''" + +-- Iteration 18 -- +string(2) "''" + +-- Iteration 19 -- +string(2) "''" + +-- Iteration 20 -- +string(2) "''" +===Done=== diff --git a/ext/standard/tests/general_functions/floatval_basic.phpt b/ext/standard/tests/general_functions/floatval_basic.phpt new file mode 100644 index 000000000..129aa87b3 --- /dev/null +++ b/ext/standard/tests/general_functions/floatval_basic.phpt @@ -0,0 +1,172 @@ +--TEST-- +Testing floatval() and its alias doubleval() Functions +--INI-- +precision = 14 +--FILE-- + 0.0, + "1.0" => 1.0, + "-1.0" => -1.0, + "1.234" => 1.234, + "-1.234" => -1.234, + "1.2e3" => 1.2e3, + "-1.2e3" => -1.2e3, + "10.0000000000000000005" => 10.0000000000000000005, + "10.5e+5" => 10.5e+5, + "1e5" => 1e5, + "-1e5" => -1e5, + "1e5" => 1e-5, + "-1e-1" => -1e-1, + "1e+5" => 1e+5, + "-1e+5" =>-1e+5, + "1E5" => 1E5, + "-1E5" => -1E5, + "1E+5" => 1E+5, + "-1E5" => -1E+5, + ".5e+7" => .5e+7, + "-.5e+7" =>-.5e+7 +); + +/* loop to check that floatval() recognizes different + float values, expected output:float value for valid floating point number */ +echo "*** Testing floatval() with valid float values ***\n"; +foreach ($valid_floats as $key => $value ) { + echo "\n-- Iteration : $key -- \n"; + var_dump( floatval($value) ); +} + +/* loop to check that doubleval() also recognizes different + float values, expected output:float value for valid floating point number */ +echo "\n*** Testing doubleval() with valid float values ***\n"; +foreach ($valid_floats as $key => $value ) { + echo "\n-- Iteration : $key -- \n"; + var_dump( doubleval($value) ); +} + +?> +===DONE=== +--EXPECT-- +*** Testing floatval() with valid float values *** + +-- Iteration : 0.0 -- +float(0) + +-- Iteration : 1.0 -- +float(1) + +-- Iteration : -1.0 -- +float(-1) + +-- Iteration : 1.234 -- +float(1.234) + +-- Iteration : -1.234 -- +float(-1.234) + +-- Iteration : 1.2e3 -- +float(1200) + +-- Iteration : -1.2e3 -- +float(-1200) + +-- Iteration : 10.0000000000000000005 -- +float(10) + +-- Iteration : 10.5e+5 -- +float(1050000) + +-- Iteration : 1e5 -- +float(1.0E-5) + +-- Iteration : -1e5 -- +float(-100000) + +-- Iteration : -1e-1 -- +float(-0.1) + +-- Iteration : 1e+5 -- +float(100000) + +-- Iteration : -1e+5 -- +float(-100000) + +-- Iteration : 1E5 -- +float(100000) + +-- Iteration : -1E5 -- +float(-100000) + +-- Iteration : 1E+5 -- +float(100000) + +-- Iteration : .5e+7 -- +float(5000000) + +-- Iteration : -.5e+7 -- +float(-5000000) + +*** Testing doubleval() with valid float values *** + +-- Iteration : 0.0 -- +float(0) + +-- Iteration : 1.0 -- +float(1) + +-- Iteration : -1.0 -- +float(-1) + +-- Iteration : 1.234 -- +float(1.234) + +-- Iteration : -1.234 -- +float(-1.234) + +-- Iteration : 1.2e3 -- +float(1200) + +-- Iteration : -1.2e3 -- +float(-1200) + +-- Iteration : 10.0000000000000000005 -- +float(10) + +-- Iteration : 10.5e+5 -- +float(1050000) + +-- Iteration : 1e5 -- +float(1.0E-5) + +-- Iteration : -1e5 -- +float(-100000) + +-- Iteration : -1e-1 -- +float(-0.1) + +-- Iteration : 1e+5 -- +float(100000) + +-- Iteration : -1e+5 -- +float(-100000) + +-- Iteration : 1E5 -- +float(100000) + +-- Iteration : -1E5 -- +float(-100000) + +-- Iteration : 1E+5 -- +float(100000) + +-- Iteration : .5e+7 -- +float(5000000) + +-- Iteration : -.5e+7 -- +float(-5000000) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/floatval_error.phpt b/ext/standard/tests/general_functions/floatval_error.phpt new file mode 100644 index 000000000..38868a64f --- /dev/null +++ b/ext/standard/tests/general_functions/floatval_error.phpt @@ -0,0 +1,40 @@ +--TEST-- +Testing floatval() and its alias doubleval() : error conditions - wrong numbers of parametersns +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing floatval() and doubleval() : error conditions *** + +-- Testing floatval() and doubleval() function with no arguments -- + +Warning: Wrong parameter count for floatval() in %s on line %d +NULL + +Warning: Wrong parameter count for doubleval() in %s on line %d +NULL + +-- Testing floatval() and doubleval() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for floatval() in %s on line %d +NULL + +Warning: Wrong parameter count for doubleval() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/floatval_variation1.phpt b/ext/standard/tests/general_functions/floatval_variation1.phpt new file mode 100644 index 000000000..83925b89b --- /dev/null +++ b/ext/standard/tests/general_functions/floatval_variation1.phpt @@ -0,0 +1,154 @@ +--TEST-- +Testing floatval() and its alias doubleval() functions : usage variations - different data types as $y arg +--FILE-- + -2147483648, // max negative integer value + "2147483647" => 2147483648, // max positive integer value + "file resoruce" => $fp, + "directory resource" => $dfp, + "\"0.0\"" => "0.0", // string + "\"1.0\"" => "1.0", + "\"-1.3e3\"" => "-1.3e3", + "\"bob-1.3e3\"" => "bob-1.3e3", + "\"10 Some dollars\"" => "10 Some dollars", + "\"10.2 Some Dollars\"" => "10.2 Some Dollars", + "\"10.0 dollar\" + 1" => "10.0 dollar" + 1, + "\"10.0 dollar\" + 1.0" => "10.0 dollar" + 1.0, + "\"\"" => "", + "true" => true, + "NULL" => NULL, + "null" => null, + ); +/* loop through the $not_float_types to see working of + floatval() on non float types, expected output: float value valid floating point numbers */ +echo "\n*** Testing floatval() on non floating types ***\n"; +foreach ($not_float_types as $key => $type ) { + echo "\n-- Iteration : $key --\n"; + var_dump( floatval($type) ); +} + +echo "\n*** Testing doubleval() on non floating types ***\n"; + +/* loop through the $not_float_types to see working of + doubleval() on non float types, expected output: float value valid floating point numbers */ +foreach ($not_float_types as $key => $type ) { + echo "\n-- Iteration : $key --\n"; + var_dump( doubleval($type) ); +} +?> +===DONE=== +--EXPECTF-- +*** Testing floatval() on non floating types *** + +-- Iteration : -2147483648 -- +float(-2147483648) + +-- Iteration : 2147483647 -- +float(2147483648) + +-- Iteration : file resoruce -- +float(%d) + +-- Iteration : directory resource -- +float(%d) + +-- Iteration : "0.0" -- +float(0) + +-- Iteration : "1.0" -- +float(1) + +-- Iteration : "-1.3e3" -- +float(-1300) + +-- Iteration : "bob-1.3e3" -- +float(0) + +-- Iteration : "10 Some dollars" -- +float(10) + +-- Iteration : "10.2 Some Dollars" -- +float(10.2) + +-- Iteration : "10.0 dollar" + 1 -- +float(11) + +-- Iteration : "10.0 dollar" + 1.0 -- +float(11) + +-- Iteration : "" -- +float(0) + +-- Iteration : true -- +float(1) + +-- Iteration : NULL -- +float(0) + +-- Iteration : null -- +float(0) + +*** Testing doubleval() on non floating types *** + +-- Iteration : -2147483648 -- +float(-2147483648) + +-- Iteration : 2147483647 -- +float(2147483648) + +-- Iteration : file resoruce -- +float(%d) + +-- Iteration : directory resource -- +float(%d) + +-- Iteration : "0.0" -- +float(0) + +-- Iteration : "1.0" -- +float(1) + +-- Iteration : "-1.3e3" -- +float(-1300) + +-- Iteration : "bob-1.3e3" -- +float(0) + +-- Iteration : "10 Some dollars" -- +float(10) + +-- Iteration : "10.2 Some Dollars" -- +float(10.2) + +-- Iteration : "10.0 dollar" + 1 -- +float(11) + +-- Iteration : "10.0 dollar" + 1.0 -- +float(11) + +-- Iteration : "" -- +float(0) + +-- Iteration : true -- +float(1) + +-- Iteration : NULL -- +float(0) + +-- Iteration : null -- +float(0) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/get_defined_vars_basic.phpt b/ext/standard/tests/general_functions/get_defined_vars_basic.phpt new file mode 100644 index 000000000..3aa6e72a9 --- /dev/null +++ b/ext/standard/tests/general_functions/get_defined_vars_basic.phpt @@ -0,0 +1,152 @@ +--TEST-- +Test get_defined_vars() function +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for get_defined_vars() function + + +-- Get variables at global scope -- + +-- Function f1() called -- + +-- ..define some local variables -- +array(6) { + ["vars"]=> + array(0) { + } + ["i"]=> + int(123) + ["f"]=> + float(123.456) + ["b"]=> + bool(false) + ["s"]=> + string(11) "Hello World" + ["arr"]=> + array(4) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) + [3]=> + int(4) + } +} + + -- Function f2() called -- + +-- ...define some variables -- +array(6) { + ["vars"]=> + array(0) { + } + ["i"]=> + int(456) + ["f"]=> + float(456.678) + ["b"]=> + bool(true) + ["s"]=> + string(9) "Goodnight" + ["arr"]=> + array(2) { + [0]=> + string(3) "foo" + [1]=> + string(3) "bar" + } +} + +-- ...define some more variables -- +array(9) { + ["vars"]=> + array(0) { + } + ["i"]=> + int(456) + ["f"]=> + float(456.678) + ["b"]=> + bool(true) + ["s"]=> + string(9) "Goodnight" + ["arr"]=> + array(2) { + [0]=> + string(3) "foo" + [1]=> + string(3) "bar" + } + ["i1"]=> + int(456) + ["f1"]=> + float(456.678) + ["b1"]=> + bool(true) +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/get_extension_funcs_basic.phpt b/ext/standard/tests/general_functions/get_extension_funcs_basic.phpt new file mode 100644 index 000000000..d87eb4c0c --- /dev/null +++ b/ext/standard/tests/general_functions/get_extension_funcs_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test get_extension_funcs() function: basic test +--FILE-- + +===DONE=== +--EXPECTF-- +Simple testcase for get_extension_funcs() function +string(5) "array" +bool(true) +===DONE=== diff --git a/ext/standard/tests/general_functions/get_extension_funcs_error.phpt b/ext/standard/tests/general_functions/get_extension_funcs_error.phpt new file mode 100644 index 000000000..e1d51d43a --- /dev/null +++ b/ext/standard/tests/general_functions/get_extension_funcs_error.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test get_extension_funcs() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing get_extension_funcs() : error conditions *** + +-- Too few arguments -- + +Warning: Wrong parameter count for get_extension_funcs() in %s on line %d +NULL + +-- Too many arguments -- + +Warning: Wrong parameter count for get_extension_funcs() in %s on line %d +NULL + +-- Invalid extension name -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/general_functions/get_extension_funcs_variation.phpt b/ext/standard/tests/general_functions/get_extension_funcs_variation.phpt new file mode 100644 index 000000000..7204eaa6e --- /dev/null +++ b/ext/standard/tests/general_functions/get_extension_funcs_variation.phpt @@ -0,0 +1,135 @@ +--TEST-- +Test get_extension_funcs() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing get_extension_funcs() function: with unexpected inputs for 'module_name' argument *** +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- +bool(false) +-- Iteration 4 -- +bool(false) +-- Iteration 5 -- +bool(false) +-- Iteration 6 -- +bool(false) +-- Iteration 7 -- +bool(false) +-- Iteration 8 -- +bool(false) +-- Iteration 9 -- +bool(false) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 13 -- +bool(false) +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- +bool(false) +-- Iteration 20 -- +bool(false) +-- Iteration 21 -- +bool(false) +-- Iteration 22 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/general_functions/get_include_path_basic.phpt b/ext/standard/tests/general_functions/get_include_path_basic.phpt new file mode 100644 index 000000000..7bb64c10e --- /dev/null +++ b/ext/standard/tests/general_functions/get_include_path_basic.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test get_include_path() function +--INI-- +include_path=. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing get_include_path() +string(1) "." +PASSED + +Error cases: + +Warning: Wrong parameter count for get_include_path() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/get_included_files.phpt b/ext/standard/tests/general_functions/get_included_files.phpt new file mode 100644 index 000000000..f17eba5d6 --- /dev/null +++ b/ext/standard/tests/general_functions/get_included_files.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test get_include_files() function +--INI-- +include_path=. +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing get_included_files() + +-- List included files at start -- +array(1) { + [0]=> + string(%d) "%sget_included_files.php" +} + +-- List included files atfter including inc1 - +array(2) { + [0]=> + string(%d) "%sget_included_files.php" + [1]=> + string(%d) "%sget_included_files_inc1.inc" +} + +-- List included files atfter including inc2 which will include inc3 which includes inc1 -- +array(4) { + [0]=> + string(%d) "%sget_included_files.php" + [1]=> + string(%d) "%sget_included_files_inc1.inc" + [2]=> + string(%d) "%sget_included_files_inc2.inc" + [3]=> + string(%d) "%sget_included_files_inc3.inc" +} + +-- Error cases -- + +Warning: Wrong parameter count for get_included_files() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/get_included_files_inc1.inc b/ext/standard/tests/general_functions/get_included_files_inc1.inc new file mode 100644 index 000000000..344e300e0 --- /dev/null +++ b/ext/standard/tests/general_functions/get_included_files_inc1.inc @@ -0,0 +1,3 @@ + diff --git a/ext/standard/tests/general_functions/get_included_files_inc2.inc b/ext/standard/tests/general_functions/get_included_files_inc2.inc new file mode 100644 index 000000000..318eba00c --- /dev/null +++ b/ext/standard/tests/general_functions/get_included_files_inc2.inc @@ -0,0 +1,4 @@ + diff --git a/ext/standard/tests/general_functions/get_included_files_inc3.inc b/ext/standard/tests/general_functions/get_included_files_inc3.inc new file mode 100644 index 000000000..f666edf2b --- /dev/null +++ b/ext/standard/tests/general_functions/get_included_files_inc3.inc @@ -0,0 +1,4 @@ + diff --git a/ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt b/ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt new file mode 100644 index 000000000..cfa4dcc68 --- /dev/null +++ b/ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test get_magic_quotes_gpc() function +--INI-- +magic_quotes_gpc = 0 +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for get_magic_quotes_gpc() function + +-- magic quotes gpc set in INI file: 0 -- + +-- Set magic quotes gpc to 1 - not allowed so should fail! -- +bool(false) + +-- magic quotes gpc after set: 0 -- + +-- Set magic quotes gpc to 0: -- +bool(false) + +-- magic quotes gpc after set: 0 -- + +-- Error cases -- +int(0) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt b/ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt new file mode 100644 index 000000000..94aa3a73e --- /dev/null +++ b/ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test get_magic_quotes_runtime() function +--INI- +magic_quotes_runtime = 0 +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for get_magic_quotes_runtime() function + +-- magic quotes runtime set in INI file: 0 -- + +-- Set magic quotes runtime to 1: -- +bool(true) + +-- magic quotes runtime after set: 1 -- + +-- Set magic quotes runtime to 0: -- +bool(true) + +-- magic quotes runtime after set: 0 -- + +-- Set magic quotes runtime to 1: -- +bool(true) + +-- magic quotes runtime after set: 1 -- + +-- Error cases -- +int(1) +===DONE=== diff --git a/ext/standard/tests/general_functions/getmypid_basic.phpt b/ext/standard/tests/general_functions/getmypid_basic.phpt new file mode 100644 index 000000000..732ae4eb7 --- /dev/null +++ b/ext/standard/tests/general_functions/getmypid_basic.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test getmypid() function: basic test +--FILE-- + +--EXPECTF-- +Simple testcase for getmypid() function +int(%d) +int(%d) +Done \ No newline at end of file diff --git a/ext/standard/tests/general_functions/getrusage_basic.phpt b/ext/standard/tests/general_functions/getrusage_basic.phpt new file mode 100644 index 000000000..c9b34597c --- /dev/null +++ b/ext/standard/tests/general_functions/getrusage_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test getrusage() function: basic test +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +Simple testcase for getrusage() function +User time used (seconds) %d +User time used (microseconds) %d +===DONE=== diff --git a/ext/standard/tests/general_functions/getrusage_error.phpt b/ext/standard/tests/general_functions/getrusage_error.phpt new file mode 100644 index 000000000..b13d4f0cd --- /dev/null +++ b/ext/standard/tests/general_functions/getrusage_error.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test getrusage() function : error conditions - incorrect number of args +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getrusage() : error conditions *** + +-- Testing getrusage() function with more than expected no. of arguments -- + +Warning: getrusage() expects at most 1 parameter, 2 given in %s on line %d + +-- Testing getrusage() function with invalid argument - non-numeric STRING-- + +Warning: getrusage() expects parameter 1 to be long, string given in %s on line %d + +-- Testing getrusage() function with invalid argument - ARRAY-- + +Warning: getrusage() expects parameter 1 to be long, array given in %s on line %d + +-- Testing getrusage() function with invalid argument - OBJECT -- + +Warning: getrusage() expects parameter 1 to be long, object given in %s on line %d + +-- Testing getrusage() function with invalid argument - RESOURCE -- + +Warning: getrusage() expects parameter 1 to be long, resource given in %s on line %d +===DONE=== diff --git a/ext/standard/tests/general_functions/getrusage_variation1.phpt b/ext/standard/tests/general_functions/getrusage_variation1.phpt new file mode 100644 index 000000000..3daf9e5e6 --- /dev/null +++ b/ext/standard/tests/general_functions/getrusage_variation1.phpt @@ -0,0 +1,142 @@ +--TEST-- +Test getrusage() function : usage variation - diff data types as $who arg +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getrusage() : usage variations *** + +-- Iteration 1 -- +User time used (microseconds) %d + +-- Iteration 2 -- +User time used (microseconds) %d + +-- Iteration 3 -- +User time used (microseconds) %d + +-- Iteration 4 -- +User time used (microseconds) %d + +-- Iteration 5 -- +User time used (microseconds) %d + +-- Iteration 6 -- +User time used (microseconds) %d + +-- Iteration 7 -- +User time used (microseconds) %d + +-- Iteration 8 -- +User time used (microseconds) %d + +-- Iteration 9 -- +User time used (microseconds) %d + +-- Iteration 10 -- +User time used (microseconds) %d + +-- Iteration 11 -- +User time used (microseconds) %d + +-- Iteration 12 -- +User time used (microseconds) %d + +-- Iteration 13 -- +User time used (microseconds) %d + +-- Iteration 14 -- +User time used (microseconds) %d + +-- Iteration 15 -- +User time used (microseconds) %d + +-- Iteration 16 -- +User time used (microseconds) %d + +-- Iteration 17 -- +User time used (microseconds) %d + +-- Iteration 18 -- +User time used (microseconds) %d + +-- Iteration 19 -- +User time used (microseconds) %d + +-- Iteration 20 -- +User time used (microseconds) %d + +-- Iteration 21 -- +User time used (microseconds) %d +===DONE=== diff --git a/ext/standard/tests/general_functions/is_callable.phpt b/ext/standard/tests/general_functions/is_callable.phpt deleted file mode 100644 index b15703fed..000000000 --- a/ext/standard/tests/general_functions/is_callable.phpt +++ /dev/null @@ -1,1119 +0,0 @@ ---TEST-- -Test is_callable() function ---INI-- -precision=14 -error_reporting = E_ALL & ~E_NOTICE | E_STRICT ---FILE-- -class_object1 = new object_class(); - $this->no_member_class_object = new no_member_class(); - } -} -/* objects of different classes */ -$obj = new contains_object_class; -$temp_class_obj = new object_class(); - -/* object which is unset */ -$unset_obj = new object_class(); -unset($unset_obj); - -/* check is_callable() on static method */ -echo "\n** Testing behavior of is_callable() on static methods **\n"; -var_dump( is_callable('object_class::foo()', true) ); //expected: true -var_dump( is_callable('object_class::foo()') ); //expected: false - -echo "\n** Testing normal operations of is_callable() on objects **\n"; -$objects = array ( - new object_class, - new no_member_class, - new contains_object_class, - $obj, - $obj->class_object1, - $obj->no_member_class_object, - $temp_class_obj, - @$unset_obj -); - -/* loop to check whether given object/string has valid given method name - * expected: true if valid callback - * false otherwise - */ -$loop_counter = 1; -foreach($objects as $object) { - echo "--- Outerloop iteration $loop_counter ---\n"; - $methods = array ( - array( $object, 'foo1' ), - array( $object, 'foo2' ), - array( $object, 'foo3' ), - array( $object, 'x123' ), - array( $object, 'null' ), - array( $object, 'TRUE' ), - array( $object, '123' ), - array( @$temp_class_obj->value, 100 ), - array( $object, 'func' ), - array( 'object_class', 'foo1' ), - ); - /* use check_iscallable_objects() to check whether given object/string - has valid method name */ - check_iscallable_objects($methods); - $loop_counter++; -} - -echo "\n*** Testing is_callable() on invalid function names ***\n"; -/* check on unset variables */ -$unset_var = 10; -unset ($unset_var); - -/* opening file resource type */ -$file_handle = fopen (__FILE__, "r"); - -$variants = array ( - NULL, // NULL as argument - 0, // zero as argument - 1234567890, // positive value - -100123456782, // negative value - -2.000000, // negative float value - .567, // positive float value - FALSE, // boolean value - array(1, 2, 3), // array - @$unset_var, - @$undef_var, //undefined variable - $file_handle -); -/* use check_iscallable() to check whether given variable is valid function name - * expected: false - */ -check_iscallable($variants); - -echo "\n*** Testing error conditions ***\n"; -/* passing zero argument */ -var_dump( is_callable() ); -/* passing more than required arguments */ -var_dump( is_callable("string", TRUE, $callable_name, "EXTRA") ); - -/* closing resources used */ -fclose($file_handle); - -echo "Done\n"; -?> ---EXPECTF-- -*** Testing is_callable() on defined functions *** --- Iteration 1 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -someFunction --- Iteration 2 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -x123 --- Iteration 3 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -NULL --- Iteration 4 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -false --- Iteration 5 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -Hello_World - -*** Testing is_callable() on undefined functions *** --- Iteration 1 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) - --- Iteration 2 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) - --- Iteration 3 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) - --- Iteration 4 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) - --- Iteration 5 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -12356 --- Iteration 6 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) - --- Iteration 7 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -\0 --- Iteration 8 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -hello world --- Iteration 9 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -hello world --- Iteration 10 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -welcome --- Iteration 11 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -welcome\0 --- Iteration 12 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -==%%%***$$$@@@!! --- Iteration 13 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -false --- Iteration 14 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -8 --- Iteration 15 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -\t --- Iteration 16 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -\007 --- Iteration 17 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -123 --- Iteration 18 -- -bool(false) -bool(true) -bool(true) -bool(false) -bool(false) -echo() - -*** Testing is_callable() on objects *** - -** Testing behavior of is_callable() on static methods ** -bool(true) -bool(false) - -** Testing normal operations of is_callable() on objects ** ---- Outerloop iteration 1 --- --- Innerloop iteration 1 of Outerloop iteration 1 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 1 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 1 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 1 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::x123 --- Innerloop iteration 5 of Outerloop iteration 1 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::null --- Innerloop iteration 6 of Outerloop iteration 1 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 1 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::123 --- Innerloop iteration 8 of Outerloop iteration 1 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 1 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::func --- Innerloop iteration 10 of Outerloop iteration 1 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 2 --- --- Innerloop iteration 1 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::x123 --- Innerloop iteration 5 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::null --- Innerloop iteration 6 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::123 --- Innerloop iteration 8 of Outerloop iteration 2 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 2 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::func --- Innerloop iteration 10 of Outerloop iteration 2 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 3 --- --- Innerloop iteration 1 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::x123 --- Innerloop iteration 5 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::null --- Innerloop iteration 6 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 3 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::123 --- Innerloop iteration 8 of Outerloop iteration 3 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 3 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -contains_object_class::func --- Innerloop iteration 10 of Outerloop iteration 3 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 4 --- --- Innerloop iteration 1 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::x123 --- Innerloop iteration 5 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::null --- Innerloop iteration 6 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 4 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -contains_object_class::123 --- Innerloop iteration 8 of Outerloop iteration 4 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 4 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -contains_object_class::func --- Innerloop iteration 10 of Outerloop iteration 4 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 5 --- --- Innerloop iteration 1 of Outerloop iteration 5 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 5 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 5 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 5 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::x123 --- Innerloop iteration 5 of Outerloop iteration 5 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::null --- Innerloop iteration 6 of Outerloop iteration 5 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 5 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::123 --- Innerloop iteration 8 of Outerloop iteration 5 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 5 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::func --- Innerloop iteration 10 of Outerloop iteration 5 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 6 --- --- Innerloop iteration 1 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::x123 --- Innerloop iteration 5 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::null --- Innerloop iteration 6 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::123 --- Innerloop iteration 8 of Outerloop iteration 6 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 6 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -no_member_class::func --- Innerloop iteration 10 of Outerloop iteration 6 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 7 --- --- Innerloop iteration 1 of Outerloop iteration 7 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::foo1 --- Innerloop iteration 2 of Outerloop iteration 7 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo2 --- Innerloop iteration 3 of Outerloop iteration 7 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::foo3 --- Innerloop iteration 4 of Outerloop iteration 7 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::x123 --- Innerloop iteration 5 of Outerloop iteration 7 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::null --- Innerloop iteration 6 of Outerloop iteration 7 -- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -object_class::TRUE --- Innerloop iteration 7 of Outerloop iteration 7 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::123 --- Innerloop iteration 8 of Outerloop iteration 7 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 7 -- -bool(false) -bool(true) -bool(false) -bool(true) -bool(false) -object_class::func --- Innerloop iteration 10 of Outerloop iteration 7 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 ---- Outerloop iteration 8 --- --- Innerloop iteration 1 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 2 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 3 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 4 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 5 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 6 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 7 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 8 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 9 of Outerloop iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Innerloop iteration 10 of Outerloop iteration 8 -- - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -bool(true) - -Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d -bool(true) -object_class::foo1 - -*** Testing is_callable() on invalid function names *** --- Iteration 1 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) - --- Iteration 2 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -0 --- Iteration 3 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -1234567890 --- Iteration 4 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) --100123456782 --- Iteration 5 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) --2 --- Iteration 6 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -0.567 --- Iteration 7 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) - --- Iteration 8 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Array --- Iteration 9 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) - --- Iteration 10 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) - --- Iteration 11 -- -bool(false) -bool(false) -bool(false) -bool(false) -bool(false) -Resource id #5 - -*** Testing error conditions *** - -Warning: Wrong parameter count for is_callable() in %s on line %d -NULL - -Warning: Wrong parameter count for is_callable() in %s on line %d -NULL -Done diff --git a/ext/standard/tests/general_functions/is_callable_basic1.phpt b/ext/standard/tests/general_functions/is_callable_basic1.phpt new file mode 100644 index 000000000..e836d734f --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_basic1.phpt @@ -0,0 +1,109 @@ +--TEST-- +Test is_callable() function : usage variations - defined functions +--INI-- +precision=14 +error_reporting = E_ALL & ~E_NOTICE | E_STRICT +--FILE-- + +===DONE=== +--EXPECT--- +*** Testing is_callable() on defined functions *** +-- Iteration 1 -- +bool(true) +bool(true) +bool(true) +someFunction +bool(true) +bool(true) +someFunction +-- Iteration 2 -- +bool(true) +bool(true) +bool(true) +x123 +bool(true) +bool(true) +x123 +-- Iteration 3 -- +bool(true) +bool(true) +bool(true) +NULL +bool(true) +bool(true) +NULL +-- Iteration 4 -- +bool(true) +bool(true) +bool(true) +false +bool(true) +bool(true) +false +-- Iteration 5 -- +bool(true) +bool(true) +bool(true) +Hello_World +bool(true) +bool(true) +Hello_World +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/is_callable_basic2.phpt b/ext/standard/tests/general_functions/is_callable_basic2.phpt new file mode 100644 index 000000000..b438ef78c --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_basic2.phpt @@ -0,0 +1,835 @@ +--TEST-- +Test is_callable() function : usage variations - on objects +--INI-- +precision=14 +error_reporting = E_ALL & ~E_NOTICE | E_STRICT +--FILE-- +class_object1 = new object_class(); + $this->no_member_class_object = new no_member_class(); + } +} +/* objects of different classes */ +$obj = new contains_object_class; +$temp_class_obj = new object_class(); + +/* object which is unset */ +$unset_obj = new object_class(); +unset($unset_obj); + +/* check is_callable() on static method */ +echo "\n** Testing behavior of is_callable() on static methods **\n"; +var_dump( is_callable('object_class::foo()', true) ); //expected: true +var_dump( is_callable('object_class::foo()') ); //expected: false + +echo "\n** Testing normal operations of is_callable() on objects **\n"; +$objects = array ( + new object_class, + new no_member_class, + new contains_object_class, + $obj, + $obj->class_object1, + $obj->no_member_class_object, + $temp_class_obj, + @$unset_obj +); + +/* loop to check whether given object/string has valid given method name + * expected: true if valid callback + * false otherwise + */ +$loop_counter = 1; +foreach($objects as $object) { + echo "--- Outerloop iteration $loop_counter ---\n"; + $methods = array ( + array( $object, 'foo1' ), + array( $object, 'foo2' ), + array( $object, 'foo3' ), + array( $object, 'x123' ), + array( $object, 'null' ), + array( $object, 'TRUE' ), + array( $object, '123' ), + array( @$temp_class_obj->value, 100 ), + array( $object, 'func' ), + array( 'object_class', 'foo1' ), + ); + /* use check_iscallable_objects() to check whether given object/string + has valid method name */ + check_iscallable_objects($methods); + $loop_counter++; +} + +?> +===DONE=== +--EXPECTF-- +*** Testing is_callable() on objects *** + +** Testing behavior of is_callable() on static methods ** +bool(true) +bool(false) + +** Testing normal operations of is_callable() on objects ** +--- Outerloop iteration 1 --- +-- Innerloop iteration 1 of Outerloop iteration 1 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::foo1 +bool(true) +object_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 1 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo2 +bool(false) +object_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 1 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo3 +bool(false) +object_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 1 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::x123 +bool(true) +object_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 1 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::null +bool(true) +object_class::null +-- Innerloop iteration 6 of Outerloop iteration 1 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::TRUE +bool(true) +object_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 1 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::123 +bool(false) +object_class::123 +-- Innerloop iteration 8 of Outerloop iteration 1 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 1 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::func +bool(false) +object_class::func +-- Innerloop iteration 10 of Outerloop iteration 1 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 2 --- +-- Innerloop iteration 1 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo1 +bool(false) +no_member_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo2 +bool(false) +no_member_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo3 +bool(false) +no_member_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::x123 +bool(false) +no_member_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::null +bool(false) +no_member_class::null +-- Innerloop iteration 6 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::TRUE +bool(false) +no_member_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::123 +bool(false) +no_member_class::123 +-- Innerloop iteration 8 of Outerloop iteration 2 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 2 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::func +bool(false) +no_member_class::func +-- Innerloop iteration 10 of Outerloop iteration 2 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 3 --- +-- Innerloop iteration 1 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo1 +bool(false) +contains_object_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo2 +bool(false) +contains_object_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo3 +bool(false) +contains_object_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::x123 +bool(false) +contains_object_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::null +bool(false) +contains_object_class::null +-- Innerloop iteration 6 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::TRUE +bool(false) +contains_object_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 3 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::123 +bool(false) +contains_object_class::123 +-- Innerloop iteration 8 of Outerloop iteration 3 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 3 -- +bool(true) +bool(true) +bool(true) +bool(true) +contains_object_class::func +bool(true) +contains_object_class::func +-- Innerloop iteration 10 of Outerloop iteration 3 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 4 --- +-- Innerloop iteration 1 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo1 +bool(false) +contains_object_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo2 +bool(false) +contains_object_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::foo3 +bool(false) +contains_object_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::x123 +bool(false) +contains_object_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::null +bool(false) +contains_object_class::null +-- Innerloop iteration 6 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::TRUE +bool(false) +contains_object_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 4 -- +bool(false) +bool(true) +bool(false) +bool(true) +contains_object_class::123 +bool(false) +contains_object_class::123 +-- Innerloop iteration 8 of Outerloop iteration 4 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 4 -- +bool(true) +bool(true) +bool(true) +bool(true) +contains_object_class::func +bool(true) +contains_object_class::func +-- Innerloop iteration 10 of Outerloop iteration 4 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 5 --- +-- Innerloop iteration 1 of Outerloop iteration 5 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::foo1 +bool(true) +object_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 5 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo2 +bool(false) +object_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 5 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo3 +bool(false) +object_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 5 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::x123 +bool(true) +object_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 5 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::null +bool(true) +object_class::null +-- Innerloop iteration 6 of Outerloop iteration 5 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::TRUE +bool(true) +object_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 5 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::123 +bool(false) +object_class::123 +-- Innerloop iteration 8 of Outerloop iteration 5 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 5 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::func +bool(false) +object_class::func +-- Innerloop iteration 10 of Outerloop iteration 5 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 6 --- +-- Innerloop iteration 1 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo1 +bool(false) +no_member_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo2 +bool(false) +no_member_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::foo3 +bool(false) +no_member_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::x123 +bool(false) +no_member_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::null +bool(false) +no_member_class::null +-- Innerloop iteration 6 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::TRUE +bool(false) +no_member_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::123 +bool(false) +no_member_class::123 +-- Innerloop iteration 8 of Outerloop iteration 6 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 6 -- +bool(false) +bool(true) +bool(false) +bool(true) +no_member_class::func +bool(false) +no_member_class::func +-- Innerloop iteration 10 of Outerloop iteration 6 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 7 --- +-- Innerloop iteration 1 of Outerloop iteration 7 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::foo1 +bool(true) +object_class::foo1 +-- Innerloop iteration 2 of Outerloop iteration 7 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo2 +bool(false) +object_class::foo2 +-- Innerloop iteration 3 of Outerloop iteration 7 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::foo3 +bool(false) +object_class::foo3 +-- Innerloop iteration 4 of Outerloop iteration 7 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::x123 +bool(true) +object_class::x123 +-- Innerloop iteration 5 of Outerloop iteration 7 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::null +bool(true) +object_class::null +-- Innerloop iteration 6 of Outerloop iteration 7 -- +bool(true) +bool(true) +bool(true) +bool(true) +object_class::TRUE +bool(true) +object_class::TRUE +-- Innerloop iteration 7 of Outerloop iteration 7 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::123 +bool(false) +object_class::123 +-- Innerloop iteration 8 of Outerloop iteration 7 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 7 -- +bool(false) +bool(true) +bool(false) +bool(true) +object_class::func +bool(false) +object_class::func +-- Innerloop iteration 10 of Outerloop iteration 7 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +--- Outerloop iteration 8 --- +-- Innerloop iteration 1 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 2 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 3 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 4 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 5 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 6 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 7 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 8 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 9 of Outerloop iteration 8 -- +bool(false) +bool(false) +bool(false) +bool(false) +Array +bool(false) +Array +-- Innerloop iteration 10 of Outerloop iteration 8 -- + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +bool(true) +object_class::foo1 + +Strict Standards: Non-static method object_class::foo1() cannot be called statically in %s on line %d +bool(true) +object_class::foo1 +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/is_callable_error.phpt b/ext/standard/tests/general_functions/is_callable_error.phpt new file mode 100644 index 000000000..b4acc0460 --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test is_callable() function +--INI-- +precision=14 +error_reporting = E_ALL & ~E_NOTICE | E_STRICT +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing error conditions *** + +-- Testing is_callable() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for is_callable() in %s on line %d +NULL + +-- Testing is_callable() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for is_callable() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/is_callable_variation1.phpt b/ext/standard/tests/general_functions/is_callable_variation1.phpt new file mode 100644 index 000000000..cfc14bbd9 --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_variation1.phpt @@ -0,0 +1,208 @@ +--TEST-- +Test is_callable() function : usage variations - undefined functions +--INI-- +precision=14 +error_reporting = E_ALL & ~E_NOTICE | E_STRICT +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing is_callable() on undefined functions *** +-- Iteration 1 -- +bool(false) +bool(true) +bool(true) + +bool(false) +bool(false) + +-- Iteration 2 -- +bool(false) +bool(true) +bool(true) + +bool(false) +bool(false) + +-- Iteration 3 -- +bool(false) +bool(true) +bool(true) + +bool(false) +bool(false) + +-- Iteration 4 -- +bool(false) +bool(true) +bool(true) + +bool(false) +bool(false) + +-- Iteration 5 -- +bool(false) +bool(true) +bool(true) +12356 +bool(false) +bool(false) +12356 +-- Iteration 6 -- +bool(false) +bool(true) +bool(true) + +bool(false) +bool(false) + +-- Iteration 7 -- +bool(false) +bool(true) +bool(true) +\0 +bool(false) +bool(false) +\0 +-- Iteration 8 -- +bool(false) +bool(true) +bool(true) +hello world +bool(false) +bool(false) +hello world +-- Iteration 9 -- +bool(false) +bool(true) +bool(true) +hello world +bool(false) +bool(false) +hello world +-- Iteration 10 -- +bool(false) +bool(true) +bool(true) +welcome +bool(false) +bool(false) +welcome +-- Iteration 11 -- +bool(false) +bool(true) +bool(true) +welcome\0 +bool(false) +bool(false) +welcome\0 +-- Iteration 12 -- +bool(false) +bool(true) +bool(true) +==%%%***$$$@@@!! +bool(false) +bool(false) +==%%%***$$$@@@!! +-- Iteration 13 -- +bool(false) +bool(true) +bool(true) +false +bool(false) +bool(false) +false +-- Iteration 14 -- +bool(false) +bool(true) +bool(true) +8 +bool(false) +bool(false) +8 +-- Iteration 15 -- +bool(false) +bool(true) +bool(true) +\t +bool(false) +bool(false) +\t +-- Iteration 16 -- +bool(false) +bool(true) +bool(true) +\007 +bool(false) +bool(false) +\007 +-- Iteration 17 -- +bool(false) +bool(true) +bool(true) +123 +bool(false) +bool(false) +123 +-- Iteration 18 -- +bool(false) +bool(true) +bool(true) +echo() +bool(false) +bool(false) +echo() +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/is_callable_variation2.phpt b/ext/standard/tests/general_functions/is_callable_variation2.phpt new file mode 100644 index 000000000..b94a446dc --- /dev/null +++ b/ext/standard/tests/general_functions/is_callable_variation2.phpt @@ -0,0 +1,154 @@ +--TEST-- +Test is_callable() function : usage variations - on invalid function names +--INI-- +precision=14 +error_reporting = E_ALL & ~E_NOTICE | E_STRICT +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing is_callable() on invalid function names *** +-- Iteration 1 -- +bool(false) +bool(false) +bool(false) + +bool(false) +bool(false) + +-- Iteration 2 -- +bool(false) +bool(false) +bool(false) +0 +bool(false) +bool(false) +0 +-- Iteration 3 -- +bool(false) +bool(false) +bool(false) +1234567890 +bool(false) +bool(false) +1234567890 +-- Iteration 4 -- +bool(false) +bool(false) +bool(false) +-100123456782 +bool(false) +bool(false) +-100123456782 +-- Iteration 5 -- +bool(false) +bool(false) +bool(false) +-2 +bool(false) +bool(false) +-2 +-- Iteration 6 -- +bool(false) +bool(false) +bool(false) +0.567 +bool(false) +bool(false) +0.567 +-- Iteration 7 -- +bool(false) +bool(false) +bool(false) + +bool(false) +bool(false) + +-- Iteration 8 -- +bool(false) +bool(false) +bool(false) +Array +bool(false) +bool(false) +Array +-- Iteration 9 -- +bool(false) +bool(false) +bool(false) + +bool(false) +bool(false) + +-- Iteration 10 -- +bool(false) +bool(false) +bool(false) + +bool(false) +bool(false) + +-- Iteration 11 -- +bool(false) +bool(false) +bool(false) +Resource id #%d +bool(false) +bool(false) +Resource id #%d +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/parse_ini_file.phpt b/ext/standard/tests/general_functions/parse_ini_file.phpt index 399a224db..156ccb0a9 100644 --- a/ext/standard/tests/general_functions/parse_ini_file.phpt +++ b/ext/standard/tests/general_functions/parse_ini_file.phpt @@ -102,12 +102,10 @@ Warning: Wrong parameter count for parse_ini_file() in %s on line %d NULL Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s on line %d -array(0) { -} +bool(false) Warning: parse_ini_file(%sparse_ini_file.dat): failed to open stream: No such file or directory in %s on line %d -array(0) { -} +bool(false) array(1) { ["test"]=> string(0) "" @@ -115,17 +113,11 @@ array(1) { Warning: Error parsing %sparse_ini_file.dat on line 2 in %s on line %d -array(1) { - ["test"]=> - string(0) "" -} +bool(false) Warning: Error parsing %sparse_ini_file.dat on line 2 in %s on line %d -array(1) { - ["test"]=> - string(4) "test" -} +bool(false) array(1) { ["test"]=> string(8) "new diff --git a/ext/standard/tests/general_functions/php_uname_basic.phpt b/ext/standard/tests/general_functions/php_uname_basic.phpt new file mode 100644 index 000000000..629318d72 --- /dev/null +++ b/ext/standard/tests/general_functions/php_uname_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test php_uname() function - basic test +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing php_uname() - basic test +string(%d) "%s" + +-- Try all the defined mode's -- +string(%d) "%s" +string(%d) "%s" +string(%d) "%s" +string(%d) "%s" +string(%d) "%s" +string(%d) "%s" +===DONE=== diff --git a/ext/standard/tests/general_functions/php_uname_error.phpt b/ext/standard/tests/general_functions/php_uname_error.phpt new file mode 100644 index 000000000..5e221b75c --- /dev/null +++ b/ext/standard/tests/general_functions/php_uname_error.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test php_uname() function - error conditions - pass function incorrect arguments +--FILE-- + 'red', 'item' => 'pen'))); +var_dump(php_uname(new barClass())); +var_dump(php_uname($fp)); + +fclose($fp); +?> +===DONE=== +--EXPECTF-- +*** Testing php_uname() - error test + +-- Testing php_uname() function with more than expected no. of arguments -- + +Warning: php_uname() expects at most 1 parameter, 2 given in %s on line %d +NULL + +-- Testing php_uname() function with invalid mode -- +bool(true) + +-- Testing php_uname() function with invalid argument types -- + +Warning: php_uname() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: php_uname() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: php_uname() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: php_uname() expects parameter 1 to be string, resource given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/php_uname_variation1.phpt b/ext/standard/tests/general_functions/php_uname_variation1.phpt new file mode 100644 index 000000000..d94fd8004 --- /dev/null +++ b/ext/standard/tests/general_functions/php_uname_variation1.phpt @@ -0,0 +1,112 @@ +--TEST-- +Test php_uname() function - usage variations +--FILE-- + 0, + "1" => 1, + "12345" => 12345, + "-2345" => -2345, + + // float data + "10.5" => 10.5, + "-10.5" => -10.5, + "10.1234567e10" => 10.1234567e10, + "10.7654321E-10" => 10.7654321E-10, + ".5" => .5, + + // null data + "NULL" => NULL, + "null" => null, + + // boolean data + "true" => true, + "false" => false, + "TRUE" => TRUE, + "FALSE" => FALSE, + + // empty data + "\"\"" => "", + "''" => '', + + // object data + "new fooClass()" => new fooClass(), + + // undefined data + "undefined var" => $undefined_var, + + // unset data + "unset var" => $unset_var, +); + +// loop through each element of the array for data + +foreach($values as $key => $value) { + echo "-- Iterator $key --\n"; + var_dump( php_uname($value) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing php_uname() - usage variations +-- Iterator 0 -- +string(%d) "%s" +-- Iterator 1 -- +string(%d) "%s" +-- Iterator 12345 -- +string(%d) "%s" +-- Iterator -2345 -- +string(%d) "%s" +-- Iterator 10.5 -- +string(%d) "%s" +-- Iterator -10.5 -- +string(%d) "%s" +-- Iterator 10.1234567e10 -- +string(%d) "%s" +-- Iterator 10.7654321E-10 -- +string(%d) "%s" +-- Iterator .5 -- +string(%d) "%s" +-- Iterator NULL -- +string(%d) "%s" +-- Iterator null -- +string(%d) "%s" +-- Iterator true -- +string(%d) "%s" +-- Iterator false -- +string(%d) "%s" +-- Iterator TRUE -- +string(%d) "%s" +-- Iterator FALSE -- +string(%d) "%s" +-- Iterator "" -- +string(%d) "%s" +-- Iterator '' -- +string(%d) "%s" +-- Iterator new fooClass() -- +string(%d) "%s" +-- Iterator undefined var -- +string(%d) "%s" +-- Iterator unset var -- +string(%d) "%s" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/set_magic_quotes_runtime_basic.phpt b/ext/standard/tests/general_functions/set_magic_quotes_runtime_basic.phpt new file mode 100644 index 000000000..7101f428c --- /dev/null +++ b/ext/standard/tests/general_functions/set_magic_quotes_runtime_basic.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test set_magic_quotes_runtime() function - basic test +--INI- +magic_quotes_runtime = 0 +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for set_magic_quotes_runtime() function - basic test + +-- magic quotes runtime set in INI file: 0-- + +-- Set magic quotes runtime to 1: -- +bool(true) + +-- magic quotes runtime after set: 1 -- + +-- Set magic quotes runtime to 0: -- +bool(true) + +-- magic quotes runtime after set: 0 -- + +-- Set magic quotes runtime to 1: -- +bool(true) + +-- magic quotes runtime after set: 1 -- +===DONE=== diff --git a/ext/standard/tests/general_functions/set_magic_quotes_runtime_error.phpt b/ext/standard/tests/general_functions/set_magic_quotes_runtime_error.phpt new file mode 100644 index 000000000..a2d71fa7d --- /dev/null +++ b/ext/standard/tests/general_functions/set_magic_quotes_runtime_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test set_magic_quotes_runtime() function - error conditions - pass function incorrect arguments +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for set_magic_quotes_runtime() - error test + +-- Testing is_callable() function with less than expected no. of arguments -- +bool(false) + +-- Testing is_callable() function with more than expected no. of arguments -- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt b/ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt new file mode 100644 index 000000000..425a8dd56 --- /dev/null +++ b/ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt @@ -0,0 +1,156 @@ +--TEST-- +Test set_magic_quotes_runtime() function - usage variation +--INI- +magic_quotes_runtime = 0 +--FILE-- + +===DONE=== +--EXPECT-- +Simple testcase for set_magic_quotes_runtime() function +magic quotes runtime set in INI file: 0 +-- Iterator 1 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 2 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 3 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 4 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 5 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 6 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 7 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 8 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 9 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 10 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 11 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 12 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 13 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 14 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 15 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 16 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 17 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 18 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 19 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 20 -- +bool(true) +New value of magic_quotes_runtime after last set is 1 +-- Iterator 21 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +-- Iterator 22 -- +bool(true) +New value of magic_quotes_runtime after last set is 0 +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/var_export.phpt b/ext/standard/tests/general_functions/var_export.phpt deleted file mode 100644 index b5cc886e4..000000000 --- a/ext/standard/tests/general_functions/var_export.phpt +++ /dev/null @@ -1,1054 +0,0 @@ ---TEST-- -Test var_export() function ---INI-- -precision=14 ---FILE-- - 'One'), - array("test" => "is_array"), - array(0), - array(-1), - array(10.5, 5.6), - array("string", "test"), - array('string', 'test') - ); -$counter = 1; -/* Loop to check for above arrays with var_export() */ -echo "\n*** Output for arrays ***\n"; -foreach($valid_arrays as $arr) { -echo "\nIteration ".$counter."\n"; -var_export( $arr ); -echo "\n"; -var_export( $arr, FALSE); -echo "\n"; -var_dump( var_export( $arr, TRUE) ); -echo "\n"; -$counter++; -} - -echo "*** Testing var_export() with valid objects ***\n"; - -// class with no members -class foo -{ -// no members -} - -// abstract class -abstract class abstractClass -{ - abstract protected function getClassName(); - public function printClassName () { - echo $this->getClassName() . "\n"; - } -} -// implement abstract class -class concreteClass extends abstractClass -{ - protected function getClassName() { - return "concreteClass"; - } -} - -// interface class -interface iValue -{ - public function setVal ($name, $val); - public function dumpVal (); -} -// implement the interface -class Value implements iValue -{ - private $vars = array (); - - public function setVal ( $name, $val ) { - $this->vars[$name] = $val; - } - - public function dumpVal () { - var_export ( $vars ); - } -} - -// a gereral class -class myClass -{ - var $foo_object; - public $public_var; - public $public_var1; - private $private_var; - protected $protected_var; - - function myClass ( ) { - $this->foo_object = new foo(); - $this->public_var = 10; - $this->public_var1 = new foo(); - $this->private_var = new foo(); - $this->proected_var = new foo(); - } -} - -// create a object of each class defined above -$myClass_object = new myClass(); -$foo_object = new foo(); -$Value_object = new Value(); -$concreteClass_object = new concreteClass(); - -$valid_objects = array( - new stdclass, - new foo, - new concreteClass, - new Value, - new myClass, - $myClass_object, - $myClass_object->foo_object, - $myClass_object->public_var1, - $foo_object, - $Value_object, - $concreteClass_object - ); - $counter = 1; -/* Loop to check for above objects with var_export() */ -echo "\n*** Output for objects ***\n"; -foreach($valid_objects as $obj) { -echo "\nIteration ".$counter."\n"; -var_export( $obj ); -echo "\n"; -var_export( $obj, FALSE); -echo "\n"; -var_dump( var_export( $obj, TRUE) ); -echo "\n"; -$counter++; -} - -echo "*** Testing var_export() with valid null values ***\n"; -// different valid null vlaues -$unset_var = array(); -unset ($unset_var); // now a null -$null_var = NULL; - -$valid_nulls = array( - NULL, - null, - $null_var, - ); - $counter = 1; -/* Loop to check for above null values with var_export() */ -echo "\n*** Output for null values ***\n"; -foreach($valid_nulls as $null_value) { -echo "\nIteration ".$counter."\n"; -var_export( $null_value ); -echo "\n"; -var_export( $null_value, FALSE); -echo "\n"; -var_dump( var_export( $null_value, true) ); -echo "\n"; -$counter++; -} - -echo "\n*** Testing error conditions ***\n"; -//Zero argument -var_export( var_export() ); - -//arguments more than expected -var_export( var_export(TRUE, FALSE, TRUE) ); - -echo "\n\nDone"; - - -?> ---EXPECTF-- -*** Testing var_export() with integer values *** - -*** Output for integer values *** - -Iteration 1 -'0' -'0' -string(3) "'0'" - - -Iteration 2 -'1' -'1' -string(3) "'1'" - - -Iteration 3 -'-1' -'-1' -string(4) "'-1'" - - -Iteration 4 -'-2147483648' -'-2147483648' -string(13) "'-2147483648'" - - -Iteration 5 -'-2147483647' -'-2147483647' -string(13) "'-2147483647'" - - -Iteration 6 -2147483647 -2147483647 -string(10) "2147483647" - - -Iteration 7 -2147483640 -2147483640 -string(10) "2147483640" - - -Iteration 8 -4667 -4667 -string(4) "4667" - - -Iteration 9 -'0x12ab' -'0x12ab' -string(8) "'0x12ab'" - - -Iteration 10 -'0Xfff' -'0Xfff' -string(7) "'0Xfff'" - - -Iteration 11 -'0XFA' -'0XFA' -string(6) "'0XFA'" - - -Iteration 12 --2147483648 --2147483648 -string(11) "-2147483648" - - -Iteration 13 -'0x7fffffff' -'0x7fffffff' -string(12) "'0x7fffffff'" - - -Iteration 14 -2147483647 -2147483647 -string(10) "2147483647" - - -Iteration 15 -'0123' -'0123' -string(6) "'0123'" - - -Iteration 16 -1 -1 -string(1) "1" - - -Iteration 17 --2147483648 --2147483648 -string(11) "-2147483648" - - -Iteration 18 -2147483647 -2147483647 -string(10) "2147483647" - -*** Testing var_export() with valid boolean values *** - -*** Output for boolean values *** - -Iteration 1 -1 -1 -string(1) "1" - - -Iteration 2 -true -true -string(4) "true" - - -Iteration 3 -true -true -string(4) "true" - - -Iteration 4 -0 -0 -string(1) "0" - - -Iteration 5 -false -false -string(5) "false" - - -Iteration 6 -false -false -string(5) "false" - -*** Testing var_export() with valid float values *** - -*** Output for float values *** - -Iteration 1 -1 -1 -string(1) "1" - - -Iteration 2 -true -true -string(4) "true" - - -Iteration 3 -true -true -string(4) "true" - - -Iteration 4 -0 -0 -string(1) "0" - - -Iteration 5 -false -false -string(5) "false" - - -Iteration 6 -false -false -string(5) "false" - -*** Testing var_export() with valid strings *** - -*** Output for strings *** - -Iteration 1 -'' -'' -string(2) "''" - - -Iteration 2 -' ' -' ' -string(3) "' '" - - -Iteration 3 -'' -'' -string(2) "''" - - -Iteration 4 -' ' -' ' -string(3) "' '" - - -Iteration 5 -'string' -'string' -string(8) "'string'" - - -Iteration 6 -'string' -'string' -string(8) "'string'" - - -Iteration 7 -'NULL' -'NULL' -string(6) "'NULL'" - - -Iteration 8 -'null' -'null' -string(6) "'null'" - - -Iteration 9 -'FALSE' -'FALSE' -string(7) "'FALSE'" - - -Iteration 10 -'false' -'false' -string(7) "'false'" - - -Iteration 11 -' ' -' ' -string(3) "' '" - - -Iteration 12 -'' . "\0" . '' -'' . "\0" . '' -string(14) "'' . "\0" . ''" - - -Iteration 13 -'\\0' -'\\0' -string(5) "'\\0'" - - -Iteration 14 -'\\060' -'\\060' -string(7) "'\\060'" - - -Iteration 15 -'8' -'8' -string(3) "'8'" - -*** Testing var_export() with valid arrays *** - -*** Output for arrays *** - -Iteration 1 -array ( -) -array ( -) -string(9) "array ( -)" - - -Iteration 2 -array ( - 0 => NULL, -) -array ( - 0 => NULL, -) -string(22) "array ( - 0 => NULL, -)" - - -Iteration 3 -array ( - 0 => NULL, -) -array ( - 0 => NULL, -) -string(22) "array ( - 0 => NULL, -)" - - -Iteration 4 -array ( - 0 => true, -) -array ( - 0 => true, -) -string(22) "array ( - 0 => true, -)" - - -Iteration 5 -array ( - 0 => '', -) -array ( - 0 => '', -) -string(20) "array ( - 0 => '', -)" - - -Iteration 6 -array ( - 0 => '', -) -array ( - 0 => '', -) -string(20) "array ( - 0 => '', -)" - - -Iteration 7 -array ( - 0 => - array ( - ), - 1 => - array ( - ), -) -array ( - 0 => - array ( - ), - 1 => - array ( - ), -) -string(55) "array ( - 0 => - array ( - ), - 1 => - array ( - ), -)" - - -Iteration 8 -array ( - 0 => - array ( - 0 => 1, - 1 => 2, - ), - 1 => - array ( - 0 => 'a', - 1 => 'b', - ), -) -array ( - 0 => - array ( - 0 => 1, - 1 => 2, - ), - 1 => - array ( - 0 => 'a', - 1 => 'b', - ), -) -string(107) "array ( - 0 => - array ( - 0 => 1, - 1 => 2, - ), - 1 => - array ( - 0 => 'a', - 1 => 'b', - ), -)" - - -Iteration 9 -array ( - 1 => 'One', -) -array ( - 1 => 'One', -) -string(23) "array ( - 1 => 'One', -)" - - -Iteration 10 -array ( - 'test' => 'is_array', -) -array ( - 'test' => 'is_array', -) -string(33) "array ( - 'test' => 'is_array', -)" - - -Iteration 11 -array ( - 0 => 0, -) -array ( - 0 => 0, -) -string(19) "array ( - 0 => 0, -)" - - -Iteration 12 -array ( - 0 => -1, -) -array ( - 0 => -1, -) -string(20) "array ( - 0 => -1, -)" - - -Iteration 13 -array ( - 0 => 10.5, - 1 => 5.6, -) -array ( - 0 => 10.5, - 1 => 5.6, -) -string(34) "array ( - 0 => 10.5, - 1 => 5.6, -)" - - -Iteration 14 -array ( - 0 => 'string', - 1 => 'test', -) -array ( - 0 => 'string', - 1 => 'test', -) -string(41) "array ( - 0 => 'string', - 1 => 'test', -)" - - -Iteration 15 -array ( - 0 => 'string', - 1 => 'test', -) -array ( - 0 => 'string', - 1 => 'test', -) -string(41) "array ( - 0 => 'string', - 1 => 'test', -)" - -*** Testing var_export() with valid objects *** - -*** Output for objects *** - -Iteration 1 -stdClass::__set_state(array( -)) -stdClass::__set_state(array( -)) -string(31) "stdClass::__set_state(array( -))" - - -Iteration 2 -foo::__set_state(array( -)) -foo::__set_state(array( -)) -string(26) "foo::__set_state(array( -))" - - -Iteration 3 -concreteClass::__set_state(array( -)) -concreteClass::__set_state(array( -)) -string(36) "concreteClass::__set_state(array( -))" - - -Iteration 4 -Value::__set_state(array( - 'vars' => - array ( - ), -)) -Value::__set_state(array( - 'vars' => - array ( - ), -)) -string(57) "Value::__set_state(array( - 'vars' => - array ( - ), -))" - - -Iteration 5 -myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -)) -myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -)) -string(293) "myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -))" - - -Iteration 6 -myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -)) -myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -)) -string(293) "myClass::__set_state(array( - 'foo_object' => - foo::__set_state(array( - )), - 'public_var' => 10, - 'public_var1' => - foo::__set_state(array( - )), - 'private_var' => - foo::__set_state(array( - )), - 'protected_var' => NULL, - 'proected_var' => - foo::__set_state(array( - )), -))" - - -Iteration 7 -foo::__set_state(array( -)) -foo::__set_state(array( -)) -string(26) "foo::__set_state(array( -))" - - -Iteration 8 -foo::__set_state(array( -)) -foo::__set_state(array( -)) -string(26) "foo::__set_state(array( -))" - - -Iteration 9 -foo::__set_state(array( -)) -foo::__set_state(array( -)) -string(26) "foo::__set_state(array( -))" - - -Iteration 10 -Value::__set_state(array( - 'vars' => - array ( - ), -)) -Value::__set_state(array( - 'vars' => - array ( - ), -)) -string(57) "Value::__set_state(array( - 'vars' => - array ( - ), -))" - - -Iteration 11 -concreteClass::__set_state(array( -)) -concreteClass::__set_state(array( -)) -string(36) "concreteClass::__set_state(array( -))" - -*** Testing var_export() with valid null values *** - -*** Output for null values *** - -Iteration 1 -NULL -NULL -string(4) "NULL" - - -Iteration 2 -NULL -NULL -string(4) "NULL" - - -Iteration 3 -NULL -NULL -string(4) "NULL" - - -*** Testing error conditions *** - -Warning: var_export() expects at least 1 parameter, 0 given in %s on line %d -NULL -Warning: var_export() expects at most 2 parameters, 3 given in %s on line %d -NULL - -Done diff --git a/ext/standard/tests/general_functions/var_export_basic1.phpt b/ext/standard/tests/general_functions/var_export_basic1.phpt new file mode 100644 index 000000000..3a734c7fe --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic1.phpt @@ -0,0 +1,141 @@ +--TEST-- +Test var_export() function with integer values +--FILE-- + '0', + '1' => '1', + '-1' => '-1', + '-2147483648' => '-2147483648', // max negative integer value + '-2147483647' => '-2147483647', + '2147483647' => 2147483647, // max positive integer value + '2147483640' => 2147483640, + '0x123B' => 0x123B, // integer as hexadecimal + "'0x12ab'" => '0x12ab', + "'0Xfff'" => '0Xfff', + "'0XFA'" => '0XFA', + "-0x80000000" => -0x80000000, // max negative integer as hexadecimal + "'0x7fffffff'" => '0x7fffffff', // max postive integer as hexadecimal + "0x7FFFFFFF" => 0x7FFFFFFF, // max postive integer as hexadecimal + "'0123'" => '0123', // integer as octal + "01912" => 01912, // should be quivalent to octal 1 + "-020000000000" => -020000000000, // max negative integer as octal + "017777777777" => 017777777777, // max positive integer as octal +); + +/* Loop to check for above integer values with var_export() */ +echo "\n*** Output for integer values ***\n"; +foreach($valid_ints as $key => $int_value) { + echo "\n-- Iteration: $key --\n"; + var_export( $int_value ); + echo "\n"; + var_export( $int_value, FALSE); + echo "\n"; + var_dump( var_export( $int_value, TRUE) ); +} + +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with integer values *** + +*** Output for integer values *** + +-- Iteration: 0 -- +'0' +'0' +string(3) "'0'" + +-- Iteration: 1 -- +'1' +'1' +string(3) "'1'" + +-- Iteration: -1 -- +'-1' +'-1' +string(4) "'-1'" + +-- Iteration: -2147483648 -- +'-2147483648' +'-2147483648' +string(13) "'-2147483648'" + +-- Iteration: -2147483647 -- +'-2147483647' +'-2147483647' +string(13) "'-2147483647'" + +-- Iteration: 2147483647 -- +2147483647 +2147483647 +string(10) "2147483647" + +-- Iteration: 2147483640 -- +2147483640 +2147483640 +string(10) "2147483640" + +-- Iteration: 0x123B -- +4667 +4667 +string(4) "4667" + +-- Iteration: '0x12ab' -- +'0x12ab' +'0x12ab' +string(8) "'0x12ab'" + +-- Iteration: '0Xfff' -- +'0Xfff' +'0Xfff' +string(7) "'0Xfff'" + +-- Iteration: '0XFA' -- +'0XFA' +'0XFA' +string(6) "'0XFA'" + +-- Iteration: -0x80000000 -- +-2147483648 +-2147483648 +string(11) "-2147483648" + +-- Iteration: '0x7fffffff' -- +'0x7fffffff' +'0x7fffffff' +string(12) "'0x7fffffff'" + +-- Iteration: 0x7FFFFFFF -- +2147483647 +2147483647 +string(10) "2147483647" + +-- Iteration: '0123' -- +'0123' +'0123' +string(6) "'0123'" + +-- Iteration: 01912 -- +1 +1 +string(1) "1" + +-- Iteration: -020000000000 -- +-2147483648 +-2147483648 +string(11) "-2147483648" + +-- Iteration: 017777777777 -- +2147483647 +2147483647 +string(10) "2147483647" +===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_basic2.phpt b/ext/standard/tests/general_functions/var_export_basic2.phpt new file mode 100644 index 000000000..33ca400cc --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic2.phpt @@ -0,0 +1,76 @@ +--TEST-- +Test var_export() function with valid boolean values +--FILE-- + 1, + "TRUE" => TRUE, + "true" => true, + "0" => 0, + "FALSE" => FALSE, + "false" => false +); + +/* Loop to check for above boolean values with var_export() */ +echo "\n*** Output for boolean values ***\n"; +foreach($valid_bool as $key => $bool_value) { + echo "\n-- Iteration: $key --\n"; + var_export( $bool_value ); + echo "\n"; + var_export( $bool_value, FALSE); + echo "\n"; + var_dump( var_export( $bool_value, TRUE) ); + echo "\n"; +} +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid boolean values *** + +*** Output for boolean values *** + +-- Iteration: 1 -- +1 +1 +string(1) "1" + + +-- Iteration: TRUE -- +true +true +string(4) "true" + + +-- Iteration: true -- +true +true +string(4) "true" + + +-- Iteration: 0 -- +0 +0 +string(1) "0" + + +-- Iteration: FALSE -- +false +false +string(5) "false" + + +-- Iteration: false -- +false +false +string(5) "false" + +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/var_export_basic3.phpt b/ext/standard/tests/general_functions/var_export_basic3.phpt new file mode 100644 index 000000000..299721591 --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic3.phpt @@ -0,0 +1,175 @@ +--TEST-- +Test var_export() function with valid float values +--INI-- +precision=14 +--FILE-- + -2147483649, // float value + "2147483648" => 2147483648, // float value + "-0x80000001" => -0x80000001, // float value, beyond max negative int + "0x800000001" => 0x800000001, // float value, beyond max positive int + "020000000001" => 020000000001, // float value, beyond max positive int + "-020000000001" => -020000000001, // float value, beyond max negative int + "0.0" => 0.0, + "-0.1" => -0.1, + "10.0000000000000000005" => 10.0000000000000000005, + "10.5e+5" => 10.5e+5, + "1e5" => 1e5, + "1e-5" => 1e-5, + "1e+5" => 1e+5, + "1E5" => 1E5, + "1E+5" => 1E+5, + "1E-5" => 1E-5, + ".5e+7" => .5e+7, + ".6e-19" => .6e-19, + ".05E+44" => .05E+44, + ".0034E-30" => .0034E-30 +); +/* Loop to check for above float values with var_export() */ +echo "\n*** Output for float values ***\n"; +foreach($valid_floats as $key => $float_value) { + echo "\n-- Iteration: $key --\n"; + var_export( $float_value ); + echo "\n"; + var_export( $float_value, FALSE); + echo "\n"; + var_dump( var_export( $float_value, TRUE) ); + echo "\n"; +} + +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid float values *** + +*** Output for float values *** + +-- Iteration: -2147483649 -- +-2147483649 +-2147483649 +string(11) "-2147483649" + + +-- Iteration: 2147483648 -- +2147483648 +2147483648 +string(10) "2147483648" + + +-- Iteration: -0x80000001 -- +-2147483649 +-2147483649 +string(11) "-2147483649" + + +-- Iteration: 0x800000001 -- +34359738369 +34359738369 +string(11) "34359738369" + + +-- Iteration: 020000000001 -- +2147483649 +2147483649 +string(10) "2147483649" + + +-- Iteration: -020000000001 -- +-2147483649 +-2147483649 +string(11) "-2147483649" + + +-- Iteration: 0.0 -- +0 +0 +string(1) "0" + + +-- Iteration: -0.1 -- +-0.1 +-0.1 +string(4) "-0.1" + + +-- Iteration: 10.0000000000000000005 -- +10 +10 +string(2) "10" + + +-- Iteration: 10.5e+5 -- +1050000 +1050000 +string(7) "1050000" + + +-- Iteration: 1e5 -- +100000 +100000 +string(6) "100000" + + +-- Iteration: 1e-5 -- +1.0E-5 +1.0E-5 +string(6) "1.0E-5" + + +-- Iteration: 1e+5 -- +100000 +100000 +string(6) "100000" + + +-- Iteration: 1E5 -- +100000 +100000 +string(6) "100000" + + +-- Iteration: 1E+5 -- +100000 +100000 +string(6) "100000" + + +-- Iteration: 1E-5 -- +1.0E-5 +1.0E-5 +string(6) "1.0E-5" + + +-- Iteration: .5e+7 -- +5000000 +5000000 +string(7) "5000000" + + +-- Iteration: .6e-19 -- +6.0E-20 +6.0E-20 +string(7) "6.0E-20" + + +-- Iteration: .05E+44 -- +5.0E+42 +5.0E+42 +string(7) "5.0E+42" + + +-- Iteration: .0034E-30 -- +3.4E-33 +3.4E-33 +string(7) "3.4E-33" + +===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_basic4.phpt b/ext/standard/tests/general_functions/var_export_basic4.phpt new file mode 100644 index 000000000..4668ace1c --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic4.phpt @@ -0,0 +1,147 @@ +--TEST-- +Test var_export() function with valid strings +--FILE-- + "", + "\" \"" => " ", + "''" => '', + "' '" => ' ', + "\"string\"" => "string", + "'string'" => 'string', + "\"\\0Hello\\0 World\\0\"" => "\0Hello\0 World\0", + "\"NULL\"" => "NULL", + "'null'" => 'null', + "\"FALSE\"" => "FALSE", + "'false'" => 'false', + "\"\\x0b\"" => "\x0b", + "\"\\0\"" => "\0", + "'\\0'" => '\0', + "'\\060'" => '\060', + "\"\\070\"" => "\070" +); + +/* Loop to check for above strings with var_export() */ +echo "\n*** Output for strings ***\n"; +foreach($valid_strings as $key => $str) { + echo "\n-- Iteration: $key --\n"; + var_export( $str ); + echo "\n"; + var_export( $str, FALSE); + echo "\n"; + var_dump( var_export( $str, TRUE) ); + echo "\n"; +} + +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid strings *** + +*** Output for strings *** + +-- Iteration: "" -- +'' +'' +string(2) "''" + + +-- Iteration: " " -- +' ' +' ' +string(3) "' '" + + +-- Iteration: '' -- +'' +'' +string(2) "''" + + +-- Iteration: ' ' -- +' ' +' ' +string(3) "' '" + + +-- Iteration: "string" -- +'string' +'string' +string(8) "'string'" + + +-- Iteration: 'string' -- +'string' +'string' +string(8) "'string'" + + +-- Iteration: "\0Hello\0 World\0" -- +'' . "\0" . 'Hello' . "\0" . ' World' . "\0" . '' +'' . "\0" . 'Hello' . "\0" . ' World' . "\0" . '' +string(49) "'' . "\0" . 'Hello' . "\0" . ' World' . "\0" . ''" + + +-- Iteration: "NULL" -- +'NULL' +'NULL' +string(6) "'NULL'" + + +-- Iteration: 'null' -- +'null' +'null' +string(6) "'null'" + + +-- Iteration: "FALSE" -- +'FALSE' +'FALSE' +string(7) "'FALSE'" + + +-- Iteration: 'false' -- +'false' +'false' +string(7) "'false'" + + +-- Iteration: "\x0b" -- +' ' +' ' +string(3) "' '" + + +-- Iteration: "\0" -- +'' . "\0" . '' +'' . "\0" . '' +string(14) "'' . "\0" . ''" + + +-- Iteration: '\0' -- +'\\0' +'\\0' +string(5) "'\\0'" + + +-- Iteration: '\060' -- +'\\060' +'\\060' +string(7) "'\\060'" + + +-- Iteration: "\070" -- +'8' +'8' +string(3) "'8'" + +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/var_export_basic5.phpt b/ext/standard/tests/general_functions/var_export_basic5.phpt new file mode 100644 index 000000000..96b3f54cc --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic5.phpt @@ -0,0 +1,277 @@ +--TEST-- +Test var_export() function with valid arrays +--FILE-- + array(), + "array(NULL)" => array(NULL), + "array(null)" => array(null), + "array(true)" => array(true), + "array(\"\")" => array(""), + "array('')" => array(''), + "array(array(), array())" => array(array(), array()), + "array(array(1, 2), array('a', 'b'))" => array(array(1, 2), array('a', 'b')), + "array(1 => 'One')" => array(1 => 'One'), + "array(\"test\" => \"is_array\")" => array("test" => "is_array"), + "array(0)" => array(0), + "array(-1)" => array(-1), + "array(10.5, 5.6)" => array(10.5, 5.6), + "array(\"string\", \"test\")" => array("string", "test"), + "array('string', 'test')" => array('string', 'test') +); + +/* Loop to check for above arrays with var_export() */ +echo "\n*** Output for arrays ***\n"; +foreach($valid_arrays as $key => $arr) { + echo "\n--Iteration: $key --\n"; + var_export( $arr ); + echo "\n"; + var_export( $arr, FALSE); + echo "\n"; + var_dump( var_export( $arr, TRUE) ); + echo "\n"; +} +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid arrays *** + +*** Output for arrays *** + +--Iteration: array() -- +array ( +) +array ( +) +string(9) "array ( +)" + + +--Iteration: array(NULL) -- +array ( + 0 => NULL, +) +array ( + 0 => NULL, +) +string(22) "array ( + 0 => NULL, +)" + + +--Iteration: array(null) -- +array ( + 0 => NULL, +) +array ( + 0 => NULL, +) +string(22) "array ( + 0 => NULL, +)" + + +--Iteration: array(true) -- +array ( + 0 => true, +) +array ( + 0 => true, +) +string(22) "array ( + 0 => true, +)" + + +--Iteration: array("") -- +array ( + 0 => '', +) +array ( + 0 => '', +) +string(20) "array ( + 0 => '', +)" + + +--Iteration: array('') -- +array ( + 0 => '', +) +array ( + 0 => '', +) +string(20) "array ( + 0 => '', +)" + + +--Iteration: array(array(), array()) -- +array ( + 0 => + array ( + ), + 1 => + array ( + ), +) +array ( + 0 => + array ( + ), + 1 => + array ( + ), +) +string(55) "array ( + 0 => + array ( + ), + 1 => + array ( + ), +)" + + +--Iteration: array(array(1, 2), array('a', 'b')) -- +array ( + 0 => + array ( + 0 => 1, + 1 => 2, + ), + 1 => + array ( + 0 => 'a', + 1 => 'b', + ), +) +array ( + 0 => + array ( + 0 => 1, + 1 => 2, + ), + 1 => + array ( + 0 => 'a', + 1 => 'b', + ), +) +string(107) "array ( + 0 => + array ( + 0 => 1, + 1 => 2, + ), + 1 => + array ( + 0 => 'a', + 1 => 'b', + ), +)" + + +--Iteration: array(1 => 'One') -- +array ( + 1 => 'One', +) +array ( + 1 => 'One', +) +string(23) "array ( + 1 => 'One', +)" + + +--Iteration: array("test" => "is_array") -- +array ( + 'test' => 'is_array', +) +array ( + 'test' => 'is_array', +) +string(33) "array ( + 'test' => 'is_array', +)" + + +--Iteration: array(0) -- +array ( + 0 => 0, +) +array ( + 0 => 0, +) +string(19) "array ( + 0 => 0, +)" + + +--Iteration: array(-1) -- +array ( + 0 => -1, +) +array ( + 0 => -1, +) +string(20) "array ( + 0 => -1, +)" + + +--Iteration: array(10.5, 5.6) -- +array ( + 0 => 10.5, + 1 => 5.6, +) +array ( + 0 => 10.5, + 1 => 5.6, +) +string(34) "array ( + 0 => 10.5, + 1 => 5.6, +)" + + +--Iteration: array("string", "test") -- +array ( + 0 => 'string', + 1 => 'test', +) +array ( + 0 => 'string', + 1 => 'test', +) +string(41) "array ( + 0 => 'string', + 1 => 'test', +)" + + +--Iteration: array('string', 'test') -- +array ( + 0 => 'string', + 1 => 'test', +) +array ( + 0 => 'string', + 1 => 'test', +) +string(41) "array ( + 0 => 'string', + 1 => 'test', +)" + +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/general_functions/var_export_basic6.phpt b/ext/standard/tests/general_functions/var_export_basic6.phpt new file mode 100644 index 000000000..8935d0e79 --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic6.phpt @@ -0,0 +1,310 @@ +--TEST-- +Test var_export() function with valid objects +--FILE-- +getClassName() . "\n"; + } +} +// implement abstract class +class concreteClass extends abstractClass +{ + protected function getClassName() { + return "concreteClass"; + } +} + +// interface class +interface iValue +{ + public function setVal ($name, $val); + public function dumpVal (); +} +// implement the interface +class Value implements iValue +{ + private $vars = array (); + + public function setVal ( $name, $val ) { + $this->vars[$name] = $val; + } + + public function dumpVal () { + var_export ( $vars ); + } +} + +// a gereral class +class myClass +{ + var $foo_object; + public $public_var; + public $public_var1; + private $private_var; + protected $protected_var; + + function myClass ( ) { + $this->foo_object = new foo(); + $this->public_var = 10; + $this->public_var1 = new foo(); + $this->private_var = new foo(); + $this->proected_var = new foo(); + } +} + +// create a object of each class defined above +$myClass_object = new myClass(); +$foo_object = new foo(); +$Value_object = new Value(); +$concreteClass_object = new concreteClass(); + +$valid_objects = array( + "new stdclass" => new stdclass, + "new foo" => new foo, + "new concreteClass" => new concreteClass, + "new Value" => new Value, + "new myClass" => new myClass, + "myClass_object" => $myClass_object, + "myClass_object->foo_object" => $myClass_object->foo_object, + "myClass_object->public_var1" => $myClass_object->public_var1, + "foo_object" => $foo_object, + "Value_object" => $Value_object, + "concreteClass_object" => $concreteClass_object + ); +/* Loop to check for above objects with var_export() */ +echo "\n*** Output for objects ***\n"; +foreach($valid_objects as $key => $obj) { + echo "\n-- Iteration: $key --\n"; + var_export( $obj ); + echo "\n"; + var_export( $obj, FALSE); + echo "\n"; + var_dump( var_export( $obj, TRUE) ); + echo "\n"; +} +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid objects *** + +*** Output for objects *** + +-- Iteration: new stdclass -- +stdClass::__set_state(array( +)) +stdClass::__set_state(array( +)) +string(31) "stdClass::__set_state(array( +))" + + +-- Iteration: new foo -- +foo::__set_state(array( +)) +foo::__set_state(array( +)) +string(26) "foo::__set_state(array( +))" + + +-- Iteration: new concreteClass -- +concreteClass::__set_state(array( +)) +concreteClass::__set_state(array( +)) +string(36) "concreteClass::__set_state(array( +))" + + +-- Iteration: new Value -- +Value::__set_state(array( + 'vars' => + array ( + ), +)) +Value::__set_state(array( + 'vars' => + array ( + ), +)) +string(57) "Value::__set_state(array( + 'vars' => + array ( + ), +))" + + +-- Iteration: new myClass -- +myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +)) +myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +)) +string(293) "myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +))" + + +-- Iteration: myClass_object -- +myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +)) +myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +)) +string(293) "myClass::__set_state(array( + 'foo_object' => + foo::__set_state(array( + )), + 'public_var' => 10, + 'public_var1' => + foo::__set_state(array( + )), + 'private_var' => + foo::__set_state(array( + )), + 'protected_var' => NULL, + 'proected_var' => + foo::__set_state(array( + )), +))" + + +-- Iteration: myClass_object->foo_object -- +foo::__set_state(array( +)) +foo::__set_state(array( +)) +string(26) "foo::__set_state(array( +))" + + +-- Iteration: myClass_object->public_var1 -- +foo::__set_state(array( +)) +foo::__set_state(array( +)) +string(26) "foo::__set_state(array( +))" + + +-- Iteration: foo_object -- +foo::__set_state(array( +)) +foo::__set_state(array( +)) +string(26) "foo::__set_state(array( +))" + + +-- Iteration: Value_object -- +Value::__set_state(array( + 'vars' => + array ( + ), +)) +Value::__set_state(array( + 'vars' => + array ( + ), +)) +string(57) "Value::__set_state(array( + 'vars' => + array ( + ), +))" + + +-- Iteration: concreteClass_object -- +concreteClass::__set_state(array( +)) +concreteClass::__set_state(array( +)) +string(36) "concreteClass::__set_state(array( +))" + +===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_basic7.phpt b/ext/standard/tests/general_functions/var_export_basic7.phpt new file mode 100644 index 000000000..10dc03290 --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic7.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test var_export() function with valid null values +--FILE-- + NULL, + "null" => null, + "null_var" => $null_var, +); + +/* Loop to check for above null values with var_export() */ +echo "\n*** Output for null values ***\n"; +foreach($valid_nulls as $key => $null_value) { + echo "\n-- Iteration: $key --\n"; + var_export( $null_value ); + echo "\n"; + var_export( $null_value, FALSE); + echo "\n"; + var_dump( var_export( $null_value, true) ); + echo "\n"; +} +?> +===DONE=== +--EXPECT-- +*** Testing var_export() with valid null values *** + +*** Output for null values *** + +-- Iteration: NULL -- +NULL +NULL +string(4) "NULL" + + +-- Iteration: null -- +NULL +NULL +string(4) "NULL" + + +-- Iteration: null_var -- +NULL +NULL +string(4) "NULL" + +===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_basic8.phpt b/ext/standard/tests/general_functions/var_export_basic8.phpt new file mode 100644 index 000000000..6e6263d2a --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_basic8.phpt @@ -0,0 +1,71 @@ +--TEST-- +var_export(): simple test with arrays and objects +--FILE-- +p = '22'; +$o2 = new stdclass; +$o2->a = 1; +$o2->b = array('k'=>2); +$o2->x = $o1; +var_export($o2); + +echo "\n\n-- Var export on an simple array --\n"; +$a = array(1,2,3,4); +var_export($a); + +echo "\n\n-- Var export on an nested array --\n"; +$a = array('one' => 'first'); +$b = array('foo' => $a, 'bar' => $o2); +var_export($b); + +?> +===DONE=== +--EXPECTF-- +-- Var export on a simple object -- +stdClass::__set_state(array( + 'a' => 1, + 'b' => + array ( + 'k' => 2, + ), + 'x' => + stdClass::__set_state(array( + 'p' => '22', + )), +)) + +-- Var export on an simple array -- +array ( + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, +) + +-- Var export on an nested array -- +array ( + 'foo' => + array ( + 'one' => 'first', + ), + 'bar' => + stdClass::__set_state(array( + 'a' => 1, + 'b' => + array ( + 'k' => 2, + ), + 'x' => + stdClass::__set_state(array( + 'p' => '22', + )), + )), +)===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_error1.phpt b/ext/standard/tests/general_functions/var_export_error1.phpt new file mode 100644 index 000000000..d9c5eee9d --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_error1.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test var_export() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing var_export() : error conditions *** + +-- Testing var_export() function with Zero arguments -- + +Warning: var_export() expects at least 1 parameter, 0 given in %s on line 12 +NULL + +-- Testing var_export() function with more than expected no. of arguments -- + +Warning: var_export() expects at most 2 parameters, 3 given in %s on line 19 +NULL +===DONE=== diff --git a/ext/standard/tests/general_functions/var_export_error2.phpt b/ext/standard/tests/general_functions/var_export_error2.phpt new file mode 100644 index 000000000..93d0dc164 --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_error2.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test var_export() function : error conditions - recursive object +--FILE-- +p =& $obj; +var_export($obj, true); + +?> +===DONE=== +--EXPECTF-- +stdClass::__set_state(array( + 'p' => + stdClass::__set_state(array( + 'p' => + stdClass::__set_state(array( + 'p' => + stdClass::__set_state(array( + +Fatal error: Nesting level too deep - recursive dependency? in %s on line 9 \ No newline at end of file diff --git a/ext/standard/tests/general_functions/var_export_error3.phpt b/ext/standard/tests/general_functions/var_export_error3.phpt new file mode 100644 index 000000000..4ad512168 --- /dev/null +++ b/ext/standard/tests/general_functions/var_export_error3.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test var_export() function : error conditions - recursive array +--FILE-- + +===DONE=== +--EXPECTF-- +array ( + 0 => + array ( + 0 => + array ( + 0 => + array ( + 0 => + array ( + +Fatal error: Nesting level too deep - recursive dependency? in %s on line 9 \ No newline at end of file diff --git a/ext/standard/tests/image/200x100.bmp b/ext/standard/tests/image/200x100.bmp new file mode 100644 index 000000000..ac71f4f1c Binary files /dev/null and b/ext/standard/tests/image/200x100.bmp differ diff --git a/ext/standard/tests/image/200x100.gif b/ext/standard/tests/image/200x100.gif new file mode 100644 index 000000000..1fc8f9b25 Binary files /dev/null and b/ext/standard/tests/image/200x100.gif differ diff --git a/ext/standard/tests/image/200x100.jpg b/ext/standard/tests/image/200x100.jpg new file mode 100644 index 000000000..8e7c88d6a Binary files /dev/null and b/ext/standard/tests/image/200x100.jpg differ diff --git a/ext/standard/tests/image/200x100.png b/ext/standard/tests/image/200x100.png new file mode 100644 index 000000000..e4fc89109 Binary files /dev/null and b/ext/standard/tests/image/200x100.png differ diff --git a/ext/standard/tests/image/200x100.swf b/ext/standard/tests/image/200x100.swf new file mode 100644 index 000000000..c6ca3224d Binary files /dev/null and b/ext/standard/tests/image/200x100.swf differ diff --git a/ext/standard/tests/image/200x100.tif b/ext/standard/tests/image/200x100.tif new file mode 100644 index 000000000..31d9b3387 Binary files /dev/null and b/ext/standard/tests/image/200x100.tif differ diff --git a/ext/standard/tests/image/200x100_unknown.unknown b/ext/standard/tests/image/200x100_unknown.unknown new file mode 100644 index 000000000..0ebce729f --- /dev/null +++ b/ext/standard/tests/image/200x100_unknown.unknown @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/ext/standard/tests/image/2x2mm.tif b/ext/standard/tests/image/2x2mm.tif new file mode 100644 index 000000000..8b95242d1 Binary files /dev/null and b/ext/standard/tests/image/2x2mm.tif differ diff --git a/ext/standard/tests/image/75x50.wbmp b/ext/standard/tests/image/75x50.wbmp new file mode 100644 index 000000000..844243256 Binary files /dev/null and b/ext/standard/tests/image/75x50.wbmp differ diff --git a/ext/standard/tests/image/75x50.xbm b/ext/standard/tests/image/75x50.xbm new file mode 100644 index 000000000..fea44265c --- /dev/null +++ b/ext/standard/tests/image/75x50.xbm @@ -0,0 +1,59 @@ +#define Xbitmap_width 75 +#define Xbitmap_height 50 +static unsigned char Xbitmap_bits[] = { + 0xfd, 0xdb, 0xf5, 0xbf, 0xef, 0x7b, 0xbb, 0xae, 0xaa, + 0x07, 0xff, 0x77, 0xbf, 0xea, 0xba, 0xee, 0xef, 0xfb, + 0xff, 0x06, 0xff, 0xdf, 0xed, 0xbf, 0xdf, 0xbb, 0xba, + 0x5e, 0x55, 0x05, 0xff, 0x77, 0xbf, 0xf5, 0xe2, 0xee, + 0xef, 0xeb, 0x55, 0x03, 0xff, 0xdf, 0x75, 0x1f, 0xc0, + 0x7b, 0xfb, 0xfe, 0xaa, 0x06, 0xff, 0x77, 0xdf, 0x07, + 0xe8, 0xdf, 0xae, 0xaf, 0xa5, 0x06, 0x5f, 0xdf, 0xeb, + 0x81, 0xe2, 0xff, 0xf7, 0xfa, 0x92, 0x06, 0xff, 0xf7, + 0x7e, 0x20, 0xf5, 0xff, 0xbe, 0x6f, 0xab, 0x06, 0xff, + 0x7f, 0x5b, 0x90, 0xe0, 0xff, 0xdb, 0xf6, 0x55, 0x05, + 0xff, 0xc7, 0x3f, 0x54, 0xf4, 0xff, 0xff, 0x1f, 0x29, + 0x07, 0xdf, 0x3d, 0x09, 0x02, 0xea, 0xff, 0x57, 0xf2, + 0xd6, 0x05, 0x7d, 0xff, 0x84, 0xea, 0xff, 0xff, 0x0f, + 0xf9, 0x7d, 0x07, 0xd7, 0x8d, 0x47, 0xf5, 0xc3, 0xfe, + 0xff, 0xdf, 0xdd, 0x05, 0x7b, 0xcd, 0xc7, 0xfa, 0xe8, + 0xfe, 0x7f, 0x9f, 0x75, 0x07, 0xdd, 0xab, 0xa0, 0x1a, + 0x00, 0xe1, 0x3b, 0xf0, 0xdf, 0x06, 0x6f, 0x3d, 0x11, + 0x0c, 0xab, 0xf6, 0xff, 0xf7, 0xf4, 0x03, 0xfd, 0xb3, + 0xa1, 0x86, 0x4b, 0xfe, 0xff, 0x6d, 0xbf, 0x06, 0xb7, + 0xba, 0x10, 0xc3, 0x22, 0x6d, 0xff, 0xe7, 0xea, 0x07, + 0xed, 0xbb, 0x88, 0xf2, 0x57, 0xf7, 0xff, 0x6b, 0xbe, + 0x02, 0x7f, 0xb3, 0xa4, 0x81, 0x00, 0xfc, 0xff, 0x6f, + 0xef, 0x07, 0xd5, 0xbb, 0x90, 0x08, 0x72, 0xff, 0xff, + 0x6b, 0xfa, 0x06, 0x7f, 0x33, 0x48, 0x09, 0xa8, 0xf7, + 0xff, 0x6f, 0xaf, 0x03, 0x2d, 0xb5, 0xa4, 0x08, 0x00, + 0xfc, 0xff, 0xef, 0xe6, 0x06, 0x97, 0x3a, 0xc8, 0xac, + 0xad, 0x76, 0xff, 0x67, 0x90, 0x07, 0x4d, 0x34, 0xa4, + 0x58, 0x77, 0xa9, 0xff, 0xef, 0xaa, 0x06, 0x97, 0xb2, + 0xff, 0x5f, 0xdb, 0xd2, 0x59, 0x71, 0x84, 0x03, 0xad, + 0xb4, 0xfe, 0x57, 0xa5, 0xec, 0x28, 0x61, 0x55, 0x07, + 0x17, 0xba, 0xff, 0xff, 0xff, 0xb6, 0x94, 0x70, 0xa2, + 0x05, 0xdd, 0xb3, 0xfd, 0x07, 0x52, 0xff, 0x28, 0x61, + 0xab, 0x07, 0xb7, 0xba, 0xff, 0xbf, 0x88, 0xea, 0x94, + 0xe8, 0xfe, 0x02, 0xfd, 0x3b, 0xff, 0xff, 0x57, 0x00, + 0x9a, 0x70, 0xba, 0x07, 0xb7, 0xb3, 0xff, 0xdf, 0x26, + 0x6f, 0x44, 0x6c, 0xef, 0x06, 0xed, 0xba, 0xfe, 0xbf, + 0x93, 0x1a, 0x2b, 0x68, 0xb5, 0x03, 0xdf, 0xb5, 0xfb, + 0xff, 0x49, 0x1f, 0x45, 0xe4, 0xfe, 0x06, 0xb5, 0x97, + 0xff, 0xff, 0x97, 0x86, 0x22, 0x0e, 0xaf, 0x07, 0x7f, + 0x23, 0x60, 0x1f, 0x20, 0xc0, 0x12, 0xa8, 0xf6, 0x05, + 0xd5, 0x85, 0xf7, 0xff, 0x5b, 0xf0, 0x2a, 0x0b, 0x5d, + 0x07, 0x7f, 0x81, 0xff, 0xff, 0x3b, 0x7e, 0x1d, 0x8f, + 0xfc, 0x05, 0xd5, 0xa3, 0xd6, 0xff, 0xff, 0xbf, 0x8a, + 0x4e, 0x55, 0x07, 0xff, 0x8a, 0x00, 0xff, 0xbf, 0x44, + 0x02, 0xa8, 0xfe, 0x05, 0xb5, 0xd5, 0xff, 0xff, 0xbf, + 0x12, 0xc1, 0x9f, 0xaa, 0x02, 0xee, 0xbb, 0x6b, 0xff, + 0x5f, 0xa4, 0xf0, 0x76, 0x55, 0x05, 0xb5, 0xee, 0xfd, + 0xf7, 0x3f, 0x29, 0xa8, 0xdd, 0xad, 0x00, 0xfe, 0x7b, + 0xaf, 0xfe, 0xbf, 0x04, 0xfc, 0xfb, 0x75, 0x01, 0xf5, + 0xad, 0xfd, 0xdb, 0x3f, 0x01, 0xb7, 0x56, 0xbd, 0x02, + 0x7c, 0xff, 0xb7, 0xfe, 0x37, 0x60, 0xed, 0xff, 0x6d, + 0x01, 0xee, 0x55, 0xed, 0x57, 0x1f, 0xaa, 0x7f, 0x55, + 0x55, 0x01, 0xbb, 0xff, 0x7f, 0xfd, 0xb5, 0xfa, 0xd5, + 0xff, 0x55, 0x05, 0x55, 0x54, 0xd5, 0x6f, 0xdf, 0x6f, + 0xff, 0xaa, 0x2a, 0x02, 0x57, 0xff, 0x7f, 0xb5, 0x75, + 0xb5, 0x55, 0xff, 0x81, 0x07}; diff --git a/ext/standard/tests/image/blank_file b/ext/standard/tests/image/blank_file new file mode 100644 index 000000000..e69de29bb diff --git a/ext/standard/tests/image/blank_file.bmp b/ext/standard/tests/image/blank_file.bmp new file mode 100644 index 000000000..e69de29bb diff --git a/ext/standard/tests/image/getimagesize_basic.phpt b/ext/standard/tests/image/getimagesize_basic.phpt new file mode 100644 index 000000000..63ae33406 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_basic.phpt @@ -0,0 +1,219 @@ +--TEST-- +Test getimagesize() function : basic functionality +--FILE-- + "200x100.gif", + + //JPEG file + "JPEG image file" => "200x100.jpg", + + //PNG file + "PNG image file" => "200x100.png", + + //SWF file + "SWF image file" => "200x100.swf", + + //BMP file + "BMP image file" => "200x100.bmp", + + //TIFF intel byte order + "TIFF intel byte order image file" => "200x100.tif", + + //JPC file + "JPC image file" => "test1pix.jpc", + + //JP2 file + "JP2 image file" => "test1pix.jp2", + + //IFF file + "IFF image file" => "test4pix.iff" +); + +echo "*** Testing getimagesize() : basic functionality ***\n"; + +// loop through each element of the array for imagetype +foreach($imagetype_filenames as $key => $filename) { + echo "\n-- $key ($filename) --\n"; + var_dump( getimagesize(dirname(__FILE__)."/$filename", $info) ); + var_dump( $info ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : basic functionality *** + +-- GIF image file (200x100.gif) -- +array(7) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(1) + [3]=> + string(24) "width="200" height="100"" + ["bits"]=> + int(8) + ["channels"]=> + int(3) + ["mime"]=> + string(9) "image/gif" +} +array(0) { +} + +-- JPEG image file (200x100.jpg) -- +array(7) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(2) + [3]=> + string(24) "width="200" height="100"" + ["bits"]=> + int(8) + ["channels"]=> + int(3) + ["mime"]=> + string(10) "image/jpeg" +} +array(1) { + ["APP0"]=> + string(%d)%s +} + +-- PNG image file (200x100.png) -- +array(6) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(3) + [3]=> + string(24) "width="200" height="100"" + ["bits"]=> + int(8) + ["mime"]=> + string(9) "image/png" +} +array(0) { +} + +-- SWF image file (200x100.swf) -- +array(5) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(4) + [3]=> + string(24) "width="200" height="100"" + ["mime"]=> + string(29) "application/x-shockwave-flash" +} +array(0) { +} + +-- BMP image file (200x100.bmp) -- +array(6) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(6) + [3]=> + string(24) "width="200" height="100"" + ["bits"]=> + int(24) + ["mime"]=> + string(9) "image/bmp" +} +array(0) { +} + +-- TIFF intel byte order image file (200x100.tif) -- +array(5) { + [0]=> + int(200) + [1]=> + int(100) + [2]=> + int(7) + [3]=> + string(24) "width="200" height="100"" + ["mime"]=> + string(10) "image/tiff" +} +array(0) { +} + +-- JPC image file (test1pix.jpc) -- +array(7) { + [0]=> + int(1) + [1]=> + int(1) + [2]=> + int(9) + [3]=> + string(20) "width="1" height="1"" + ["bits"]=> + int(8) + ["channels"]=> + int(3) + ["mime"]=> + string(24) "application/octet-stream" +} +array(0) { +} + +-- JP2 image file (test1pix.jp2) -- +array(7) { + [0]=> + int(1) + [1]=> + int(1) + [2]=> + int(10) + [3]=> + string(20) "width="1" height="1"" + ["bits"]=> + int(8) + ["channels"]=> + int(3) + ["mime"]=> + string(9) "image/jp2" +} +array(0) { +} + +-- IFF image file (test4pix.iff) -- +array(6) { + [0]=> + int(4) + [1]=> + int(1) + [2]=> + int(14) + [3]=> + string(20) "width="4" height="1"" + ["bits"]=> + int(4) + ["mime"]=> + string(9) "image/iff" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_error1.phpt b/ext/standard/tests/image/getimagesize_error1.phpt new file mode 100644 index 000000000..7735c6076 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_error1.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test getimagesize() function : error conditions - wrong number of args +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : error conditions *** + +-- Testing getimagesize() function with Zero arguments -- + +Warning: Wrong parameter count for getimagesize() in %s on line 12 +bool(false) + +-- Testing getimagesize() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for getimagesize() in %s on line 19 +bool(false) +===DONE=== diff --git a/ext/standard/tests/image/getimagesize_jpgapp.phpt b/ext/standard/tests/image/getimagesize_jpgapp.phpt new file mode 100644 index 000000000..8e179d255 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_jpgapp.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test getimagesize() function : basic functionality - load APP info from jpeg. +--SKIPIF-- + +--FILE-- + $value) { + echo "$key - length: ". strlen($value) ."; md5: " . md5($value) . "\n" ; +} + +?> +===DONE=== +--EXPECTF-- +APP1 - length: 1717; md5: 02cbf4ba6640c131422483138c968516 +APP2 - length: 7275; md5: f5036ccca2031e8bf932bcbd4aca4355 +APP13 - length: 42; md5: 2202998bd05e78bcb419f08c070d6f61 +===DONE=== diff --git a/ext/standard/tests/image/getimagesize_tif_mm.phpt b/ext/standard/tests/image/getimagesize_tif_mm.phpt new file mode 100644 index 000000000..8bc88fd04 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_tif_mm.phpt @@ -0,0 +1,39 @@ +--TEST-- +GetImageSize() for tiff format with big-endian (aka Motorola, aka MM) ordering +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing getimagesize() : tiff_mm format *** +array(5) { + [0]=> + int(2) + [1]=> + int(2) + [2]=> + int(8) + [3]=> + string(20) "width="2" height="2"" + ["mime"]=> + string(10) "image/tiff" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_variation1.phpt b/ext/standard/tests/image/getimagesize_variation1.phpt new file mode 100644 index 000000000..a4391d42f --- /dev/null +++ b/ext/standard/tests/image/getimagesize_variation1.phpt @@ -0,0 +1,192 @@ +--TEST-- +Test getimagesize() function : usage variations - unexpected type for arg 1 +--FILE-- + 0, + "1" => 1, + "12345" => 12345, + "-2345" => -2345, + + // float data + "10.5" => 10.5, + "-10.5" => -10.5, + "10.1234567e5" => 10.1234567e10, + "10.7654321e-5" => 10.7654321E-5, + .5, + + // array data + "array()" => array(), + "array(0)" => array(0), + "array(1)" => array(1), + "array(1, 2)" => array(1, 2), + "array('color' => 'red', 'item' => 'pen')" => array('color' => 'red', 'item' => 'pen'), + + // null data + "NULL" => NULL, + "null" => null, + + // boolean data + "true" => true, + "false" => false, + "TRUE" => TRUE, + "FALSE" => FALSE, + + // empty data + "\"\"" => "", + "''" => '', + + // object data + "new stdclass()" => new stdclass(), + + // undefined data + "undefined_var" => $undefined_var, + + // unset data + "unset_var" => $unset_var, +); + +// loop through each element of the array for imagefile + +foreach($values as $key => $value) { + echo "\n-- Arg value: $key --\n"; + var_dump( getimagesize($value, $info) ); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : usage variations *** +Error: 8 - Undefined variable: undefined_var, %s(%d) +Error: 8 - Undefined variable: unset_var, %s(%d) + +-- Arg value: 0 -- +Error: 2 - getimagesize(0): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 1 -- +Error: 2 - getimagesize(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 12345 -- +Error: 2 - getimagesize(12345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: -2345 -- +Error: 2 - getimagesize(-2345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 10.5 -- +Error: 2 - getimagesize(10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: -10.5 -- +Error: 2 - getimagesize(-10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 10.1234567e5 -- +Error: 2 - getimagesize(101234567000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 10.7654321e-5 -- +Error: 2 - getimagesize(0.000107654321): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: 12346 -- +Error: 2 - getimagesize(0.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: array() -- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - getimagesize(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: array(0) -- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - getimagesize(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: array(1) -- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - getimagesize(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: array(1, 2) -- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - getimagesize(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: array('color' => 'red', 'item' => 'pen') -- +Error: 8 - Array to string conversion, %s(%d) +Error: 2 - getimagesize(Array): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: NULL -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: null -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: true -- +Error: 2 - getimagesize(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: false -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: TRUE -- +Error: 2 - getimagesize(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: FALSE -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: "" -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: '' -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: new stdclass() -- +Error: 4096 - Object of class stdClass could not be converted to string, %s(%d) +Error: 8 - Object of class stdClass to string conversion, %s(%d) +Error: 2 - getimagesize(Object): failed to open stream: No such file or directory, %s(%d) +bool(false) + +-- Arg value: undefined_var -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) + +-- Arg value: unset_var -- +Error: 2 - getimagesize(): Filename cannot be empty, %s(%d) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_variation2.phpt b/ext/standard/tests/image/getimagesize_variation2.phpt new file mode 100644 index 000000000..9e8c16b9e --- /dev/null +++ b/ext/standard/tests/image/getimagesize_variation2.phpt @@ -0,0 +1,167 @@ +--TEST-- +Test getimagesize() function : usage variations - unexpected type for arg 2 +--SKIPIF-- + +--FILE-- + 0, + "1" => 1, + "12345" => 12345, + "-2345" => -2345, + + // float data + "10.5" => 10.5, + "-10.5" => -10.5, + "10.1234567e5" => 10.1234567e10, + "10.7654321e-5" => 10.7654321E-5, + .5, + + // array data + "array()" => array(), + "array(0)" => array(0), + "array(1)" => array(1), + "array(1, 2)" => array(1, 2), + "array('color' => 'red', 'item' => 'pen')" => array('color' => 'red', 'item' => 'pen'), + + // null data + "NULL" => NULL, + "null" => null, + + // boolean data + "true" => true, + "false" => false, + "TRUE" => TRUE, + "FALSE" => FALSE, + + // empty data + "\"\"" => "", + "''" => '', + + // object data + "new stdclass()" => new stdclass(), + + // undefined data + "undefined_var" => $undefined_var, + + // unset data + "unset_var" => $unset_var, +); + +// loop through each element of the array for info + +foreach($values as $key => $value) { + echo "\n-- Arg value $key --\n"; + getimagesize($imagefile, $value); + var_dump(bin2hex($value["APP0"])); +}; + +?> +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : usage variations *** +Error: 8 - Undefined variable: undefined_var, %s(%d) +Error: 8 - Undefined variable: unset_var, %s(%d) + +-- Arg value 0 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 1 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 12345 -- +string(28) "4a46494600010201006000600000" + +-- Arg value -2345 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 10.5 -- +string(28) "4a46494600010201006000600000" + +-- Arg value -10.5 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 10.1234567e5 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 10.7654321e-5 -- +string(28) "4a46494600010201006000600000" + +-- Arg value 12346 -- +string(28) "4a46494600010201006000600000" + +-- Arg value array() -- +string(28) "4a46494600010201006000600000" + +-- Arg value array(0) -- +string(28) "4a46494600010201006000600000" + +-- Arg value array(1) -- +string(28) "4a46494600010201006000600000" + +-- Arg value array(1, 2) -- +string(28) "4a46494600010201006000600000" + +-- Arg value array('color' => 'red', 'item' => 'pen') -- +string(28) "4a46494600010201006000600000" + +-- Arg value NULL -- +string(28) "4a46494600010201006000600000" + +-- Arg value null -- +string(28) "4a46494600010201006000600000" + +-- Arg value true -- +string(28) "4a46494600010201006000600000" + +-- Arg value false -- +string(28) "4a46494600010201006000600000" + +-- Arg value TRUE -- +string(28) "4a46494600010201006000600000" + +-- Arg value FALSE -- +string(28) "4a46494600010201006000600000" + +-- Arg value "" -- +string(28) "4a46494600010201006000600000" + +-- Arg value '' -- +string(28) "4a46494600010201006000600000" + +-- Arg value new stdclass() -- +string(28) "4a46494600010201006000600000" + +-- Arg value undefined_var -- +string(28) "4a46494600010201006000600000" + +-- Arg value unset_var -- +string(28) "4a46494600010201006000600000" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_variation3.phpt b/ext/standard/tests/image/getimagesize_variation3.phpt new file mode 100644 index 000000000..1de985065 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_variation3.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test getimagesize() function : variation - Passing non image files +--FILE-- + "test.txt", + + //File containing forcibly corrupted bmp image + "File with corrupted BMP data" => "200x100_unknown.unknown", + + //File which doesn't exist + "Non-existent file" => "nofile.ext", + + //File having no data + "Empty File" => "blank_file.bmp" +); + +echo "*** Testing getimagesize() : variation ***\n"; + +//loop through each element of the array for filename +foreach($file_types_array as $key => $filename) { + echo "\n-- $key ($filename) --\n"; + var_dump( getimagesize(dirname(__FILE__)."/$filename" ) ); + var_dump( getimagesize(dirname(__FILE__)."/$filename", $info) ); + var_dump( $info ); +}; +?> +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : variation *** + +-- File with text data (test.txt) -- +bool(false) +bool(false) +array(0) { +} + +-- File with corrupted BMP data (200x100_unknown.unknown) -- +bool(false) +bool(false) +array(0) { +} + +-- Non-existent file (nofile.ext) -- + +Warning: getimagesize(%s): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: getimagesize(%s): failed to open stream: No such file or directory in %s on line %d +bool(false) +array(0) { +} + +-- Empty File (blank_file.bmp) -- + +Notice: getimagesize(): Read error! in %s on line %d +bool(false) + +Notice: getimagesize(): Read error! in %s on line %d +bool(false) +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_variation4.phpt b/ext/standard/tests/image/getimagesize_variation4.phpt new file mode 100644 index 000000000..8fa690c27 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_variation4.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test getimagesize() function : variation - For shockwave-flash format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing getimagesize() : variation *** +array(5) { + [0]=> + int(550) + [1]=> + int(400) + [2]=> + int(13) + [3]=> + string(24) "width="550" height="400"" + ["mime"]=> + string(29) "application/x-shockwave-flash" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_wbmp.phpt b/ext/standard/tests/image/getimagesize_wbmp.phpt new file mode 100644 index 000000000..72216a926 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_wbmp.phpt @@ -0,0 +1,39 @@ +--TEST-- +GetImageSize() for wbmp format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing getimagesize() : wbmp format *** +array(5) { + [0]=> + int(75) + [1]=> + int(50) + [2]=> + int(15) + [3]=> + string(22) "width="75" height="50"" + ["mime"]=> + string(18) "image/vnd.wap.wbmp" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/getimagesize_xbm.phpt b/ext/standard/tests/image/getimagesize_xbm.phpt new file mode 100644 index 000000000..6d35fbfc5 --- /dev/null +++ b/ext/standard/tests/image/getimagesize_xbm.phpt @@ -0,0 +1,39 @@ +--TEST-- +GetImageSize() for xbm format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing getimagesize() : xbm format *** +array(5) { + [0]=> + int(75) + [1]=> + int(50) + [2]=> + int(16) + [3]=> + string(22) "width="75" height="50"" + ["mime"]=> + string(9) "image/xbm" +} +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/image/test.txt b/ext/standard/tests/image/test.txt new file mode 100644 index 000000000..81c9dfd31 --- /dev/null +++ b/ext/standard/tests/image/test.txt @@ -0,0 +1 @@ +Testing getimagesize \ No newline at end of file diff --git a/ext/standard/tests/image/testAPP.jpg b/ext/standard/tests/image/testAPP.jpg new file mode 100644 index 000000000..3936a42e4 Binary files /dev/null and b/ext/standard/tests/image/testAPP.jpg differ diff --git a/ext/standard/tests/mail/ezmlm_hash_basic.phpt b/ext/standard/tests/mail/ezmlm_hash_basic.phpt new file mode 100644 index 000000000..ce70eace2 --- /dev/null +++ b/ext/standard/tests/mail/ezmlm_hash_basic.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test ezmlm_hash() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing ezmlm_hash() : basic functionality *** +int(1) +int(7) +===Done=== diff --git a/ext/standard/tests/mail/ezmlm_hash_basic_64bit.phpt b/ext/standard/tests/mail/ezmlm_hash_basic_64bit.phpt new file mode 100644 index 000000000..cd791370c --- /dev/null +++ b/ext/standard/tests/mail/ezmlm_hash_basic_64bit.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test ezmlm_hash() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing ezmlm_hash() : basic functionality *** +int(27) +int(48) +===Done=== diff --git a/ext/standard/tests/mail/ezmlm_hash_error.phpt b/ext/standard/tests/mail/ezmlm_hash_error.phpt new file mode 100644 index 000000000..c5f49dd73 --- /dev/null +++ b/ext/standard/tests/mail/ezmlm_hash_error.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test ezmlm_hash() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ezmlm_hash() : error conditions *** + +-- Testing ezmlm_hash() function with fewer than expected no. of arguments -- + +Warning: ezmlm_hash() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing ezmlm_hash() function with more than expected no. of arguments -- + +Warning: ezmlm_hash() expects exactly 1 parameter, 2 given in %s on line %d +NULL + +-- Testing ezmlm_hash() function with invalid input - ARRAY -- + +Warning: ezmlm_hash() expects parameter 1 to be string, array given in %s on line %d +NULL + +-- Testing ezmlm_hash() function with invalid input - OBJECT without 'cast_object' method -- + +Warning: ezmlm_hash() expects parameter 1 to be string, object given in %s on line %d +NULL + +-- Testing ezmlm_hash() function with invalid input - RESOURCE -- + +Warning: ezmlm_hash() expects parameter 1 to be string, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/mail/ezmlm_hash_variation1.phpt b/ext/standard/tests/mail/ezmlm_hash_variation1.phpt new file mode 100644 index 000000000..787f180fb --- /dev/null +++ b/ext/standard/tests/mail/ezmlm_hash_variation1.phpt @@ -0,0 +1,203 @@ +--TEST-- +Test explode() function : usage variations - test values for $delimiter argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing explode() function: with unexpected inputs for 'delimiter' argument *** +-- Iteration 1 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 2 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 3 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 4 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 5 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 6 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 7 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 8 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 9 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 13 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 14 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 15 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 16 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 17 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 18 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 19 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 20 -- +array(1) { + [0]=> + string(%d) "%s" +} +-- Iteration 21 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 22 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +===Done=== diff --git a/ext/standard/tests/mail/mail_basic.phpt b/ext/standard/tests/mail/mail_basic.phpt new file mode 100644 index 000000000..77ff3512d --- /dev/null +++ b/ext/standard/tests/mail/mail_basic.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path=tee mailBasic.out >/dev/null +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +-- All Mail Content Parameters -- +bool(true) +To: user@company.com +Subject: Test Subject +KHeaders + +A Message + +-- Mandatory Parameters -- +bool(true) +To: user@company.com +Subject: Test Subject + +A Message +===DONE=== diff --git a/ext/standard/tests/mail/mail_basic2.phpt b/ext/standard/tests/mail/mail_basic2.phpt new file mode 100644 index 000000000..bb2e42eeb --- /dev/null +++ b/ext/standard/tests/mail/mail_basic2.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path=echo --- > mailBasic2.out +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +-- extra parameters -- +bool(true) +--- Extras +===DONE=== diff --git a/ext/standard/tests/mail/mail_basic3.phpt b/ext/standard/tests/mail/mail_basic3.phpt new file mode 100644 index 000000000..58eae0379 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic3.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path="exit 1" +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +-- failure -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/mail/mail_basic4.phpt b/ext/standard/tests/mail/mail_basic4.phpt new file mode 100644 index 000000000..9ecc886ae --- /dev/null +++ b/ext/standard/tests/mail/mail_basic4.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path="exit 1" +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +-- failure -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/mail/mail_basic5.phpt b/ext/standard/tests/mail/mail_basic5.phpt new file mode 100644 index 000000000..7e42ccb83 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic5.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path="exit 1" +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +-- failure -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/mail/mail_basic_alt1-win32.phpt b/ext/standard/tests/mail/mail_basic_alt1-win32.phpt new file mode 100644 index 000000000..3c4dd88a5 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic_alt1-win32.phpt @@ -0,0 +1,95 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** +Msg sent OK +Id of msg just sent is %d +.. delete it +TEST PASSED: Msgs sent and deleted OK +===Done=== diff --git a/ext/standard/tests/mail/mail_basic_alt2-win32.phpt b/ext/standard/tests/mail/mail_basic_alt2-win32.phpt new file mode 100644 index 000000000..d7bae62a0 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic_alt2-win32.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** +Msg sent OK +Id of msg just sent is %d +.. delete it +TEST PASSED: Msgs sent and deleted OK +===Done=== diff --git a/ext/standard/tests/mail/mail_basic_alt3-win32.phpt b/ext/standard/tests/mail/mail_basic_alt3-win32.phpt new file mode 100644 index 000000000..86b57eb81 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic_alt3-win32.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** +Msg sent OK +Id of msg just sent is %d +.. delete it +TEST PASSED: Msgs sent and deleted OK +===Done=== diff --git a/ext/standard/tests/mail/mail_basic_alt4-win32.phpt b/ext/standard/tests/mail/mail_basic_alt4-win32.phpt new file mode 100644 index 000000000..f4a9d466b --- /dev/null +++ b/ext/standard/tests/mail/mail_basic_alt4-win32.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** +Msg sent OK +Id of msg just sent is %d +.. delete it +TEST PASSED: Msgs sent and deleted OK +===Done=== diff --git a/ext/standard/tests/mail/mail_error.phpt b/ext/standard/tests/mail/mail_error.phpt new file mode 100644 index 000000000..871b6da0b --- /dev/null +++ b/ext/standard/tests/mail/mail_error.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test mail() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing mail() : error conditions *** + +-- Testing mail() function with more than expected no. of arguments -- + +Warning: mail() expects at most 5 parameters, 6 given in %s on line %d +NULL + +-- Testing mail() function with less than expected no. of arguments -- + +Warning: mail() expects at least 3 parameters, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/mail/mail_include.inc b/ext/standard/tests/mail/mail_include.inc new file mode 100644 index 000000000..a0ff5e0c1 --- /dev/null +++ b/ext/standard/tests/mail/mail_include.inc @@ -0,0 +1,150 @@ +name == $mailbox) { + exit ("TEST FAILED : Mailbox '$mailbox' already exists\n"); + } + } + } + + if (imap_createmailbox($imap_stream, $mailbox) === false) { + return false; + } + + // Add number of test msgs requested + if ($message_count > 0) { + populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type); + } + + return $mailbox; +} + +/** + * Populate a mailbox with generic emails + * + * @param resource $imap_stream + * @param string $mailbox + */ +function populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type = "simple"){ + + global $users, $domain; + + for($i = 1; $i <= $message_count; $i++) { + if ($msg_type == "simple") { + $msg = "From: foo@anywhere.com\r\n" + . "To: $users[0]@$domain\r\n" + . "Subject: test$i\r\n" + . "\r\n" + . "$i: this is a test message, please ignore\r\n"; + } else { + $envelope["from"]= "foo@anywhere.com"; + $envelope["to"] = "$users[0]@$domain"; + $envelope["subject"] = "Test msg $i"; + + $part1["type"] = TYPEMULTIPART; + $part1["subtype"] = "mixed"; + + $part2["type"] = TYPETEXT; + $part2["subtype"] = "plain"; + $part2["description"] = "imap_mail_compose() function"; + $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx"; + + $part3["type"] = TYPETEXT; + $part3["subtype"] = "plain"; + $part3["description"] = "Example"; + $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy"; + + $part4["type"] = TYPETEXT; + $part4["subtype"] = "plain"; + $part4["description"] = "Return Values"; + $part4["contents.data"] = "message 3:zzzzzzzzzzzzzzzzzzzzzzzzzz"; + + $body[1] = $part1; + $body[2] = $part2; + $body[3] = $part3; + $body[4] = $part4; + + $msg = imap_mail_compose($envelope, $body); + } + + imap_append($imap_stream, $mailbox, $msg); + } +} + +/** + * Get the mailbox name from a mailbox decription, i.e strip off server details. + * + * @param string mailbox complete mailbox name + * @return mailbox name + */ +function get_mailbox_name($mailbox){ + + if (preg_match('/\{.*?\}(.*)/', $mailbox, $match) != 1) { + echo "Unrecpognized mailbox name\n"; + return false; + } + + return $match[1]; +} + +?> diff --git a/ext/standard/tests/mail/mail_skipif.inc b/ext/standard/tests/mail/mail_skipif.inc new file mode 100644 index 000000000..2f4fbf3d6 --- /dev/null +++ b/ext/standard/tests/mail/mail_skipif.inc @@ -0,0 +1,16 @@ + diff --git a/ext/standard/tests/mail/mail_variation1.phpt b/ext/standard/tests/mail/mail_variation1.phpt new file mode 100644 index 000000000..bf37bf41e --- /dev/null +++ b/ext/standard/tests/mail/mail_variation1.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test mail() function : variation invalid program for sendmail +--INI-- +sendmail_path=rubbish 2>/dev/null +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : variation *** +bool(false) +===DONE=== diff --git a/ext/standard/tests/mail/mail_variation2.phpt b/ext/standard/tests/mail/mail_variation2.phpt new file mode 100644 index 000000000..1a0fcc69d --- /dev/null +++ b/ext/standard/tests/mail/mail_variation2.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test mail() function : variation force extra parameters +--INI-- +sendmail_path=echo --- > mailBasic2.out +mail.force_extra_parameters="forced params" +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing mail() : basic functionality *** +bool(true) +--- forced params +===DONE=== diff --git a/ext/standard/tests/mail/mail_variation_alt1-win32.phpt b/ext/standard/tests/mail/mail_variation_alt1-win32.phpt new file mode 100644 index 000000000..b81f3af9d --- /dev/null +++ b/ext/standard/tests/mail/mail_variation_alt1-win32.phpt @@ -0,0 +1,92 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** + +Warning: mail(): Failed to connect to mailserver at "localhost" port 2525, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in %s on line %d +TEST COMPLETED : Unable to send test email diff --git a/ext/standard/tests/mail/mail_variation_alt2-win32.phpt b/ext/standard/tests/mail/mail_variation_alt2-win32.phpt new file mode 100644 index 000000000..6ae06bb20 --- /dev/null +++ b/ext/standard/tests/mail/mail_variation_alt2-win32.phpt @@ -0,0 +1,92 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** + +Warning: mail(): Failed to connect to mailserver at "localplace" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in %s on line %d +TEST COMPLETED : Unable to send test email diff --git a/ext/standard/tests/mail/mail_variation_alt3-win32.phpt b/ext/standard/tests/mail/mail_variation_alt3-win32.phpt new file mode 100644 index 000000000..4062fae98 --- /dev/null +++ b/ext/standard/tests/mail/mail_variation_alt3-win32.phpt @@ -0,0 +1,91 @@ +--TEST-- +Test mail() function : basic functionality +--SKIPIF-- + +--INI-- +max_execution_time = 120 +--FILE-- + 0) { + + // sleep for a while to allow msg to be delivered + sleep(1); + + $current_msg_count = imap_check($imap_stream)->Nmsgs; + + // Iterate over recent msgs to find the one we sent above + for ($i = 1; $i <= $current_msg_count; $i++) { + // get hdr details + $hdr = imap_headerinfo($imap_stream, $i); + + if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) { + echo "Id of msg just sent is $i\n"; + echo ".. delete it\n"; + imap_delete($imap_stream, $i); + $found = true; + break; + } + } + + $repeat_count -= 1; +} + +if (!$found) { + echo "TEST FAILED: email not delivered\n"; +} else { + echo "TEST PASSED: Msgs sent and deleted OK\n"; +} + +imap_close($imap_stream, CL_EXPUNGE); +?> +===Done=== +--EXPECTF-- +*** Testing mail() : basic functionality *** + +Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in %s on line %d +TEST COMPLETED : Unable to send test email diff --git a/ext/standard/tests/math/abs_basic.phpt b/ext/standard/tests/math/abs_basic.phpt new file mode 100644 index 000000000..0f6ecbc09 --- /dev/null +++ b/ext/standard/tests/math/abs_basic.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test abs() function : basic functionality +--INI-- +precision = 14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing abs() : basic functionality *** +int(23) +int(23) +float(23.45) +float(23.45) +int(23) +int(23) +int(23) +int(23) +float(23.45) +float(23.45) +float(23.45) +int(0) +int(1) +int(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/abs_error.phpt b/ext/standard/tests/math/abs_error.phpt new file mode 100644 index 000000000..490fee076 --- /dev/null +++ b/ext/standard/tests/math/abs_error.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test abs() function : error conditions - incorrect number of args +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing abs() : error conditions *** + +Too many arguments + +Warning: Wrong parameter count for abs() in %s on line %d +NULL + +Too few arguments + +Warning: Wrong parameter count for abs() in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/abs_variation.phpt b/ext/standard/tests/math/abs_variation.phpt new file mode 100644 index 000000000..6df1e6b55 --- /dev/null +++ b/ext/standard/tests/math/abs_variation.phpt @@ -0,0 +1,135 @@ +--TEST-- +Test abs() function : usage variations - different data types as $number arg +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing abs() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(0) + +-- Iteration 3 -- +int(1) + +-- Iteration 4 -- +int(0) + +-- Iteration 5 -- +int(1) + +-- Iteration 6 -- +int(0) + +-- Iteration 7 -- +int(0) + +-- Iteration 8 -- +int(0) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +int(0) + +-- Iteration 11 -- +int(0) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +int(1) + +-- Iteration 14 -- +int(0) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(%d) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/atan2_variation1.phpt b/ext/standard/tests/math/atan2_variation1.phpt new file mode 100644 index 000000000..1be4127c9 --- /dev/null +++ b/ext/standard/tests/math/atan2_variation1.phpt @@ -0,0 +1,173 @@ +--TEST-- +Test atan2() function : usage variations - different data types as $y arg +--INI-- +precision = 10 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing atan2() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(0.04345089539) + +-- Iteration 3 -- +float(0.4808872802) + +-- Iteration 4 -- +float(-0.4808872802) + +-- Iteration 5 -- +float(1.570796316) + +-- Iteration 6 -- +float(0.4282641529) + +-- Iteration 7 -- +float(-0.4282641529) + +-- Iteration 8 -- +float(1.386607742) + +-- Iteration 9 -- +float(0.0005367682093) + +-- Iteration 10 -- +float(0.02173570684) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(0.04345089539) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(0.04345089539) + +-- Iteration 16 -- +float(0) + +-- Iteration 17 -- +float(0) + +-- Iteration 18 -- +float(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +float(0) + +-- Iteration 21 -- +float(0) + +-- Iteration 22 -- +float(0) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(0.04345089539) + +-- Iteration 24 -- +float(0) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- +float(%f) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/atan2_variation2.phpt b/ext/standard/tests/math/atan2_variation2.phpt new file mode 100644 index 000000000..6da019e6f --- /dev/null +++ b/ext/standard/tests/math/atan2_variation2.phpt @@ -0,0 +1,172 @@ +--TEST-- +Test atan2() function : usage variations - different data types as $x arg +--INI-- +precision = 10 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing atan2() : basic functionality *** + +-- Iteration 1 -- +float(1.570796327) + +-- Iteration 2 -- +float(1.527345431) + +-- Iteration 3 -- +float(1.089909047) + +-- Iteration 4 -- +float(2.051683607) + +-- Iteration 5 -- +float(1.071020961E-8) + +-- Iteration 6 -- +float(1.142532174) + +-- Iteration 7 -- +float(1.99906048) + +-- Iteration 8 -- +float(0.1841885846) + +-- Iteration 9 -- +float(1.570259559) + +-- Iteration 10 -- +float(1.54906062) + +-- Iteration 11 -- +float(1.570796327) + +-- Iteration 12 -- +float(1.570796327) + +-- Iteration 13 -- +float(1.527345431) + +-- Iteration 14 -- +float(1.570796327) + +-- Iteration 15 -- +float(1.527345431) + +-- Iteration 16 -- +float(1.570796327) + +-- Iteration 17 -- +float(1.570796327) + +-- Iteration 18 -- +float(1.570796327) + +-- Iteration 19 -- +float(1.570796327) + +-- Iteration 20 -- +float(1.570796327) + +-- Iteration 21 -- +float(1.570796327) + +-- Iteration 22 -- +float(1.570796327) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(1.527345431) + +-- Iteration 24 -- +float(1.570796327) + +-- Iteration 25 -- +float(1.570796327) + +-- Iteration 26 -- +float(%f) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/base_convert_error.phpt b/ext/standard/tests/math/base_convert_error.phpt index 7806c5648..b962e86f9 100644 --- a/ext/standard/tests/math/base_convert_error.phpt +++ b/ext/standard/tests/math/base_convert_error.phpt @@ -1,21 +1,43 @@ --TEST-- -Test base_convert() - wrong params base_convert() +Test base_convert() function : error conditions - incorrect input --FILE-- --EXPECTF-- +*** Testing base_convert() : error conditions *** +Incorrect number of arguments + +Warning: Wrong parameter count for base_convert() in %s on line %d -Warning: Wrong parameter count for base_convert() in %s on line 2 +Warning: Wrong parameter count for base_convert() in %s on line %d -Warning: Wrong parameter count for base_convert() in %s on line 3 +Warning: Wrong parameter count for base_convert() in %s on line %d -Warning: Wrong parameter count for base_convert() in %s on line 4 +Warning: base_convert(): Invalid `from base' (1) in %s on line %d -Warning: base_convert(): Invalid `from base' (1) in %s on line 5 +Warning: base_convert(): Invalid `to base' (37) in %s on line %d +Incorrect input -Warning: base_convert(): Invalid `to base' (37) in %s on line 6 +Catchable fatal error: Object of class classA could not be converted to string in %s on line %d diff --git a/ext/standard/tests/math/base_convert_variation1.phpt b/ext/standard/tests/math/base_convert_variation1.phpt new file mode 100644 index 000000000..afa0c5bb8 --- /dev/null +++ b/ext/standard/tests/math/base_convert_variation1.phpt @@ -0,0 +1,159 @@ +--TEST-- +Test base_convert() function : usage variations - different data types as $number argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing base_convert() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(2) "14" + +-- Iteration 4 -- +string(2) "14" + +-- Iteration 5 -- +string(11) "17777777777" + +-- Iteration 6 -- +string(3) "151" + +-- Iteration 7 -- +string(3) "151" + +-- Iteration 8 -- +string(7) "4553207" + +-- Iteration 9 -- +string(7) "4553207" + +-- Iteration 10 -- +string(1) "5" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "1" + +-- Iteration 14 -- +string(1) "0" + +-- Iteration 15 -- +string(1) "1" + +-- Iteration 16 -- +string(1) "0" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- + +Notice: Array to string conversion in %s on line %d +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- +string(1) "0" + +-- Iteration 25 -- +string(%d) "%d" +===Done=== diff --git a/ext/standard/tests/math/base_convert_variation2.phpt b/ext/standard/tests/math/base_convert_variation2.phpt new file mode 100644 index 000000000..81dbbab5e --- /dev/null +++ b/ext/standard/tests/math/base_convert_variation2.phpt @@ -0,0 +1,193 @@ +--TEST-- +Test base_convert() function : usage variations - different data types as $frombase argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing base_convert() : usage variations *** + +-- Iteration 1 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: base_convert(): Invalid `from base' (1) in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: base_convert(): Invalid `from base' (-1) in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: base_convert(): Invalid `from base' (-12) in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: base_convert(): Invalid `from base' (2147483647) in %s on line %d +bool(false) + +-- Iteration 6 -- +string(2) "31" + +-- Iteration 7 -- + +Warning: base_convert(): Invalid `from base' (-10) in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: base_convert(): Invalid `from base' (123) in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: base_convert(): Invalid `from base' (1) in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: base_convert(): Invalid `from base' (1) in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: base_convert(): Invalid `from base' (0) in %s on line %d +bool(false) +===Done=== diff --git a/ext/standard/tests/math/base_convert_variation3.phpt b/ext/standard/tests/math/base_convert_variation3.phpt new file mode 100644 index 000000000..e52867f56 --- /dev/null +++ b/ext/standard/tests/math/base_convert_variation3.phpt @@ -0,0 +1,193 @@ +--TEST-- +Test base_convert() function : usage variations - different data types as $tobase argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing base_convert() : usage variations *** + +-- Iteration 1 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 2 -- + +Warning: base_convert(): Invalid `to base' (1) in %s on line %d +bool(false) + +-- Iteration 3 -- + +Warning: base_convert(): Invalid `to base' (-1) in %s on line %d +bool(false) + +-- Iteration 4 -- + +Warning: base_convert(): Invalid `to base' (-12) in %s on line %d +bool(false) + +-- Iteration 5 -- + +Warning: base_convert(): Invalid `to base' (2147483647) in %s on line %d +bool(false) + +-- Iteration 6 -- +string(2) "25" + +-- Iteration 7 -- + +Warning: base_convert(): Invalid `to base' (-10) in %s on line %d +bool(false) + +-- Iteration 8 -- + +Warning: base_convert(): Invalid `to base' (123) in %s on line %d +bool(false) + +-- Iteration 9 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 10 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 11 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 13 -- + +Warning: base_convert(): Invalid `to base' (1) in %s on line %d +bool(false) + +-- Iteration 14 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 15 -- + +Warning: base_convert(): Invalid `to base' (1) in %s on line %d +bool(false) + +-- Iteration 16 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 23 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) + +-- Iteration 24 -- + +Warning: base_convert(): Invalid `to base' (0) in %s on line %d +bool(false) +===Done=== diff --git a/ext/standard/tests/math/bindec_basic.phpt b/ext/standard/tests/math/bindec_basic.phpt index e50dc8d48..9fcca4a7e 100644 --- a/ext/standard/tests/math/bindec_basic.phpt +++ b/ext/standard/tests/math/bindec_basic.phpt @@ -4,6 +4,8 @@ Test bindec() - basic function test bindec() +--INI-- +precision=14 --FILE-- +--INI-- +precision=14 --FILE-- --EXPECTF-- +*** Testing bindec() : error conditions *** +Incorrect number of arguments + +Warning: Wrong parameter count for bindec() in %s on line %d -Warning: Wrong parameter count for bindec() in %s on line 2 +Warning: Wrong parameter count for bindec() in %s on line %d +Incorrect input -Warning: Wrong parameter count for bindec() in %s on line 3 +Catchable fatal error: Object of class classA could not be converted to string in %s on line %d diff --git a/ext/standard/tests/math/bindec_variation1.phpt b/ext/standard/tests/math/bindec_variation1.phpt new file mode 100644 index 000000000..1e188bab3 --- /dev/null +++ b/ext/standard/tests/math/bindec_variation1.phpt @@ -0,0 +1,158 @@ +--TEST-- +Test bindec() function : usage variations - different data types as $binary_string arg +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing bindec() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(1) + +-- Iteration 4 -- +int(0) + +-- Iteration 5 -- +int(2) + +-- Iteration 6 -- +int(2) + +-- Iteration 7 -- +int(8) + +-- Iteration 8 -- +int(1) + +-- Iteration 9 -- +int(0) + +-- Iteration 10 -- +int(0) + +-- Iteration 11 -- +int(0) + +-- Iteration 12 -- +int(1) + +-- Iteration 13 -- +int(0) + +-- Iteration 14 -- +int(1) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(0) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- + +Notice: Array to string conversion in %s on line %d +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- +int(0) + +-- Iteration 21 -- +int(0) + +-- Iteration 22 -- +int(0) + +-- Iteration 23 -- +int(0) + +-- Iteration 24 -- +int(%d) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/bindec_variation1_64bit.phpt b/ext/standard/tests/math/bindec_variation1_64bit.phpt new file mode 100644 index 000000000..0a37c4c2f --- /dev/null +++ b/ext/standard/tests/math/bindec_variation1_64bit.phpt @@ -0,0 +1,158 @@ +--TEST-- +Test bindec() function : usage variations - different data types as $binary_string arg +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing bindec() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(1) + +-- Iteration 4 -- +int(0) + +-- Iteration 5 -- +int(2) + +-- Iteration 6 -- +int(2) + +-- Iteration 7 -- +int(8) + +-- Iteration 8 -- +int(1) + +-- Iteration 9 -- +int(0) + +-- Iteration 10 -- +int(0) + +-- Iteration 11 -- +int(0) + +-- Iteration 12 -- +int(1) + +-- Iteration 13 -- +int(0) + +-- Iteration 14 -- +int(1) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(0) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- + +Notice: Array to string conversion in %s on line %d +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- +int(0) + +-- Iteration 21 -- +int(0) + +-- Iteration 22 -- +int(0) + +-- Iteration 23 -- +int(0) + +-- Iteration 24 -- +int(%d) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/bug45712.phpt b/ext/standard/tests/math/bug45712.phpt new file mode 100644 index 000000000..3ebc94c92 --- /dev/null +++ b/ext/standard/tests/math/bug45712.phpt @@ -0,0 +1,73 @@ +--TEST-- +Bug #45712 (NaN/INF comparison) +--FILE-- + +--EXPECT-- +float(NAN) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +float(INF) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(true) diff --git a/ext/standard/tests/math/ceil_basic.phpt b/ext/standard/tests/math/ceil_basic.phpt new file mode 100644 index 000000000..4264b1cf5 --- /dev/null +++ b/ext/standard/tests/math/ceil_basic.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test ceil() - basic function test for ceil() +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing ceil() : basic functionality *** +float(0) +float(0) +float(1) +float(-0) +float(1) +float(-1) +float(2) +float(-1) +float(3) +float(-2) +float(31) +float(95) +float(11) +float(-10) +float(3950) +float(-3950) +float(39) +float(95) +float(1) +float(0) +float(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/ceil_error.phpt b/ext/standard/tests/math/ceil_error.phpt new file mode 100644 index 000000000..d769c185b --- /dev/null +++ b/ext/standard/tests/math/ceil_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test ceil() - error conditions - incorrect number of args +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing ceil() : error conditions *** + +Too many arguments + +Warning: Wrong parameter count for ceil() in %s on line %d +NULL + +Too few arguments + +Warning: Wrong parameter count for ceil() in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/ceil_variation1.phpt b/ext/standard/tests/math/ceil_variation1.phpt new file mode 100644 index 000000000..0045c726d --- /dev/null +++ b/ext/standard/tests/math/ceil_variation1.phpt @@ -0,0 +1,128 @@ +--TEST-- +Test ceil() function : usage variations - different data types as $value arg +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing ceil() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(0) + +-- Iteration 3 -- +float(1) + +-- Iteration 4 -- +float(0) + +-- Iteration 5 -- +float(1) + +-- Iteration 6 -- +float(0) + +-- Iteration 7 -- +float(0) + +-- Iteration 8 -- +float(0) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +float(0) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +float(1) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/decbin_error.phpt b/ext/standard/tests/math/decbin_error.phpt index a350cee7f..bad5ecd8d 100644 --- a/ext/standard/tests/math/decbin_error.phpt +++ b/ext/standard/tests/math/decbin_error.phpt @@ -1,13 +1,25 @@ --TEST-- -Test decbin() - wrong params +Test decbin() - error conditions --FILE-- +===Done=== --EXPECTF-- +*** Testing decbin() : error conditions *** +Incorrect number of arguments -Warning: Wrong parameter count for decbin() in %s on line 2 - -Warning: Wrong parameter count for decbin() in %s on line 3 +Warning: Wrong parameter count for decbin() in %s on line %d +Warning: Wrong parameter count for decbin() in %s on line %d +===Done=== diff --git a/ext/standard/tests/math/decbin_variation1.phpt b/ext/standard/tests/math/decbin_variation1.phpt new file mode 100644 index 000000000..c53261253 --- /dev/null +++ b/ext/standard/tests/math/decbin_variation1.phpt @@ -0,0 +1,178 @@ +--TEST-- +Test decbin() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing decbin() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(14) "11000000111001" + +-- Iteration 4 -- +string(32) "11111111111111111111011011010111" + +-- Iteration 5 -- +string(32) "11111111111111111111111111111111" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(4) "1010" + +-- Iteration 8 -- +string(32) "11111111111111111111111111110110" + +-- Iteration 9 -- +string(32) "10111110100110010001101000001000" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%d" +===Done=== diff --git a/ext/standard/tests/math/decbin_variation1_64bit.phpt b/ext/standard/tests/math/decbin_variation1_64bit.phpt new file mode 100644 index 000000000..e82ee3e88 --- /dev/null +++ b/ext/standard/tests/math/decbin_variation1_64bit.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test decbin() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing decbin() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(14) "11000000111001" + +-- Iteration 4 -- +string(64) "1111111111111111111111111111111111111111111111111111011011010111" + +-- Iteration 5 -- +string(1) "0" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(4) "1010" + +-- Iteration 8 -- +string(64) "1111111111111111111111111111111111111111111111111111111111110110" + +-- Iteration 9 -- +string(37) "1110010111110100110010001101000001000" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%d" +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/dechex_error.phpt b/ext/standard/tests/math/dechex_error.phpt index f83afb346..618881625 100644 --- a/ext/standard/tests/math/dechex_error.phpt +++ b/ext/standard/tests/math/dechex_error.phpt @@ -2,12 +2,25 @@ Test dechex() - wrong params dechex() --FILE-- +?> +===Done=== --EXPECTF-- +*** Testing dechex() : error conditions *** + +Incorrect number of arguments -Warning: Wrong parameter count for dechex() in %s on line 2 +Warning: Wrong parameter count for dechex() in %s on line %d -Warning: Wrong parameter count for dechex() in %s on line 3 +Warning: Wrong parameter count for dechex() in %s on line %d +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/dechex_variation1.phpt b/ext/standard/tests/math/dechex_variation1.phpt new file mode 100644 index 000000000..43f0e5337 --- /dev/null +++ b/ext/standard/tests/math/dechex_variation1.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test dechex() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing dechex() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(4) "3039" + +-- Iteration 4 -- +string(8) "fffff6d7" + +-- Iteration 5 -- +string(8) "ffffffff" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(1) "a" + +-- Iteration 8 -- +string(8) "fffffff6" + +-- Iteration 9 -- +string(8) "be991a08" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%s" +===Done=== diff --git a/ext/standard/tests/math/dechex_variation1_64bit.phpt b/ext/standard/tests/math/dechex_variation1_64bit.phpt new file mode 100644 index 000000000..a115fa913 --- /dev/null +++ b/ext/standard/tests/math/dechex_variation1_64bit.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test dechex() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing dechex() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(4) "3039" + +-- Iteration 4 -- +string(16) "fffffffffffff6d7" + +-- Iteration 5 -- +string(1) "0" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(1) "a" + +-- Iteration 8 -- +string(16) "fffffffffffffff6" + +-- Iteration 9 -- +string(10) "1cbe991a08" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%s" +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/decoct_error.phpt b/ext/standard/tests/math/decoct_error.phpt index 48c30644f..b62c52fc8 100644 --- a/ext/standard/tests/math/decoct_error.phpt +++ b/ext/standard/tests/math/decoct_error.phpt @@ -1,13 +1,25 @@ --TEST-- -Test decoct() - wrong params decoct() +Test decoct() - error conditions --FILE-- +===Done=== --EXPECTF-- +*** Testing decoct() : error conditions *** +Incorrect number of arguments -Warning: Wrong parameter count for decoct() in %s on line 2 - -Warning: Wrong parameter count for decoct() in %s on line 3 +Warning: Wrong parameter count for decoct() in %s on line %d +Warning: Wrong parameter count for decoct() in %s on line %d +===Done=== diff --git a/ext/standard/tests/math/decoct_variation1.phpt b/ext/standard/tests/math/decoct_variation1.phpt new file mode 100644 index 000000000..49ba57f54 --- /dev/null +++ b/ext/standard/tests/math/decoct_variation1.phpt @@ -0,0 +1,180 @@ +--TEST-- +Test decoct() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing decoct() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(5) "30071" + +-- Iteration 4 -- +string(11) "37777773327" + +-- Iteration 5 -- +string(11) "37777777777" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(2) "12" + +-- Iteration 8 -- +string(11) "37777777766" + +-- Iteration 9 -- +string(11) "27646215010" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%d" +===Done=== diff --git a/ext/standard/tests/math/decoct_variation1_64bit.phpt b/ext/standard/tests/math/decoct_variation1_64bit.phpt new file mode 100644 index 000000000..40afafa10 --- /dev/null +++ b/ext/standard/tests/math/decoct_variation1_64bit.phpt @@ -0,0 +1,180 @@ +--TEST-- +Test decoct() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing decoct() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(5) "30071" + +-- Iteration 4 -- +string(22) "1777777777777777773327" + +-- Iteration 5 -- +string(1) "0" + +-- Iteration 6 -- +string(1) "0" + +-- Iteration 7 -- +string(2) "12" + +-- Iteration 8 -- +string(22) "1777777777777777777766" + +-- Iteration 9 -- +string(13) "1627646215010" + +-- Iteration 10 -- +string(1) "0" + +-- Iteration 11 -- +string(1) "0" + +-- Iteration 12 -- +string(1) "0" + +-- Iteration 13 -- +string(1) "0" + +-- Iteration 14 -- +string(1) "1" + +-- Iteration 15 -- +string(1) "0" + +-- Iteration 16 -- +string(1) "1" + +-- Iteration 17 -- +string(1) "0" + +-- Iteration 18 -- +string(1) "0" + +-- Iteration 19 -- +string(1) "0" + +-- Iteration 20 -- +string(1) "0" + +-- Iteration 21 -- +string(1) "0" + +-- Iteration 22 -- +string(1) "0" + +-- Iteration 23 -- +string(1) "0" + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +string(1) "1" + +-- Iteration 25 -- +string(1) "0" + +-- Iteration 26 -- +string(1) "0" + +-- Iteration 27 -- +string(%d) "%d" +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/exp_basic.phpt b/ext/standard/tests/math/exp_basic.phpt new file mode 100644 index 000000000..e50e7ced9 --- /dev/null +++ b/ext/standard/tests/math/exp_basic.phpt @@ -0,0 +1,78 @@ +--TEST-- +Test exp() - basic function test for exp() +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing exp() : basic functionality *** + +-- Iteration 1 -- +float(22026.465794807) + +-- Iteration 2 -- +float(29732.618852891) + +-- Iteration 3 -- +float(INF) + +-- Iteration 4 -- +float(29048849665247) + +-- Iteration 5 -- +float(1.811239082889E+41) + +-- Iteration 6 -- +float(22026.465794807) + +-- Iteration 7 -- +float(INF) + +-- Iteration 8 -- +float(INF) + +-- Iteration 9 -- +float(8.6593400423994E+16) + +-- Iteration 10 -- +float(1.811239082889E+41) + +-- Iteration 11 -- +float(2.718281828459) + +-- Iteration 12 -- +float(1) + +-- Iteration 13 -- +float(1) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/exp_variation1.phpt b/ext/standard/tests/math/exp_variation1.phpt new file mode 100644 index 000000000..567f6b24b --- /dev/null +++ b/ext/standard/tests/math/exp_variation1.phpt @@ -0,0 +1,187 @@ +--TEST-- +Test exp() function : usage variations - different data types as $arg argument +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing exp() : usage variations *** + +-- Iteration 1 -- +float(1) + +-- Iteration 2 -- +float(2.718281828459) + +-- Iteration 3 -- +float(INF) + +-- Iteration 4 -- +float(0) + +-- Iteration 5 -- +float(INF) + +-- Iteration 6 -- +float(36315.502674247) + +-- Iteration 7 -- +float(2.7536449349747E-5) + +-- Iteration 8 -- +float(INF) + +-- Iteration 9 -- +float(1.0000000012346) + +-- Iteration 10 -- +float(1.6487212707001) + +-- Iteration 11 -- +float(1) + +-- Iteration 12 -- +float(1) + +-- Iteration 13 -- +float(2.718281828459) + +-- Iteration 14 -- +float(1) + +-- Iteration 15 -- +float(2.718281828459) + +-- Iteration 16 -- +float(1) + +-- Iteration 17 -- + +Warning: exp() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: exp() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: exp() expects parameter 1 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: exp() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: exp() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: exp() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: exp() expects parameter 1 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +float(1) + +-- Iteration 25 -- +float(1) + +-- Iteration 26 -- + +Warning: exp() expects parameter 1 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/expm1_basic.phpt b/ext/standard/tests/math/expm1_basic.phpt new file mode 100644 index 000000000..160c06c42 --- /dev/null +++ b/ext/standard/tests/math/expm1_basic.phpt @@ -0,0 +1,83 @@ +--TEST-- +Test expm1() - basic function test for expm1() +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing expm1() : basic functionality *** + +-- Iteration 1 -- +float(22025.465794807) + +-- Iteration 2 -- +float(29731.618852891) + +-- Iteration 3 -- +float(INF) + +-- Iteration 4 -- +float(29048849665246) + +-- Iteration 5 -- +float(1.811239082889E+41) + +-- Iteration 6 -- +float(22025.465794807) + +-- Iteration 7 -- +float(INF) + +-- Iteration 8 -- +float(INF) + +-- Iteration 9 -- +float(8.6593400423994E+16) + +-- Iteration 10 -- +float(0) + +-- Iteration 11 -- +float(1.718281828459) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(0) +===Done=== diff --git a/ext/standard/tests/math/expm1_error.phpt b/ext/standard/tests/math/expm1_error.phpt new file mode 100644 index 000000000..87bfaf406 --- /dev/null +++ b/ext/standard/tests/math/expm1_error.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test expm1() - Error conditions +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing expm1() : error conditions *** + +-- Testing expm1() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for expm1() in %s on line %d + +-- Testing expm1() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for expm1() in %s on line %d +===Done=== + diff --git a/ext/standard/tests/math/expm1_variation1.phpt b/ext/standard/tests/math/expm1_variation1.phpt new file mode 100644 index 000000000..f270f245f --- /dev/null +++ b/ext/standard/tests/math/expm1_variation1.phpt @@ -0,0 +1,185 @@ +--TEST-- +Test expm1() function : usage variations - different data types as $arg argument +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing expm1() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(1.718281828459) + +-- Iteration 3 -- +float(INF) + +-- Iteration 4 -- +float(-1) + +-- Iteration 5 -- +float(36314.502674247) + +-- Iteration 6 -- +float(-0.99997246355065) + +-- Iteration 7 -- +float(INF) + +-- Iteration 8 -- +float(0.0012353302826471) + +-- Iteration 9 -- +float(0.64872127070013) + +-- Iteration 10 -- +float(0) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(1.718281828459) + +-- Iteration 13 -- +float(0) + +-- Iteration 14 -- +float(1.718281828459) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(0) + +-- Iteration 17 -- +float(0) + +-- Iteration 18 -- +float(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +float(0) + +-- Iteration 21 -- +float(0) + +-- Iteration 22 -- +float(0) + +-- Iteration 23 -- +float(1.718281828459) + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(1.718281828459) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- +float(0) + +-- Iteration 27 -- +float(%s) +===Done=== diff --git a/ext/standard/tests/math/floor_basic.phpt b/ext/standard/tests/math/floor_basic.phpt new file mode 100644 index 000000000..bbb8a2aa5 --- /dev/null +++ b/ext/standard/tests/math/floor_basic.phpt @@ -0,0 +1,108 @@ +--TEST-- +Test floor() - basic function test for floor() +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing floor() : basic functionality *** + +-- floor 0 -- +float(0) + +-- floor 0 -- +float(0) + +-- floor 0.5 -- +float(0) + +-- floor -0.5 -- +float(-1) + +-- floor 1 -- +float(1) + +-- floor -1 -- +float(-1) + +-- floor 1.5 -- +float(1) + +-- floor -1.5 -- +float(-2) + +-- floor 2.6 -- +float(2) + +-- floor -2.6 -- +float(-3) + +-- floor 31 -- +float(31) + +-- floor 95 -- +float(95) + +-- floor 10.5 -- +float(10) + +-- floor -10.5 -- +float(-11) + +-- floor 3.95E3 -- +float(3950) + +-- floor -3.95E3 -- +float(-3950) + +-- floor 039 -- +float(39) + +-- floor 0x5F -- +float(95) + +-- floor 1 -- +float(1) + +-- floor -- +float(0) + +-- floor -- +float(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/floor_error.phpt b/ext/standard/tests/math/floor_error.phpt new file mode 100644 index 000000000..b033cfded --- /dev/null +++ b/ext/standard/tests/math/floor_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test floor() - error conditions - incorrect number of args +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing floor() : error conditions *** + +-- Too many arguments -- + +Warning: Wrong parameter count for floor() in %s on line %d +NULL + +-- Too few arguments -- + +Warning: Wrong parameter count for floor() in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/floor_variation1.phpt b/ext/standard/tests/math/floor_variation1.phpt new file mode 100644 index 000000000..baba53aab --- /dev/null +++ b/ext/standard/tests/math/floor_variation1.phpt @@ -0,0 +1,128 @@ +--TEST-- +Test floor() function : usage variations - different data types as $value arg +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing floor() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(0) + +-- Iteration 3 -- +float(1) + +-- Iteration 4 -- +float(0) + +-- Iteration 5 -- +float(1) + +-- Iteration 6 -- +float(0) + +-- Iteration 7 -- +float(0) + +-- Iteration 8 -- +float(0) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +float(0) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +float(1) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/fmod_variation1.phpt b/ext/standard/tests/math/fmod_variation1.phpt new file mode 100644 index 000000000..9c6ab13fd --- /dev/null +++ b/ext/standard/tests/math/fmod_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test fmod() function : usage variations - different data types as $x argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing fmod() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(1) + +-- Iteration 3 -- +float(1) + +-- Iteration 4 -- +float(-1) + +-- Iteration 5 -- +float(1) + +-- Iteration 6 -- +float(0.5) + +-- Iteration 7 -- +float(-0.5) + +-- Iteration 8 -- +float(0) + +-- Iteration 9 -- +float(1.23456789E-9) + +-- Iteration 10 -- +float(0.5) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(1) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(1) + +-- Iteration 16 -- +float(0) + +-- Iteration 17 -- + +Warning: fmod() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: fmod() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: fmod() expects parameter 1 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: fmod() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: fmod() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: fmod() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: fmod() expects parameter 1 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +float(0) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- + +Warning: fmod() expects parameter 1 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/fmod_variation2.phpt b/ext/standard/tests/math/fmod_variation2.phpt new file mode 100644 index 000000000..bbeddb687 --- /dev/null +++ b/ext/standard/tests/math/fmod_variation2.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test fmod() function : usage variations - different data types as $y argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing fmod() : usage variations *** + +-- Iteration 1 -- +float(NAN) + +-- Iteration 2 -- +float(0) + +-- Iteration 3 -- +float(6) + +-- Iteration 4 -- +float(1516) + +-- Iteration 5 -- +float(123456) + +-- Iteration 6 -- +float(7.5) + +-- Iteration 7 -- +float(7.5) + +-- Iteration 8 -- +float(123456) + +-- Iteration 9 -- +float(2.3605615109341E-10) + +-- Iteration 10 -- +float(0) + +-- Iteration 11 -- +float(NAN) + +-- Iteration 12 -- +float(NAN) + +-- Iteration 13 -- +float(0) + +-- Iteration 14 -- +float(NAN) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(NAN) + +-- Iteration 17 -- + +Warning: fmod() expects parameter 2 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: fmod() expects parameter 2 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: fmod() expects parameter 2 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: fmod() expects parameter 2 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: fmod() expects parameter 2 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: fmod() expects parameter 2 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: fmod() expects parameter 2 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +float(NAN) + +-- Iteration 25 -- +float(NAN) + +-- Iteration 26 -- + +Warning: fmod() expects parameter 2 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/hexdec_basic_64bit.phpt b/ext/standard/tests/math/hexdec_basic_64bit.phpt new file mode 100644 index 000000000..f1a2028b5 --- /dev/null +++ b/ext/standard/tests/math/hexdec_basic_64bit.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test hexdec() - basic function test hexdec() +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hexdec() : basic functionality *** + +-- hexdec 1194684 -- +int(18433668) + +-- hexdec 7904751 -- +int(126895953) + +-- hexdec 2147483647 -- +int(142929835591) + +-- hexdec 2147483648 -- +int(142929835592) + +-- hexdec 0x123abc -- +int(1194684) + +-- hexdec 0x789DEF -- +int(7904751) + +-- hexdec 0x7FFFFFFF -- +int(2147483647) + +-- hexdec 0x80000000 -- +int(2147483648) + +-- hexdec 0x123XYZABC -- +int(1194684) + +-- hexdec 311015 -- +int(3215381) + +-- hexdec 311015 -- +int(3215381) + +-- hexdec 31101.3 -- +int(3215379) + +-- hexdec 3110130 -- +int(51446064) + +-- hexdec 4767 -- +int(18279) + +-- hexdec 011237 -- +int(70199) + +-- hexdec 1 -- +int(1) + +-- hexdec -- +int(0) + +-- hexdec -- +int(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/hexdec_error.phpt b/ext/standard/tests/math/hexdec_error.phpt index 06ce3fb20..1e9971c5a 100644 --- a/ext/standard/tests/math/hexdec_error.phpt +++ b/ext/standard/tests/math/hexdec_error.phpt @@ -2,11 +2,35 @@ Test hexdec() - wrong params test hexdec() --FILE-- --EXPECTF-- +*** Testing hexdec() : error conditions *** + +-- Incorrect number of arguments -- + +Warning: Wrong parameter count for hexdec() in %s on line %d + +Warning: Wrong parameter count for hexdec() in %s on line %d -Warning: Wrong parameter count for hexdec() in %s on line 2 +-- Incorrect input -- -Warning: Wrong parameter count for hexdec() in %s on line 3 +Catchable fatal error: Object of class classA could not be converted to string in %s on line %d diff --git a/ext/standard/tests/math/hexdec_variation1.phpt b/ext/standard/tests/math/hexdec_variation1.phpt new file mode 100644 index 000000000..2b3f1b6ab --- /dev/null +++ b/ext/standard/tests/math/hexdec_variation1.phpt @@ -0,0 +1,168 @@ +--TEST-- +Test hexdec() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hexdec() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(74565) + +-- Iteration 4 -- +int(9029) + +-- Iteration 5 -- +float(285960729237) + +-- Iteration 6 -- +float(285960729238) + +-- Iteration 7 -- +int(261) + +-- Iteration 8 -- +int(261) + +-- Iteration 9 -- +float(20015998341120) + +-- Iteration 10 -- +float(1250999896553) + +-- Iteration 11 -- +int(5) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- +int(0) + +-- Iteration 14 -- +int(1) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(1) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- + +Notice: Array to string conversion in %s on line %d +int(170) + +-- Iteration 21 -- +int(2748) + +-- Iteration 22 -- +int(2748) + +-- Iteration 23 -- +int(2748) + +-- Iteration 24 -- +int(0) + +-- Iteration 25 -- +int(0) + +-- Iteration 26 -- +%s +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/hexdec_variation1_64bit.phpt b/ext/standard/tests/math/hexdec_variation1_64bit.phpt new file mode 100644 index 000000000..65beb2d91 --- /dev/null +++ b/ext/standard/tests/math/hexdec_variation1_64bit.phpt @@ -0,0 +1,168 @@ +--TEST-- +Test hexdec() function : usage variations - different data types as $number arg +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hexdec() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(74565) + +-- Iteration 4 -- +int(9029) + +-- Iteration 5 -- +int(285960729237) + +-- Iteration 6 -- +int(285960729238) + +-- Iteration 7 -- +int(261) + +-- Iteration 8 -- +int(261) + +-- Iteration 9 -- +int(20015998341120) + +-- Iteration 10 -- +int(1250999896553) + +-- Iteration 11 -- +int(5) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- +int(0) + +-- Iteration 14 -- +int(1) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(1) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- + +Notice: Array to string conversion in %s on line %d +int(170) + +-- Iteration 21 -- +int(2748) + +-- Iteration 22 -- +int(2748) + +-- Iteration 23 -- +int(2748) + +-- Iteration 24 -- +int(0) + +-- Iteration 25 -- +int(0) + +-- Iteration 26 -- +%s +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/hypot_basic.phpt b/ext/standard/tests/math/hypot_basic.phpt new file mode 100644 index 000000000..336bf244a --- /dev/null +++ b/ext/standard/tests/math/hypot_basic.phpt @@ -0,0 +1,392 @@ +--TEST-- +Test hypot() - basic function test hypot() +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hypot() : basic functionality *** + +Y:23 X:33 float(40.224370722238) + +Y:23 X:-33 float(40.224370722238) + +Y:23 X:33.45 float(40.594365372549) + +Y:23 X:-33.45 float(40.594365372549) + +Y:23 X:39 float(45.276925690687) + +Y:23 X:31 float(38.600518131238) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:43.45 float(49.162002603637) + +Y:23 X:1.345e1 float(26.643995571235) + +Y:23 X:33abc float(40.224370722238) + +Y:23 X: float(23) + +Y:23 X:1 float(23.021728866443) + +Y:23 X: float(23) + +Y:-23 X:33 float(40.224370722238) + +Y:-23 X:-33 float(40.224370722238) + +Y:-23 X:33.45 float(40.594365372549) + +Y:-23 X:-33.45 float(40.594365372549) + +Y:-23 X:39 float(45.276925690687) + +Y:-23 X:31 float(38.600518131238) + +Y:-23 X:33 float(40.224370722238) + +Y:-23 X:43.45 float(49.162002603637) + +Y:-23 X:1.345e1 float(26.643995571235) + +Y:-23 X:33abc float(40.224370722238) + +Y:-23 X: float(23) + +Y:-23 X:1 float(23.021728866443) + +Y:-23 X: float(23) + +Y:23.45 X:33 float(40.483360779461) + +Y:23.45 X:-33 float(40.483360779461) + +Y:23.45 X:33.45 float(40.851009779441) + +Y:23.45 X:-33.45 float(40.851009779441) + +Y:23.45 X:39 float(45.507169764774) + +Y:23.45 X:31 float(38.870329301409) + +Y:23.45 X:33 float(40.483360779461) + +Y:23.45 X:43.45 float(49.374132903779) + +Y:23.45 X:1.345e1 float(27.033405260899) + +Y:23.45 X:33abc float(40.483360779461) + +Y:23.45 X: float(23.45) + +Y:23.45 X:1 float(23.471312276905) + +Y:23.45 X: float(23.45) + +Y:-23.45 X:33 float(40.483360779461) + +Y:-23.45 X:-33 float(40.483360779461) + +Y:-23.45 X:33.45 float(40.851009779441) + +Y:-23.45 X:-33.45 float(40.851009779441) + +Y:-23.45 X:39 float(45.507169764774) + +Y:-23.45 X:31 float(38.870329301409) + +Y:-23.45 X:33 float(40.483360779461) + +Y:-23.45 X:43.45 float(49.374132903779) + +Y:-23.45 X:1.345e1 float(27.033405260899) + +Y:-23.45 X:33abc float(40.483360779461) + +Y:-23.45 X: float(23.45) + +Y:-23.45 X:1 float(23.471312276905) + +Y:-23.45 X: float(23.45) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:-33 float(40.224370722238) + +Y:23 X:33.45 float(40.594365372549) + +Y:23 X:-33.45 float(40.594365372549) + +Y:23 X:39 float(45.276925690687) + +Y:23 X:31 float(38.600518131238) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:43.45 float(49.162002603637) + +Y:23 X:1.345e1 float(26.643995571235) + +Y:23 X:33abc float(40.224370722238) + +Y:23 X: float(23) + +Y:23 X:1 float(23.021728866443) + +Y:23 X: float(23) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:-33 float(40.224370722238) + +Y:23 X:33.45 float(40.594365372549) + +Y:23 X:-33.45 float(40.594365372549) + +Y:23 X:39 float(45.276925690687) + +Y:23 X:31 float(38.600518131238) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:43.45 float(49.162002603637) + +Y:23 X:1.345e1 float(26.643995571235) + +Y:23 X:33abc float(40.224370722238) + +Y:23 X: float(23) + +Y:23 X:1 float(23.021728866443) + +Y:23 X: float(23) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:-33 float(40.224370722238) + +Y:23 X:33.45 float(40.594365372549) + +Y:23 X:-33.45 float(40.594365372549) + +Y:23 X:39 float(45.276925690687) + +Y:23 X:31 float(38.600518131238) + +Y:23 X:33 float(40.224370722238) + +Y:23 X:43.45 float(49.162002603637) + +Y:23 X:1.345e1 float(26.643995571235) + +Y:23 X:33abc float(40.224370722238) + +Y:23 X: float(23) + +Y:23 X:1 float(23.021728866443) + +Y:23 X: float(23) + +Y:23.45 X:33 float(40.483360779461) + +Y:23.45 X:-33 float(40.483360779461) + +Y:23.45 X:33.45 float(40.851009779441) + +Y:23.45 X:-33.45 float(40.851009779441) + +Y:23.45 X:39 float(45.507169764774) + +Y:23.45 X:31 float(38.870329301409) + +Y:23.45 X:33 float(40.483360779461) + +Y:23.45 X:43.45 float(49.374132903779) + +Y:23.45 X:1.345e1 float(27.033405260899) + +Y:23.45 X:33abc float(40.483360779461) + +Y:23.45 X: float(23.45) + +Y:23.45 X:1 float(23.471312276905) + +Y:23.45 X: float(23.45) + +Y:2.345e1 X:33 float(40.483360779461) + +Y:2.345e1 X:-33 float(40.483360779461) + +Y:2.345e1 X:33.45 float(40.851009779441) + +Y:2.345e1 X:-33.45 float(40.851009779441) + +Y:2.345e1 X:39 float(45.507169764774) + +Y:2.345e1 X:31 float(38.870329301409) + +Y:2.345e1 X:33 float(40.483360779461) + +Y:2.345e1 X:43.45 float(49.374132903779) + +Y:2.345e1 X:1.345e1 float(27.033405260899) + +Y:2.345e1 X:33abc float(40.483360779461) + +Y:2.345e1 X: float(23.45) + +Y:2.345e1 X:1 float(23.471312276905) + +Y:2.345e1 X: float(23.45) + +Y:23abc X:33 float(40.224370722238) + +Y:23abc X:-33 float(40.224370722238) + +Y:23abc X:33.45 float(40.594365372549) + +Y:23abc X:-33.45 float(40.594365372549) + +Y:23abc X:39 float(45.276925690687) + +Y:23abc X:31 float(38.600518131238) + +Y:23abc X:33 float(40.224370722238) + +Y:23abc X:43.45 float(49.162002603637) + +Y:23abc X:1.345e1 float(26.643995571235) + +Y:23abc X:33abc float(40.224370722238) + +Y:23abc X: float(23) + +Y:23abc X:1 float(23.021728866443) + +Y:23abc X: float(23) + +Y: X:33 float(33) + +Y: X:-33 float(33) + +Y: X:33.45 float(33.45) + +Y: X:-33.45 float(33.45) + +Y: X:39 float(39) + +Y: X:31 float(31) + +Y: X:33 float(33) + +Y: X:43.45 float(43.45) + +Y: X:1.345e1 float(13.45) + +Y: X:33abc float(33) + +Y: X: float(0) + +Y: X:1 float(1) + +Y: X: float(0) + +Y:1 X:33 float(33.015148038438) + +Y:1 X:-33 float(33.015148038438) + +Y:1 X:33.45 float(33.464944344792) + +Y:1 X:-33.45 float(33.464944344792) + +Y:1 X:39 float(39.012818406262) + +Y:1 X:31 float(31.016124838542) + +Y:1 X:33 float(33.015148038438) + +Y:1 X:43.45 float(43.461505956421) + +Y:1 X:1.345e1 float(13.487123488721) + +Y:1 X:33abc float(33.015148038438) + +Y:1 X: float(1) + +Y:1 X:1 float(1.4142135623731) + +Y:1 X: float(1) + +Y: X:33 float(33) + +Y: X:-33 float(33) + +Y: X:33.45 float(33.45) + +Y: X:-33.45 float(33.45) + +Y: X:39 float(39) + +Y: X:31 float(31) + +Y: X:33 float(33) + +Y: X:43.45 float(43.45) + +Y: X:1.345e1 float(13.45) + +Y: X:33abc float(33) + +Y: X: float(0) + +Y: X:1 float(1) + +Y: X: float(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/hypot_error.phpt b/ext/standard/tests/math/hypot_error.phpt index 19a9ee085..5cb79dfdc 100644 --- a/ext/standard/tests/math/hypot_error.phpt +++ b/ext/standard/tests/math/hypot_error.phpt @@ -1,18 +1,33 @@ --TEST-- Test hypot() - wrong params test hypot() ---INI-- -precision=14 --FILE-- +===Done=== --EXPECTF-- +*** Testing hypot() : error conditions *** + +-- Testing hypot() function with less than expected no. of arguments -- +Warning: Wrong parameter count for hypot() in %s on line %d -Warning: Wrong parameter count for hypot() in %s on line 2 +Warning: Wrong parameter count for hypot() in %s on line %d -Warning: Wrong parameter count for hypot() in %s on line 3 +-- Testing hypot() function with more than expected no. of arguments -- -Warning: Wrong parameter count for hypot() in %s on line 4 +Warning: Wrong parameter count for hypot() in %s on line %d +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/hypot_variation1.phpt b/ext/standard/tests/math/hypot_variation1.phpt new file mode 100644 index 000000000..5d5d8b18c --- /dev/null +++ b/ext/standard/tests/math/hypot_variation1.phpt @@ -0,0 +1,171 @@ +--TEST-- +Test hypot() function : usage variations - different data types as $x argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hypot() : usage variations *** + +-- Iteration 1 -- +float(5) + +-- Iteration 2 -- +float(5.0990195135928) + +-- Iteration 3 -- +float(12345.001012556) + +-- Iteration 4 -- +float(2345.0053304843) + +-- Iteration 5 -- +float(2147483647) + +-- Iteration 6 -- +float(11.629703349613) + +-- Iteration 7 -- +float(11.629703349613) + +-- Iteration 8 -- +float(123456789000) + +-- Iteration 9 -- +float(5) + +-- Iteration 10 -- +float(5.0249378105604) + +-- Iteration 11 -- +float(5) + +-- Iteration 12 -- +float(5) + +-- Iteration 13 -- +float(5.0990195135928) + +-- Iteration 14 -- +float(5) + +-- Iteration 15 -- +float(5.0990195135928) + +-- Iteration 16 -- +float(5) + +-- Iteration 17 -- +float(5) + +-- Iteration 18 -- +float(5) + +-- Iteration 19 -- +float(5) + +-- Iteration 20 -- +float(5) + +-- Iteration 21 -- +float(5) + +-- Iteration 22 -- +float(5) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(5.0990195135928) + +-- Iteration 24 -- +float(5) + +-- Iteration 25 -- +float(5) + +-- Iteration 26 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/hypot_variation2.phpt b/ext/standard/tests/math/hypot_variation2.phpt new file mode 100644 index 000000000..68f71d70f --- /dev/null +++ b/ext/standard/tests/math/hypot_variation2.phpt @@ -0,0 +1,171 @@ +--TEST-- +Test hypot() function : usage variations - different data types as $y argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing hypot() : usage variations *** + +-- Iteration 1 -- +float(3) + +-- Iteration 2 -- +float(3.1622776601684) + +-- Iteration 3 -- +float(12345.00036452) + +-- Iteration 4 -- +float(2345.0019189758) + +-- Iteration 5 -- +float(2147483647) + +-- Iteration 6 -- +float(10.920164833921) + +-- Iteration 7 -- +float(10.920164833921) + +-- Iteration 8 -- +float(123456789000) + +-- Iteration 9 -- +float(3) + +-- Iteration 10 -- +float(3.0413812651491) + +-- Iteration 11 -- +float(3) + +-- Iteration 12 -- +float(3) + +-- Iteration 13 -- +float(3.1622776601684) + +-- Iteration 14 -- +float(3) + +-- Iteration 15 -- +float(3.1622776601684) + +-- Iteration 16 -- +float(3) + +-- Iteration 17 -- +float(3) + +-- Iteration 18 -- +float(3) + +-- Iteration 19 -- +float(3) + +-- Iteration 20 -- +float(3) + +-- Iteration 21 -- +float(3) + +-- Iteration 22 -- +float(3) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(3.1622776601684) + +-- Iteration 24 -- +float(3) + +-- Iteration 25 -- +float(3) + +-- Iteration 26 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/is_finite_variation1.phpt b/ext/standard/tests/math/is_finite_variation1.phpt new file mode 100644 index 000000000..83786ad93 --- /dev/null +++ b/ext/standard/tests/math/is_finite_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test is_finite() function : usage variations - different data types as $val argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing is_finite() : usage variations *** + +-- Iteration 1 -- +bool(true) + +-- Iteration 2 -- +bool(true) + +-- Iteration 3 -- +bool(true) + +-- Iteration 4 -- +bool(true) + +-- Iteration 5 -- +bool(true) + +-- Iteration 6 -- +bool(true) + +-- Iteration 7 -- +bool(true) + +-- Iteration 8 -- +bool(true) + +-- Iteration 9 -- +bool(true) + +-- Iteration 10 -- +bool(true) + +-- Iteration 11 -- +bool(true) + +-- Iteration 12 -- +bool(true) + +-- Iteration 13 -- +bool(true) + +-- Iteration 14 -- +bool(true) + +-- Iteration 15 -- +bool(true) + +-- Iteration 16 -- +bool(true) + +-- Iteration 17 -- + +Warning: is_finite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: is_finite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: is_finite() expects parameter 1 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: is_finite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: is_finite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: is_finite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: is_finite() expects parameter 1 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +bool(true) + +-- Iteration 25 -- +bool(true) + +-- Iteration 26 -- + +Warning: is_finite() expects parameter 1 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/is_infinite_variation1.phpt b/ext/standard/tests/math/is_infinite_variation1.phpt new file mode 100644 index 000000000..0d8573d9b --- /dev/null +++ b/ext/standard/tests/math/is_infinite_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test is_infinite() function : usage variations - different data types as $val argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing is_infinite() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- + +Warning: is_infinite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: is_infinite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: is_infinite() expects parameter 1 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: is_infinite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: is_infinite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: is_infinite() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: is_infinite() expects parameter 1 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- +bool(false) + +-- Iteration 26 -- + +Warning: is_infinite() expects parameter 1 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/is_nan_variation1.phpt b/ext/standard/tests/math/is_nan_variation1.phpt new file mode 100644 index 000000000..3eb642954 --- /dev/null +++ b/ext/standard/tests/math/is_nan_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test is_nan() function : usage variations - different data types as $val argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing is_nan() : usage variations *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- + +Warning: is_nan() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: is_nan() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: is_nan() expects parameter 1 to be double, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: is_nan() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: is_nan() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: is_nan() expects parameter 1 to be double, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: is_nan() expects parameter 1 to be double, object given in %s on line %d +NULL + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- +bool(false) + +-- Iteration 26 -- + +Warning: is_nan() expects parameter 1 to be double, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/log1p_basic.phpt b/ext/standard/tests/math/log1p_basic.phpt new file mode 100644 index 000000000..debadebbc --- /dev/null +++ b/ext/standard/tests/math/log1p_basic.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test log1p() - basic function test log1p() +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing log1p() : basic functionality *** + + LOG1p tests + +-- log1p 23 -- +float(3.1780538303479) + +-- log1p -23 -- +float(NAN) + +-- log1p 23.45 -- +float(3.1966302159209) + +-- log1p -23.45 -- +float(NAN) + +-- log1p 23 -- +float(3.1780538303479) + +-- log1p 23 -- +float(3.1780538303479) + +-- log1p 23 -- +float(3.1780538303479) + +-- log1p 23.45 -- +float(3.1966302159209) + +-- log1p 2.345e1 -- +float(3.1966302159209) + +-- log1p -- +float(0) + +-- log1p 1 -- +float(0.69314718055995) + +-- log1p -- +float(0) +===Done=== diff --git a/ext/standard/tests/math/log1p_error.phpt b/ext/standard/tests/math/log1p_error.phpt new file mode 100644 index 000000000..63b301f9b --- /dev/null +++ b/ext/standard/tests/math/log1p_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test log1p() - Error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing log1p() : error conditions *** + +-- Testing log1p() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for log1p() in %s on line %d + +-- Testing log1p() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for log1p() in %s on line %d +===Done=== diff --git a/ext/standard/tests/math/log1p_variation1.phpt b/ext/standard/tests/math/log1p_variation1.phpt new file mode 100644 index 000000000..93df709c7 --- /dev/null +++ b/ext/standard/tests/math/log1p_variation1.phpt @@ -0,0 +1,181 @@ +--TEST-- +Test log1p() function : usage variations - different data types as $arg argument +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing log1p() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(0.69314718055995) + +-- Iteration 3 -- +float(9.4210874029538) + +-- Iteration 4 -- +float(NAN) + +-- Iteration 5 -- +float(21.487562597358) + +-- Iteration 6 -- +float(NAN) + +-- Iteration 7 -- +float(2.4423470353692) + +-- Iteration 8 -- +float(NAN) + +-- Iteration 9 -- +float(11.723654587153) + +-- Iteration 10 -- +float(0.0012338064377078) + +-- Iteration 11 -- +float(0.40546510810816) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(0) + +-- Iteration 14 -- +float(0.69314718055995) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(0.69314718055995) + +-- Iteration 17 -- +float(0) + +-- Iteration 18 -- +float(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +float(0) + +-- Iteration 21 -- +float(0) + +-- Iteration 22 -- +float(0) + +-- Iteration 23 -- +float(0) + +-- Iteration 24 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(0.69314718055995) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- +float(0) + +-- Iteration 27 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/log_variation1.phpt b/ext/standard/tests/math/log_variation1.phpt new file mode 100644 index 000000000..c1a797c29 --- /dev/null +++ b/ext/standard/tests/math/log_variation1.phpt @@ -0,0 +1,170 @@ +--TEST-- +Test log() function : usage variations - different data types as $arg argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing log() : usage variations *** + +-- Iteration 1 -- +float(-INF) + +-- Iteration 2 -- +float(0) + +-- Iteration 3 -- +float(4.091491094268) + +-- Iteration 4 -- +float(NAN) + +-- Iteration 5 -- +float(9.3319298653812) + +-- Iteration 6 -- +float(1.0211892990699) + +-- Iteration 7 -- +float(NAN) + +-- Iteration 8 -- +float(11.091514977169) + +-- Iteration 9 -- +float(-8.9084850228307) + +-- Iteration 10 -- +float(-0.30102999566398) + +-- Iteration 11 -- +float(-INF) + +-- Iteration 12 -- +float(-INF) + +-- Iteration 13 -- +float(0) + +-- Iteration 14 -- +float(-INF) + +-- Iteration 15 -- +float(0) + +-- Iteration 16 -- +float(-INF) + +-- Iteration 17 -- +float(-INF) + +-- Iteration 18 -- +float(-INF) + +-- Iteration 19 -- +float(-INF) + +-- Iteration 20 -- +float(-INF) + +-- Iteration 21 -- +float(-INF) + +-- Iteration 22 -- +float(-INF) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(0) + +-- Iteration 24 -- +float(-INF) + +-- Iteration 25 -- +float(-INF) + +-- Iteration 26 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/log_variation2.phpt b/ext/standard/tests/math/log_variation2.phpt new file mode 100644 index 000000000..837fda360 --- /dev/null +++ b/ext/standard/tests/math/log_variation2.phpt @@ -0,0 +1,200 @@ +--TEST-- +Test log() function : usage variations - different data types as $base argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing log() : usage variations *** + +-- Iteration 1 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 2 -- +float(INF) + +-- Iteration 3 -- +float(0.12145441273706) + +-- Iteration 4 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 5 -- +float(0.053250469650086) + +-- Iteration 6 -- +float(0.48661854224853) + +-- Iteration 7 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 8 -- +float(0.044802684673473) + +-- Iteration 9 -- +float(-0.055781611216686) + +-- Iteration 10 -- +float(-1.6507645591169) + +-- Iteration 11 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 12 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 13 -- +float(INF) + +-- Iteration 14 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 15 -- +float(INF) + +-- Iteration 16 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 17 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 18 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 19 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 20 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 21 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 22 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(INF) + +-- Iteration 24 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 25 -- + +Warning: log(): base must be greater than 0 in %s on line %d +bool(false) + +-- Iteration 26 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/mt_rand_variation1.phpt b/ext/standard/tests/math/mt_rand_variation1.phpt new file mode 100644 index 000000000..f2ba9bc34 --- /dev/null +++ b/ext/standard/tests/math/mt_rand_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test rand() function : usage variations - different data types as $min argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing mt_rand() : usage variations *** + +-- Iteration 1 -- +int(%i) + +-- Iteration 2 -- +int(%i) + +-- Iteration 3 -- +int(%i) + +-- Iteration 4 -- +int(%i) + +-- Iteration 5 -- +int(%i) + +-- Iteration 6 -- +int(%i) + +-- Iteration 7 -- +int(%i) + +-- Iteration 8 -- +int(%i) + +-- Iteration 9 -- +int(%i) + +-- Iteration 10 -- +int(%i) + +-- Iteration 11 -- +int(%i) + +-- Iteration 12 -- +int(%i) + +-- Iteration 13 -- +int(%i) + +-- Iteration 14 -- +int(%i) + +-- Iteration 15 -- +int(%i) + +-- Iteration 16 -- +int(%i) + +-- Iteration 17 -- + +Warning: mt_rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: mt_rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: mt_rand() expects parameter 1 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: mt_rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: mt_rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: mt_rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: mt_rand() expects parameter 1 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +int(%i) + +-- Iteration 25 -- +int(%i) + +-- Iteration 26 -- + +Warning: mt_rand() expects parameter 1 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/mt_rand_variation2.phpt b/ext/standard/tests/math/mt_rand_variation2.phpt new file mode 100644 index 000000000..28b2304a3 --- /dev/null +++ b/ext/standard/tests/math/mt_rand_variation2.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test mt_rand() function : usage variations - different data types as $max argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing mt_rand) : usage variations *** + +-- Iteration 1 -- +int(%i) + +-- Iteration 2 -- +int(%i) + +-- Iteration 3 -- +int(%i) + +-- Iteration 4 -- +int(%i) + +-- Iteration 5 -- +int(%i) + +-- Iteration 6 -- +int(%i) + +-- Iteration 7 -- +int(%i) + +-- Iteration 8 -- +int(%i) + +-- Iteration 9 -- +int(%i) + +-- Iteration 10 -- +int(%i) + +-- Iteration 11 -- +int(%i) + +-- Iteration 12 -- +int(%i) + +-- Iteration 13 -- +int(%i) + +-- Iteration 14 -- +int(%i) + +-- Iteration 15 -- +int(%i) + +-- Iteration 16 -- +int(%i) + +-- Iteration 17 -- + +Warning: mt_rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: mt_rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: mt_rand() expects parameter 2 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: mt_rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: mt_rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: mt_rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: mt_rand() expects parameter 2 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +int(%i) + +-- Iteration 25 -- +int(%i) + +-- Iteration 26 -- + +Warning: mt_rand() expects parameter 2 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/mt_srand_variation1.phpt b/ext/standard/tests/math/mt_srand_variation1.phpt new file mode 100644 index 000000000..feb0b3797 --- /dev/null +++ b/ext/standard/tests/math/mt_srand_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test mt_srand() function : usage variations - different data types as $seed argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing mt_srand() : usage variations *** + +-- Iteration 1 -- +NULL + +-- Iteration 2 -- +NULL + +-- Iteration 3 -- +NULL + +-- Iteration 4 -- +NULL + +-- Iteration 5 -- +NULL + +-- Iteration 6 -- +NULL + +-- Iteration 7 -- +NULL + +-- Iteration 8 -- +NULL + +-- Iteration 9 -- +NULL + +-- Iteration 10 -- +NULL + +-- Iteration 11 -- +NULL + +-- Iteration 12 -- +NULL + +-- Iteration 13 -- +NULL + +-- Iteration 14 -- +NULL + +-- Iteration 15 -- +NULL + +-- Iteration 16 -- +NULL + +-- Iteration 17 -- + +Warning: mt_srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: mt_srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: mt_srand() expects parameter 1 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: mt_srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: mt_srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: mt_srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: mt_srand() expects parameter 1 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +NULL + +-- Iteration 25 -- +NULL + +-- Iteration 26 -- + +Warning: mt_srand() expects parameter 1 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/octdec_basic_64bit.phpt b/ext/standard/tests/math/octdec_basic_64bit.phpt new file mode 100644 index 000000000..b5bccbcc9 --- /dev/null +++ b/ext/standard/tests/math/octdec_basic_64bit.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test octdec() - basic function test octdec() +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing octdec() : basic functionality *** +int(14489) +int(253) +int(36947879) +int(4618484) +int(4104) +int(5349) +int(342391) +int(375) +int(2147483647) +int(2147483648) +int(668) +int(5349) +int(102923) +int(823384) +int(1) +int(0) +int(0) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/octdec_error.phpt b/ext/standard/tests/math/octdec_error.phpt index 8a3d1759a..fb855585b 100644 --- a/ext/standard/tests/math/octdec_error.phpt +++ b/ext/standard/tests/math/octdec_error.phpt @@ -2,11 +2,36 @@ Test octdec() - wrong params test octdec() --FILE-- --EXPECTF-- +*** Testing octdec() : error conditions *** + +-- Incorrect number of arguments -- + +Warning: Wrong parameter count for octdec() in %s on line %d + +Warning: Wrong parameter count for octdec() in %s on line %d -Warning: Wrong parameter count for octdec() in %s on line 2 +-- Incorrect input -- -Warning: Wrong parameter count for octdec() in %s on line 3 +Catchable fatal error: Object of class classA could not be converted to string in %s on line %d diff --git a/ext/standard/tests/math/octdec_variation1.phpt b/ext/standard/tests/math/octdec_variation1.phpt new file mode 100644 index 000000000..117119600 --- /dev/null +++ b/ext/standard/tests/math/octdec_variation1.phpt @@ -0,0 +1,164 @@ +--TEST-- +Test octdec() function : usage variations - different data types as $octal_string arg +--INI-- +precision=14 +--FILE-- + +---Done--- +--EXPECTF-- +*** Testing octdec() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(5349) + +-- Iteration 4 -- +int(1253) + +-- Iteration 5 -- +int(1134037) + +-- Iteration 6 -- +int(1134038) + +-- Iteration 7 -- +int(69) + +-- Iteration 8 -- +int(69) + +-- Iteration 9 -- +int(175304192) + +-- Iteration 10 -- +int(342391) + +-- Iteration 11 -- +int(5) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- +int(0) + +-- Iteration 14 -- +int(1) + +-- Iteration 15 -- +int(0) + +-- Iteration 16 -- +int(1) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +int(0) + +-- Iteration 20 -- + +Notice: Array to string conversion in %s on line %d +int(0) + +-- Iteration 21 -- +int(0) + +-- Iteration 22 -- +int(0) + +-- Iteration 23 -- +int(0) + +-- Iteration 24 -- +int(0) + +-- Iteration 25 -- +int(0) + +-- Iteration 26 -- +int(%d) +---Done--- diff --git a/ext/standard/tests/math/pow_basic.phpt b/ext/standard/tests/math/pow_basic.phpt index 96864e0ab..0fdb158b5 100644 --- a/ext/standard/tests/math/pow_basic.phpt +++ b/ext/standard/tests/math/pow_basic.phpt @@ -2,36 +2,288 @@ Test pow() - basic function test pow() --INI-- precision=14 +--SKIPIF-- + --FILE-- +===Done=== --EXPECTF-- -int(279841) -int(279841) -float(302392.75950625) -float(302392.75950625) -int(279841) -int(279841) -int(279841) -float(302392.75950625) -float(302392.75950625) -int(0) -int(1) -int(0) \ No newline at end of file + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23 +..... Exponent = -1 Result = -0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = -12167 +..... Exponent = -3 Result = -8.2189529053999E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23.1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.1 +..... Exponent = -1 Result = 0.043290043290043 +..... Exponent = 2 Result = 533.61 +..... Exponent = -2 Result = 0.0018740278480538 +..... Exponent = 3 Result = 12326.391 +..... Exponent = -3 Result = 8.1126746668997E-5 +..... Exponent = 2.5 Result = 2564.6608940579 +..... Exponent = -2.5 Result = 0.00038991509650141 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23 +..... Exponent = -1 Result = -0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = -12167 +..... Exponent = -3 Result = -8.2189529053999E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 1 +..... Exponent = -1 Result = 1 +..... Exponent = 2 Result = 1 +..... Exponent = -2 Result = 1 +..... Exponent = 3 Result = 1 +..... Exponent = -3 Result = 1 +..... Exponent = 2.5 Result = 1 +..... Exponent = -2.5 Result = 1 +..... Exponent = 500 Result = 1 +..... Exponent = -500 Result = 1 +..... Exponent = 2147483647 Result = 1 +..... Exponent = -2147483648 Result = 1 + + + +Base = 23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23.45 +..... Exponent = -1 Result = -0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = -12895.213625 +..... Exponent = -3 Result = -7.7548153065204E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 2.345e1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 2147483647 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 2147483647 +..... Exponent = -1 Result = 4.6566128752458E-10 +..... Exponent = 2 Result = 4.6116860141324E+18 +..... Exponent = -2 Result = 2.1684043469905E-19 +..... Exponent = 3 Result = 9.903520300448E+27 +..... Exponent = -3 Result = 1.0097419600935E-28 +..... Exponent = 2.5 Result = 2.1370991100146E+23 +..... Exponent = -2.5 Result = 4.6792401686657E-24 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -2147483648 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -2147483648 +..... Exponent = -1 Result = -4.6566128730774E-10 +..... Exponent = 2 Result = 4.6116860184274E+18 +..... Exponent = -2 Result = 2.168404344971E-19 +..... Exponent = 3 Result = -9.903520314283E+27 +..... Exponent = -3 Result = -1.0097419586829E-28 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/pow_basic2.phpt b/ext/standard/tests/math/pow_basic2.phpt new file mode 100644 index 000000000..fc55cacca --- /dev/null +++ b/ext/standard/tests/math/pow_basic2.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test pow() - basic function test pow() - with large exponents +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- + +-- The following all result in INF -- +float(INF) +float(INF) +float(INF) + + +-- The following all result in 0 -- +float(0) +float(0) +float(0) +float(0) + + +-- The following all result in -0 -- +float(%s) + + +-- The following all result in -INF -- +float(-INF) +float(-INF) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/pow_basic_64bit.phpt b/ext/standard/tests/math/pow_basic_64bit.phpt new file mode 100644 index 000000000..339154142 --- /dev/null +++ b/ext/standard/tests/math/pow_basic_64bit.phpt @@ -0,0 +1,287 @@ +--TEST-- +Test pow() - basic function test pow() +--INI-- +precision=14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23 +..... Exponent = -1 Result = -0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = -12167 +..... Exponent = -3 Result = -8.2189529053999E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23.1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.1 +..... Exponent = -1 Result = 0.043290043290043 +..... Exponent = 2 Result = 533.61 +..... Exponent = -2 Result = 0.0018740278480538 +..... Exponent = 3 Result = 12326.391 +..... Exponent = -3 Result = 8.1126746668997E-5 +..... Exponent = 2.5 Result = 2564.6608940579 +..... Exponent = -2.5 Result = 0.00038991509650141 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23 +..... Exponent = -1 Result = -0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = -12167 +..... Exponent = -3 Result = -8.2189529053999E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 1 +..... Exponent = -1 Result = 1 +..... Exponent = 2 Result = 1 +..... Exponent = -2 Result = 1 +..... Exponent = 3 Result = 1 +..... Exponent = -3 Result = 1 +..... Exponent = 2.5 Result = 1 +..... Exponent = -2.5 Result = 1 +..... Exponent = 500 Result = 1 +..... Exponent = -500 Result = 1 +..... Exponent = 2147483647 Result = 1 +..... Exponent = -2147483648 Result = 1 + + + +Base = 23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -23.45 +..... Exponent = -1 Result = -0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = -12895.213625 +..... Exponent = -3 Result = -7.7548153065204E-5 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23 +..... Exponent = -1 Result = 0.043478260869565 +..... Exponent = 2 Result = 529 +..... Exponent = -2 Result = 0.001890359168242 +..... Exponent = 3 Result = 12167 +..... Exponent = -3 Result = 8.2189529053999E-5 +..... Exponent = 2.5 Result = 2536.9948758324 +..... Exponent = -2.5 Result = 0.00039416713432339 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 23.45 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 2.345e1 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 23.45 +..... Exponent = -1 Result = 0.042643923240938 +..... Exponent = 2 Result = 549.9025 +..... Exponent = -2 Result = 0.001818504189379 +..... Exponent = 3 Result = 12895.213625 +..... Exponent = -3 Result = 7.7548153065204E-5 +..... Exponent = 2.5 Result = 2662.9138571162 +..... Exponent = -2.5 Result = 0.00037552848257846 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = 9223372036854775807 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = 9223372036854775807 +..... Exponent = -1 Result = 1.0842021724855E-19 +..... Exponent = 2 Result = 8.5070591730235E+37 +..... Exponent = -2 Result = 1.1754943508223E-38 +..... Exponent = 3 Result = 7.8463771692334E+56 +..... Exponent = -3 Result = 1.274473528906E-57 +..... Exponent = 2.5 Result = 2.5835942961798E+47 +..... Exponent = -2.5 Result = 3.8705767444936E-48 +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = INF +..... Exponent = -2147483648 Result = 0 + + + +Base = -9223372036854775808 +..... Exponent = 0 Result = 1 +..... Exponent = 1 Result = -9223372036854775808 +..... Exponent = -1 Result = -1.0842021724855E-19 +..... Exponent = 2 Result = 8.5070591730235E+37 +..... Exponent = -2 Result = 1.1754943508223E-38 +..... Exponent = 3 Result = -7.8463771692334E+56 +..... Exponent = -3 Result = -1.274473528906E-57 +..... Exponent = 2.5 Result = NAN +..... Exponent = -2.5 Result = NAN +..... Exponent = 500 Result = INF +..... Exponent = -500 Result = 0 +..... Exponent = 2147483647 Result = -INF +..... Exponent = -2147483648 Result = 0 + +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/pow_variation1.phpt b/ext/standard/tests/math/pow_variation1.phpt new file mode 100644 index 000000000..df511906b --- /dev/null +++ b/ext/standard/tests/math/pow_variation1.phpt @@ -0,0 +1,176 @@ +--TEST-- +Test pow() function : usage variations - different data types as $base argument +--INI-- +precision = 14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing pow() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +float(1881365963625) + +-- Iteration 4 -- +float(-12895213625) + +-- Iteration 5 -- +float(9.903520300448E+27) + +-- Iteration 6 -- +float(1157.625) + +-- Iteration 7 -- +float(-1157.625) + +-- Iteration 8 -- +float(1.881676371789%dE+33) + +-- Iteration 9 -- +float(1.881676371789%dE-27) + +-- Iteration 10 -- +float(0.125) + +-- Iteration 11 -- +int(0) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- +int(1) + +-- Iteration 14 -- +int(0) + +-- Iteration 15 -- +int(1) + +-- Iteration 16 -- +int(0) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +int(0) + +-- Iteration 21 -- +int(0) + +-- Iteration 22 -- +int(0) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +int(1) + +-- Iteration 24 -- +int(0) + +-- Iteration 25 -- +int(0) + +-- Iteration 26 -- +%s +===Done=== diff --git a/ext/standard/tests/math/pow_variation1_64bit.phpt b/ext/standard/tests/math/pow_variation1_64bit.phpt new file mode 100644 index 000000000..24b482680 --- /dev/null +++ b/ext/standard/tests/math/pow_variation1_64bit.phpt @@ -0,0 +1,176 @@ +--TEST-- +Test pow() function : usage variations - different data types as $base argument +--INI-- +precision = 14 +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing pow() : usage variations *** + +-- Iteration 1 -- +int(0) + +-- Iteration 2 -- +int(1) + +-- Iteration 3 -- +int(1881365963625) + +-- Iteration 4 -- +int(-12895213625) + +-- Iteration 5 -- +float(7.8463771692334E+56) + +-- Iteration 6 -- +float(1157.625) + +-- Iteration 7 -- +float(-1157.625) + +-- Iteration 8 -- +float(1.8816763717892E+33) + +-- Iteration 9 -- +float(1.8816763717892E-27) + +-- Iteration 10 -- +float(0.125) + +-- Iteration 11 -- +int(0) + +-- Iteration 12 -- +int(0) + +-- Iteration 13 -- +int(1) + +-- Iteration 14 -- +int(0) + +-- Iteration 15 -- +int(1) + +-- Iteration 16 -- +int(0) + +-- Iteration 17 -- +int(0) + +-- Iteration 18 -- +int(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +int(0) + +-- Iteration 21 -- +int(0) + +-- Iteration 22 -- +int(0) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +int(1) + +-- Iteration 24 -- +int(0) + +-- Iteration 25 -- +int(0) + +-- Iteration 26 -- +%s +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/pow_variation2.phpt b/ext/standard/tests/math/pow_variation2.phpt new file mode 100644 index 000000000..b1800bb15 --- /dev/null +++ b/ext/standard/tests/math/pow_variation2.phpt @@ -0,0 +1,172 @@ +--TEST-- +Test pow() function : usage variations - different data types as $exp argument +--INI-- +precision = 14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing pow() : usage variations *** + +-- Iteration 1 -- +float(1) + +-- Iteration 2 -- +float(20.3) + +-- Iteration 3 -- +float(INF) + +-- Iteration 4 -- +float(0) + +-- Iteration 5 -- +float(INF) + +-- Iteration 6 -- +float(1856.6929774279) + +-- Iteration 7 -- +float(0.00053859200856424) + +-- Iteration 8 -- +float(INF) + +-- Iteration 9 -- +float(1.0000000037168) + +-- Iteration 10 -- +float(4.5055521304275) + +-- Iteration 11 -- +float(1) + +-- Iteration 12 -- +float(1) + +-- Iteration 13 -- +float(20.3) + +-- Iteration 14 -- +float(1) + +-- Iteration 15 -- +float(20.3) + +-- Iteration 16 -- +float(1) + +-- Iteration 17 -- +float(1) + +-- Iteration 18 -- +float(1) + +-- Iteration 19 -- +float(1) + +-- Iteration 20 -- +float(1) + +-- Iteration 21 -- +float(1) + +-- Iteration 22 -- +float(1) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +float(20.3) + +-- Iteration 24 -- +float(1) + +-- Iteration 25 -- +float(1) + +-- Iteration 26 -- +%s +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/rand_variation1.phpt b/ext/standard/tests/math/rand_variation1.phpt new file mode 100644 index 000000000..02e552b78 --- /dev/null +++ b/ext/standard/tests/math/rand_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test rand() function : usage variations - different data types as $min argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing rand() : usage variations *** + +-- Iteration 1 -- +int(%i) + +-- Iteration 2 -- +int(%i) + +-- Iteration 3 -- +int(%i) + +-- Iteration 4 -- +int(%i) + +-- Iteration 5 -- +int(%i) + +-- Iteration 6 -- +int(%i) + +-- Iteration 7 -- +int(%i) + +-- Iteration 8 -- +int(%i) + +-- Iteration 9 -- +int(%i) + +-- Iteration 10 -- +int(%i) + +-- Iteration 11 -- +int(%i) + +-- Iteration 12 -- +int(%i) + +-- Iteration 13 -- +int(%i) + +-- Iteration 14 -- +int(%i) + +-- Iteration 15 -- +int(%i) + +-- Iteration 16 -- +int(%i) + +-- Iteration 17 -- + +Warning: rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: rand() expects parameter 1 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: rand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: rand() expects parameter 1 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +int(%i) + +-- Iteration 25 -- +int(%i) + +-- Iteration 26 -- + +Warning: rand() expects parameter 1 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/rand_variation2.phpt b/ext/standard/tests/math/rand_variation2.phpt new file mode 100644 index 000000000..c0e1fc637 --- /dev/null +++ b/ext/standard/tests/math/rand_variation2.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test rand() function : usage variations - different data types as $max argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing rand) : usage variations *** + +-- Iteration 1 -- +int(%i) + +-- Iteration 2 -- +int(%i) + +-- Iteration 3 -- +int(%i) + +-- Iteration 4 -- +int(%i) + +-- Iteration 5 -- +int(%i) + +-- Iteration 6 -- +int(%i) + +-- Iteration 7 -- +int(%i) + +-- Iteration 8 -- +int(%i) + +-- Iteration 9 -- +int(%i) + +-- Iteration 10 -- +int(%i) + +-- Iteration 11 -- +int(%i) + +-- Iteration 12 -- +int(%i) + +-- Iteration 13 -- +int(%i) + +-- Iteration 14 -- +int(%i) + +-- Iteration 15 -- +int(%i) + +-- Iteration 16 -- +int(%i) + +-- Iteration 17 -- + +Warning: rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: rand() expects parameter 2 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: rand() expects parameter 2 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: rand() expects parameter 2 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +int(%i) + +-- Iteration 25 -- +int(%i) + +-- Iteration 26 -- + +Warning: rand() expects parameter 2 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/round_basic.phpt b/ext/standard/tests/math/round_basic.phpt new file mode 100644 index 000000000..3384522f8 --- /dev/null +++ b/ext/standard/tests/math/round_basic.phpt @@ -0,0 +1,192 @@ +--TEST-- +Test round() - basic function test for round() +--INI-- +precision=14 +--FILE-- + "; + var_dump($res); + } +} +?> +===Done=== +--EXPECTF-- +*** Testing round() : basic functionality *** +round: 123456789 +...with precision 2-> float(123456789) +...with precision 8-> float(123456789) +...with precision 3-> float(123456789) +...with precision 4-> float(123456789) +...with precision 3.6-> float(123456789) +...with precision 2-> float(123456789) +...with precision 0x03-> float(123456789) +...with precision 04-> float(123456789) +...with precision 3.6-> float(123456789) +...with precision 2.1e1-> float(123456789) +...with precision -> float(123456789) +...with precision 1-> float(123456789) +...with precision -> float(123456789) +round: 123.456789 +...with precision 2-> float(123.46) +...with precision 8-> float(123.456789) +...with precision 3-> float(123.457) +...with precision 4-> float(123.4568) +...with precision 3.6-> float(123.457) +...with precision 2-> float(123.46) +...with precision 0x03-> float(123) +...with precision 04-> float(123.4568) +...with precision 3.6-> float(123.457) +...with precision 2.1e1-> float(123.46) +...with precision -> float(123) +...with precision 1-> float(123.5) +...with precision -> float(123) +round: -4.5679123 +...with precision 2-> float(-4.57) +...with precision 8-> float(-4.5679123) +...with precision 3-> float(-4.568) +...with precision 4-> float(-4.5679) +...with precision 3.6-> float(-4.568) +...with precision 2-> float(-4.57) +...with precision 0x03-> float(-5) +...with precision 04-> float(-4.5679) +...with precision 3.6-> float(-4.568) +...with precision 2.1e1-> float(-4.57) +...with precision -> float(-5) +...with precision 1-> float(-4.6) +...with precision -> float(-5) +round: 12300 +...with precision 2-> float(12300) +...with precision 8-> float(12300) +...with precision 3-> float(12300) +...with precision 4-> float(12300) +...with precision 3.6-> float(12300) +...with precision 2-> float(12300) +...with precision 0x03-> float(12300) +...with precision 04-> float(12300) +...with precision 3.6-> float(12300) +...with precision 2.1e1-> float(12300) +...with precision -> float(12300) +...with precision 1-> float(12300) +...with precision -> float(12300) +round: -4567 +...with precision 2-> float(-4567) +...with precision 8-> float(-4567) +...with precision 3-> float(-4567) +...with precision 4-> float(-4567) +...with precision 3.6-> float(-4567) +...with precision 2-> float(-4567) +...with precision 0x03-> float(-4567) +...with precision 04-> float(-4567) +...with precision 3.6-> float(-4567) +...with precision 2.1e1-> float(-4567) +...with precision -> float(-4567) +...with precision 1-> float(-4567) +...with precision -> float(-4567) +round: 2311527 +...with precision 2-> float(2311527) +...with precision 8-> float(2311527) +...with precision 3-> float(2311527) +...with precision 4-> float(2311527) +...with precision 3.6-> float(2311527) +...with precision 2-> float(2311527) +...with precision 0x03-> float(2311527) +...with precision 04-> float(2311527) +...with precision 3.6-> float(2311527) +...with precision 2.1e1-> float(2311527) +...with precision -> float(2311527) +...with precision 1-> float(2311527) +...with precision -> float(2311527) +round: 14680063 +...with precision 2-> float(14680063) +...with precision 8-> float(14680063) +...with precision 3-> float(14680063) +...with precision 4-> float(14680063) +...with precision 3.6-> float(14680063) +...with precision 2-> float(14680063) +...with precision 0x03-> float(14680063) +...with precision 04-> float(14680063) +...with precision 3.6-> float(14680063) +...with precision 2.1e1-> float(14680063) +...with precision -> float(14680063) +...with precision 1-> float(14680063) +...with precision -> float(14680063) +round: 1.234567 +...with precision 2-> float(1.23) +...with precision 8-> float(1.234567) +...with precision 3-> float(1.235) +...with precision 4-> float(1.2346) +...with precision 3.6-> float(1.235) +...with precision 2-> float(1.23) +...with precision 0x03-> float(1) +...with precision 04-> float(1.2346) +...with precision 3.6-> float(1.235) +...with precision 2.1e1-> float(1.23) +...with precision -> float(1) +...with precision 1-> float(1.2) +...with precision -> float(1) +round: 2.3456789e8 +...with precision 2-> float(234567890) +...with precision 8-> float(234567890) +...with precision 3-> float(234567890) +...with precision 4-> float(234567890) +...with precision 3.6-> float(234567890) +...with precision 2-> float(234567890) +...with precision 0x03-> float(234567890) +...with precision 04-> float(234567890) +...with precision 3.6-> float(234567890) +...with precision 2.1e1-> float(234567890) +...with precision -> float(234567890) +...with precision 1-> float(234567890) +...with precision -> float(234567890) +round: 0x1234CDEF +...with precision 2-> float(305450479) +...with precision 8-> float(305450479) +...with precision 3-> float(305450479) +...with precision 4-> float(305450479) +...with precision 3.6-> float(305450479) +...with precision 2-> float(305450479) +...with precision 0x03-> float(305450479) +...with precision 04-> float(305450479) +...with precision 3.6-> float(305450479) +...with precision 2.1e1-> float(305450479) +...with precision -> float(305450479) +...with precision 1-> float(305450479) +...with precision -> float(305450479) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/round_error.phpt b/ext/standard/tests/math/round_error.phpt new file mode 100644 index 000000000..d0a66201c --- /dev/null +++ b/ext/standard/tests/math/round_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test round() function : error conditions - incorrect number of args +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing round() : error conditions *** + +-- Wrong nmumber of arguments -- + +Warning: Wrong parameter count for round() in %s on line %d +NULL + +Warning: Wrong parameter count for round() in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/math/round_variation1.phpt b/ext/standard/tests/math/round_variation1.phpt new file mode 100644 index 000000000..c89dd6818 --- /dev/null +++ b/ext/standard/tests/math/round_variation1.phpt @@ -0,0 +1,173 @@ +--TEST-- +Test round() function : usage variations - different data types as $val argument +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing round() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(1) + +-- Iteration 3 -- +float(12345) + +-- Iteration 4 -- +float(-2345) + +-- Iteration 5 -- +float(2147483647) + +-- Iteration 6 -- +float(10.5) + +-- Iteration 7 -- +float(-10.5) + +-- Iteration 8 -- +float(123456789000) + +-- Iteration 9 -- +float(1.23457E-9) + +-- Iteration 10 -- +float(0.5) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(1) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(1) + +-- Iteration 16 -- +float(0) + +-- Iteration 17 -- +float(0) + +-- Iteration 18 -- +float(0) + +-- Iteration 19 -- +bool(false) + +-- Iteration 20 -- +float(0) + +-- Iteration 21 -- +float(0) + +-- Iteration 22 -- +float(0) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +float(1) + +-- Iteration 24 -- +float(0) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- +float(%f) +===Done=== diff --git a/ext/standard/tests/math/round_variation2.phpt b/ext/standard/tests/math/round_variation2.phpt new file mode 100644 index 000000000..e3287e1b5 --- /dev/null +++ b/ext/standard/tests/math/round_variation2.phpt @@ -0,0 +1,173 @@ +--TEST-- +Test round() function : usage variations - different data types as $precision argument +--INI-- +precision=14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing round() : usage variations *** + +-- Iteration 1 -- +float(123) + +-- Iteration 2 -- +float(123.4) + +-- Iteration 3 -- +float(123.4456789) + +-- Iteration 4 -- +float(0) + +-- Iteration 5 -- +float(123.4456789) + +-- Iteration 6 -- +float(123.4456789) + +-- Iteration 7 -- +float(0) + +-- Iteration 8 -- +float(123.4456789) + +-- Iteration 9 -- +float(123) + +-- Iteration 10 -- +float(123) + +-- Iteration 11 -- +float(123) + +-- Iteration 12 -- +float(123) + +-- Iteration 13 -- +float(123.4) + +-- Iteration 14 -- +float(123) + +-- Iteration 15 -- +float(123.4) + +-- Iteration 16 -- +float(123) + +-- Iteration 17 -- +float(123) + +-- Iteration 18 -- +float(123) + +-- Iteration 19 -- +float(123) + +-- Iteration 20 -- +float(123) + +-- Iteration 21 -- +float(123) + +-- Iteration 22 -- +float(123) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to int in %s on line %d +float(123.4) + +-- Iteration 24 -- +float(123) + +-- Iteration 25 -- +float(123) + +-- Iteration 26 -- +float(%f) +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/math/sqrt_variation.phpt b/ext/standard/tests/math/sqrt_variation.phpt new file mode 100644 index 000000000..8d2be5371 --- /dev/null +++ b/ext/standard/tests/math/sqrt_variation.phpt @@ -0,0 +1,174 @@ +--TEST-- +Test variations in usage of sqrt() +--INI-- +precision = 14 +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing sqrt() : usage variations *** + +-- Iteration 1 -- +float(0) + +-- Iteration 2 -- +float(1) + +-- Iteration 3 -- +float(111.10805551354) + +-- Iteration 4 -- +float(NAN) + +-- Iteration 5 -- +float(46340.950001052) + +-- Iteration 6 -- +float(3.2403703492039) + +-- Iteration 7 -- +float(NAN) + +-- Iteration 8 -- +float(351364.18286445) + +-- Iteration 9 -- +float(3.5136418286445E-5) + +-- Iteration 10 -- +float(0.70710678118655) + +-- Iteration 11 -- +float(0) + +-- Iteration 12 -- +float(0) + +-- Iteration 13 -- +float(1) + +-- Iteration 14 -- +float(0) + +-- Iteration 15 -- +float(1) + +-- Iteration 16 -- +float(0) + +-- Iteration 17 -- +float(0) + +-- Iteration 18 -- +float(0) + +-- Iteration 19 -- +float(0) + +-- Iteration 20 -- +float(0) + +-- Iteration 21 -- +float(0) + +-- Iteration 22 -- +float(0) + +-- Iteration 23 -- + +Notice: Object of class classA could not be converted to double in %s on line %d +float(1) + +-- Iteration 24 -- +float(0) + +-- Iteration 25 -- +float(0) + +-- Iteration 26 -- +float(%f) +===Done=== + diff --git a/ext/standard/tests/math/srand_basic.phpt b/ext/standard/tests/math/srand_basic.phpt index 16aa2dd69..b56ad10ac 100644 --- a/ext/standard/tests/math/srand_basic.phpt +++ b/ext/standard/tests/math/srand_basic.phpt @@ -1,7 +1,14 @@ --TEST-- -Maths test for xapic versions of srand() +Test srand() - basic function test for srand() --FILE-- +===Done=== --EXPECTF-- +*** Testing srand() : basic functionality *** NULL NULL NULL @@ -21,4 +30,5 @@ NULL NULL NULL NULL -NULL \ No newline at end of file +NULL +===Done=== diff --git a/ext/standard/tests/math/srand_error.phpt b/ext/standard/tests/math/srand_error.phpt index 852867222..4c21e5572 100644 --- a/ext/standard/tests/math/srand_error.phpt +++ b/ext/standard/tests/math/srand_error.phpt @@ -1,17 +1,32 @@ --TEST-- -Test srand() - wrong params test srand() +Test srand() function : error conditions - incorrect number of args --FILE-- +===Done=== --EXPECTF-- -Warning: mt_srand() expects at most 1 parameter, 2 given in %s on line 2 +*** Testing srand() : error conditions *** + +Warning: srand() expects at most 1 parameter, 2 given in %s on line %d NULL -Warning: mt_srand() expects parameter 1 to be long, string given in %s on line 3 +Warning: srand() expects parameter 1 to be long, string given in %s on line %d NULL -Notice: A non well formed numeric value encountered in %s on line 4 +Notice: A non well formed numeric value encountered in %s on line %d NULL +===Done=== diff --git a/ext/standard/tests/math/srand_variation1.phpt b/ext/standard/tests/math/srand_variation1.phpt new file mode 100644 index 000000000..16da80fd6 --- /dev/null +++ b/ext/standard/tests/math/srand_variation1.phpt @@ -0,0 +1,184 @@ +--TEST-- +Test srand() function : usage variations - different data types as $seed argument +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing srand() : usage variations *** + +-- Iteration 1 -- +NULL + +-- Iteration 2 -- +NULL + +-- Iteration 3 -- +NULL + +-- Iteration 4 -- +NULL + +-- Iteration 5 -- +NULL + +-- Iteration 6 -- +NULL + +-- Iteration 7 -- +NULL + +-- Iteration 8 -- +NULL + +-- Iteration 9 -- +NULL + +-- Iteration 10 -- +NULL + +-- Iteration 11 -- +NULL + +-- Iteration 12 -- +NULL + +-- Iteration 13 -- +NULL + +-- Iteration 14 -- +NULL + +-- Iteration 15 -- +NULL + +-- Iteration 16 -- +NULL + +-- Iteration 17 -- + +Warning: srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 18 -- + +Warning: srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 19 -- + +Warning: srand() expects parameter 1 to be long, array given in %s on line %d +NULL + +-- Iteration 20 -- + +Warning: srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 21 -- + +Warning: srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 22 -- + +Warning: srand() expects parameter 1 to be long, string given in %s on line %d +NULL + +-- Iteration 23 -- + +Warning: srand() expects parameter 1 to be long, object given in %s on line %d +NULL + +-- Iteration 24 -- +NULL + +-- Iteration 25 -- +NULL + +-- Iteration 26 -- + +Warning: srand() expects parameter 1 to be long, resource given in %s on line %d +NULL +===Done=== diff --git a/ext/standard/tests/misc/syslog_basic.phpt b/ext/standard/tests/misc/syslog_basic.phpt new file mode 100644 index 000000000..6c627e918 --- /dev/null +++ b/ext/standard/tests/misc/syslog_basic.phpt @@ -0,0 +1,13 @@ +--TEST-- +Basic syslog test +--FILE-- + +===DONE=== +--EXPECT-- +===DONE=== diff --git a/ext/standard/tests/misc/syslog_parameters.phpt b/ext/standard/tests/misc/syslog_parameters.phpt new file mode 100644 index 000000000..f4b651973 --- /dev/null +++ b/ext/standard/tests/misc/syslog_parameters.phpt @@ -0,0 +1,22 @@ +--TEST-- +Syslog parameter parsing test +--FILE-- + +--EXPECTF-- +Warning: openlog() expects exactly 3 parameters, 0 given in %s on line %d + +Warning: openlog() expects parameter 2 to be long, string given in %s on line %d + +Warning: syslog() expects exactly 2 parameters, 0 given in %s on line %d + +Warning: syslog() expects parameter 1 to be long, string given in %s on line %d + +Warning: Wrong parameter count for closelog() in %s on line %d diff --git a/ext/standard/tests/misc/syslog_vars_variation1.phpt b/ext/standard/tests/misc/syslog_vars_variation1.phpt new file mode 100644 index 000000000..7cac8adf6 --- /dev/null +++ b/ext/standard/tests/misc/syslog_vars_variation1.phpt @@ -0,0 +1,10 @@ +--TEST-- +define_syslog_variables() variation 1 +--INI-- +define_syslog_variables=On +--FILE-- + +--EXPECTF-- +bool(true) diff --git a/ext/standard/tests/misc/syslog_vars_variation2.phpt b/ext/standard/tests/misc/syslog_vars_variation2.phpt new file mode 100644 index 000000000..07acb8075 --- /dev/null +++ b/ext/standard/tests/misc/syslog_vars_variation2.phpt @@ -0,0 +1,51 @@ +--TEST-- +define_syslog_variables() variation 2 +--FILE-- + +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) diff --git a/ext/standard/tests/network/closelog_basic.phpt b/ext/standard/tests/network/closelog_basic.phpt new file mode 100644 index 000000000..06798a5c1 --- /dev/null +++ b/ext/standard/tests/network/closelog_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test closelog() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing closelog() : basic functionality *** + +-- Testing closelog() function with Zero arguments -- +bool(true) +===DONE=== diff --git a/ext/standard/tests/network/closelog_error.phpt b/ext/standard/tests/network/closelog_error.phpt new file mode 100644 index 000000000..e759e35a7 --- /dev/null +++ b/ext/standard/tests/network/closelog_error.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test closelog() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing closelog() : error conditions *** + +-- Testing closelog() function with one argument -- + +Warning: Wrong parameter count for closelog() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_basic-win32.phpt b/ext/standard/tests/network/define_syslog_variables_basic-win32.phpt new file mode 100644 index 000000000..5a07239e8 --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_basic-win32.phpt @@ -0,0 +1,105 @@ +--TEST-- +Test define_syslog_variables() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : basic functionality *** +NULL +PASSED +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_basic.phpt b/ext/standard/tests/network/define_syslog_variables_basic.phpt new file mode 100644 index 000000000..836c0b30f --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_basic.phpt @@ -0,0 +1,124 @@ +--TEST-- +Test define_syslog_variables() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : basic functionality *** +NULL +PASSED +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_error.phpt b/ext/standard/tests/network/define_syslog_variables_error.phpt new file mode 100644 index 000000000..d02a26503 --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_error.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test define_syslog_variables() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing define_syslog_variables() : error conditions *** + +-- Testing define_syslog_variables() function with one argument -- + +Warning: Wrong parameter count for define_syslog_variables() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_variation-win32.phpt b/ext/standard/tests/network/define_syslog_variables_variation-win32.phpt new file mode 100644 index 000000000..b5bfdd263 --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_variation-win32.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test define_syslog_variables() function : variation +--INI-- +define_syslog_variables = true +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : variation *** +PASSED +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_variation.phpt b/ext/standard/tests/network/define_syslog_variables_variation.phpt new file mode 100644 index 000000000..010dbdd38 --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_variation.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test define_syslog_variables() function : variation +--SKIPIF-- + +--INI-- +define_syslog_variables = true +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : variation *** +PASSED +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_variation2-win32.phpt b/ext/standard/tests/network/define_syslog_variables_variation2-win32.phpt new file mode 100644 index 000000000..a8785fe7d --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_variation2-win32.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test define_syslog_variables() function : variation +--INI-- +define_syslog_variables = false +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : variation *** +PASSED +===DONE=== diff --git a/ext/standard/tests/network/define_syslog_variables_variation2.phpt b/ext/standard/tests/network/define_syslog_variables_variation2.phpt new file mode 100644 index 000000000..da68df289 --- /dev/null +++ b/ext/standard/tests/network/define_syslog_variables_variation2.phpt @@ -0,0 +1,96 @@ +--TEST-- +Test define_syslog_variables() function : variation +--SKIPIF-- + +--INI-- +define_syslog_variables = false +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing define_syslog_variables() : variation *** +PASSED +===DONE=== diff --git a/ext/standard/tests/network/fsockopen_basic.phpt b/ext/standard/tests/network/fsockopen_basic.phpt new file mode 100644 index 000000000..3ec936633 --- /dev/null +++ b/ext/standard/tests/network/fsockopen_basic.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test fsockopen() function : basic functionality +--FILE-- + +--EXPECTF-- +*** Testing fsockopen() : basic functionality *** +Open a server socket + +Calling fsockopen() with all possible arguments: +resource(%d) of type (stream) + +Calling fsockopen() with mandatory arguments: +resource(%d) of type (stream) + +Calling fsockopen() with address and port in same string: +resource(%d) of type (stream) +Done diff --git a/ext/standard/tests/network/fsockopen_error.phpt b/ext/standard/tests/network/fsockopen_error.phpt new file mode 100644 index 000000000..3b13b8cf3 --- /dev/null +++ b/ext/standard/tests/network/fsockopen_error.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test fsockopen() function : error conditions +--FILE-- + +--EXPECTF-- +*** Testing fsockopen() : basic error conditions *** + +-- Testing fsockopen() function with more than expected no. of arguments -- + +Warning: fsockopen() expects at most 5 parameters, 6 given in %s on line %d +bool(false) +string(10) "string_val" +int(10) + +-- Testing fsockopen() function with less than expected no. of arguments -- + +Warning: fsockopen() expects at least 1 parameter, 0 given in %s on line %d +bool(false) + +-- Attempting to connect to a non-existent socket -- + +Warning: fsockopen(): unable to connect to tcp://127.0.0.1:31337 (%a) in %s on line %d +bool(false) +string(%d) "%a" + +-- Attempting to connect using an invalid protocol -- + +Warning: fsockopen(): unable to connect to invalid://127.0.0.1:31337 (Unable to find the socket transport "invalid" - did you forget to enable it when you configured PHP?) in %s on line %d +bool(false) +string(100) "Unable to find the socket transport "invalid" - did you forget to enable it when you configured PHP?" +Done diff --git a/ext/standard/tests/network/fsockopen_variation1.phpt b/ext/standard/tests/network/fsockopen_variation1.phpt new file mode 100644 index 000000000..2e5f8d9ad --- /dev/null +++ b/ext/standard/tests/network/fsockopen_variation1.phpt @@ -0,0 +1,32 @@ +--TEST-- +testing fsockopen without a protocol string +--FILE-- + +--EXPECTF-- +Open a server socket + +Calling fsockopen() without a protocol in the hostname string: +resource(%d) of type (stream) + +Calling fsockopen() with address and port in same string, without a protocol: +resource(%d) of type (stream) +Done diff --git a/ext/standard/tests/network/fsockopen_variation2.phpt b/ext/standard/tests/network/fsockopen_variation2.phpt new file mode 100644 index 000000000..262ae0ba0 --- /dev/null +++ b/ext/standard/tests/network/fsockopen_variation2.phpt @@ -0,0 +1,48 @@ +--TEST-- +testing fsockopen() with udp sockets +--FILE-- + +--EXPECTF-- +Open a server socket + +Calling fsockopen(): +resource(%d) of type (stream) + +Pass some data between the sockets: +string(10) "0123456789" + +Calling fsockopen() with address and port in same string: +resource(%d) of type (stream) + +Pass some data between the sockets: +string(10) "0123456789" +Done diff --git a/ext/standard/tests/network/inet.phpt b/ext/standard/tests/network/inet.phpt index 09cf20623..0df527c7a 100644 --- a/ext/standard/tests/network/inet.phpt +++ b/ext/standard/tests/network/inet.phpt @@ -64,12 +64,12 @@ bool(false) Warning: inet_pton(): Unrecognized address abra in %s on line %d bool(false) -string(4) "%s" +string(%d) "%s" string(9) "127.0.0.1" -string(4) "%s" +string(%d) "%s" string(14) "66.163.161.116" -string(4) "%s" +string(%d) "%s" string(15) "255.255.255.255" -string(4) "%s" +string(%d) "%s" string(7) "0.0.0.0" Done diff --git a/ext/standard/tests/network/ip2long_error.phpt b/ext/standard/tests/network/ip2long_error.phpt new file mode 100644 index 000000000..219363e6a --- /dev/null +++ b/ext/standard/tests/network/ip2long_error.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test ip2long() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ip2long() : error conditions *** + +-- Testing ip2long() function with Zero arguments -- + +Warning: Wrong parameter count for ip2long() in %s on line %d +NULL + +-- Testing ip2long() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for ip2long() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/network/ip2long_variation1.phpt b/ext/standard/tests/network/ip2long_variation1.phpt new file mode 100644 index 000000000..c4af00446 --- /dev/null +++ b/ext/standard/tests/network/ip2long_variation1.phpt @@ -0,0 +1,199 @@ +--TEST-- +Test ip2long() function : usage variation +--FILE-- + 1, 'two' => 2); + +// resource +$res = fopen(__FILE__,'r'); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource + 'resource' => $res, +); + +// loop through each element of the array for ip_address + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( ip2long($value) ); +}; + +fclose($res); + +?> +===DONE=== +--EXPECTF-- +*** Testing ip2long() : usage variation *** + +--int 0-- +int(0) + +--int 1-- +int(1) + +--int 12345-- +int(12345) + +--int -12345-- +bool(false) + +--float 10.5-- +int(167772165) + +--float -10.5-- +bool(false) + +--float 12.3456789000e10-- +bool(false) + +--float -12.3456789000e10-- +bool(false) + +--float .5-- +int(5) + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +bool(false) + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +bool(false) + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +bool(false) + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +bool(false) + +--uppercase NULL-- +bool(false) + +--lowercase null-- +bool(false) + +--lowercase true-- +int(1) + +--lowercase false-- +bool(false) + +--uppercase TRUE-- +int(1) + +--uppercase FALSE-- +bool(false) + +--empty string DQ-- +bool(false) + +--empty string SQ-- +bool(false) + +--instance of classWithToString-- +bool(false) + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +bool(false) + +--undefined var-- +bool(false) + +--unset var-- +bool(false) + +--resource-- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/network/long2ip_error.phpt b/ext/standard/tests/network/long2ip_error.phpt new file mode 100644 index 000000000..61fb34a80 --- /dev/null +++ b/ext/standard/tests/network/long2ip_error.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test long2ip() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing long2ip() : error conditions *** + +-- Testing long2ip() function with Zero arguments -- + +Warning: Wrong parameter count for long2ip() in %s on line %d +NULL + +-- Testing long2ip() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for long2ip() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/network/long2ip_variation1.phpt b/ext/standard/tests/network/long2ip_variation1.phpt new file mode 100644 index 000000000..a4a867277 --- /dev/null +++ b/ext/standard/tests/network/long2ip_variation1.phpt @@ -0,0 +1,196 @@ +--TEST-- +Test long2ip() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +// resource +$res = fopen(__FILE__,'r'); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource + 'resource' => $res, +); + +// loop through each element of the array for proper_address + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( long2ip($value) ); +}; + +fclose($res); + +?> +===DONE=== +--EXPECTF-- +*** Testing long2ip() : usage variation *** + +--float 10.5-- +string(8) "0.0.0.10" + +--float -10.5-- +string(15) "255.255.255.246" + +--float .5-- +string(7) "0.0.0.0" + +--empty array-- +Error: 8 - Array to string conversion, %s(%d) +string(7) "0.0.0.0" + +--int indexed array-- +Error: 8 - Array to string conversion, %s(%d) +string(7) "0.0.0.0" + +--associative array-- +Error: 8 - Array to string conversion, %s(%d) +string(7) "0.0.0.0" + +--nested arrays-- +Error: 8 - Array to string conversion, %s(%d) +string(7) "0.0.0.0" + +--uppercase NULL-- +string(7) "0.0.0.0" + +--lowercase null-- +string(7) "0.0.0.0" + +--lowercase true-- +string(7) "0.0.0.1" + +--lowercase false-- +string(7) "0.0.0.0" + +--uppercase TRUE-- +string(7) "0.0.0.1" + +--uppercase FALSE-- +string(7) "0.0.0.0" + +--empty string DQ-- +string(7) "0.0.0.0" + +--empty string SQ-- +string(7) "0.0.0.0" + +--string DQ-- +string(7) "0.0.0.0" + +--string SQ-- +string(7) "0.0.0.0" + +--mixed case string-- +string(7) "0.0.0.0" + +--heredoc-- +string(7) "0.0.0.0" + +--instance of classWithToString-- +string(7) "0.0.0.0" + +--instance of classWithoutToString-- +Error: 4096 - Object of class classWithoutToString could not be converted to string, %s(%d) +Error: 8 - Object of class classWithoutToString to string conversion, %s(%d) +string(7) "0.0.0.0" + +--undefined var-- +string(7) "0.0.0.0" + +--unset var-- +string(7) "0.0.0.0" + +--resource-- +string(7) "0.0.0.0" +===DONE=== diff --git a/ext/standard/tests/network/socket_get_status_basic.phpt b/ext/standard/tests/network/socket_get_status_basic.phpt new file mode 100644 index 000000000..f72662b16 --- /dev/null +++ b/ext/standard/tests/network/socket_get_status_basic.phpt @@ -0,0 +1,27 @@ +--TEST-- +Testing socket_get_status() +--FILE-- + +--EXPECTF-- +array(7) { + ["stream_type"]=> + string(%d) "tcp_socket%S" + ["mode"]=> + string(2) "r+" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(false) + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) +} diff --git a/ext/standard/tests/network/syslog_basic-win32.phpt b/ext/standard/tests/network/syslog_basic-win32.phpt new file mode 100644 index 000000000..88d3c5a6d --- /dev/null +++ b/ext/standard/tests/network/syslog_basic-win32.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test syslog() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing syslog() : basic functionality *** +bool(true) +===DONE=== diff --git a/ext/standard/tests/network/syslog_error.phpt b/ext/standard/tests/network/syslog_error.phpt new file mode 100644 index 000000000..a99fd5314 --- /dev/null +++ b/ext/standard/tests/network/syslog_error.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test syslog() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing syslog() : error conditions *** + +-- Testing syslog() function with more than expected no. of arguments -- + +Warning: syslog() expects exactly 2 parameters, 3 given in %s on line %d +NULL + +-- Testing syslog() function with less than expected no. of arguments -- + +Warning: syslog() expects exactly 2 parameters, 1 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/serialize/incomplete_class.phpt b/ext/standard/tests/serialize/incomplete_class.phpt new file mode 100644 index 000000000..828048551 --- /dev/null +++ b/ext/standard/tests/serialize/incomplete_class.phpt @@ -0,0 +1,27 @@ +--TEST-- +(un)serializing __PHP_Incomplete_Class instance +--FILE-- +test = "a"; +var_dump($o->test); +var_dump($o->test2); + +echo "Done\n"; +?> +--EXPECTF-- +object(__PHP_Incomplete_Class)#%d (0) { +} + +Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d + +Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d +NULL + +Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d +NULL +Done diff --git a/ext/standard/tests/streams/bug44818.phpt b/ext/standard/tests/streams/bug44818.phpt new file mode 100644 index 000000000..628f64e34 --- /dev/null +++ b/ext/standard/tests/streams/bug44818.phpt @@ -0,0 +1,37 @@ +--TEST-- +Bug #44818 (php://memory writeable when opened read only) +--FILE-- + +--EXPECTF-- +php://memory, r +resource(%d) of type (stream) +int(0) +int(0) +string(0) "" +php://memory, r+ +resource(%d) of type (stream) +int(3) +int(0) +string(3) "foo" +php://temp, r +resource(%d) of type (stream) +int(0) +int(0) +string(0) "" +php://temp, w +resource(%d) of type (stream) +int(3) +int(0) +string(3) "foo" diff --git a/ext/standard/tests/streams/bug46024.phpt b/ext/standard/tests/streams/bug46024.phpt new file mode 100644 index 000000000..34407cdc8 --- /dev/null +++ b/ext/standard/tests/streams/bug46024.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #46024 stream_select() doesn't return the correct number +--SKIPIF-- + +--FILE-- + array('pipe', 'r'), 1 => array('pipe', 'w')) + ,$pipes, dirname(__FILE__), array(), array('binary_pipes' => true) +); +var_dump($proc); +if (!$proc) { + exit(1); +} +$r = array($pipes[1]); +$w = array($pipes[0]); +$e = null; +$ret = stream_select($r, $w, $e, 1); +var_dump($ret === (count($r) + count($w))); +fread($pipes[1], 1); + +$r = array($pipes[1]); +$w = array($pipes[0]); +$e = null; +$ret = stream_select($r, $w, $e, 1); +var_dump($ret === (count($r) + count($w))); + + +foreach($pipes as $pipe) { + fclose($pipe); +} +proc_terminate($proc); +if (defined('SIGKILL')) { + proc_terminate($proc, SIGKILL); +} else { + proc_terminate($proc); +} +proc_close($proc); +?> +--EXPECTF-- +resource(%d) of type (process) +bool(true) +bool(true) diff --git a/ext/standard/tests/streams/bug46426.phpt b/ext/standard/tests/streams/bug46426.phpt new file mode 100644 index 000000000..8c95ea456 --- /dev/null +++ b/ext/standard/tests/streams/bug46426.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #46426 (3rd parameter offset of stream_get_contents not works for "0") +--FILE-- + +--EXPECT-- +23 +45 +12345 +345 + +1 +2345 diff --git a/ext/standard/tests/streams/stream_get_contents_001.phpt b/ext/standard/tests/streams/stream_get_contents_001.phpt new file mode 100644 index 000000000..dc7fcb239 --- /dev/null +++ b/ext/standard/tests/streams/stream_get_contents_001.phpt @@ -0,0 +1,22 @@ +--TEST-- +stream_get_contents() - Testing offset out of range +--FILE-- + +--EXPECT-- +-- +-- +45-- +-- diff --git a/ext/standard/tests/streams/stream_get_contents_002.phpt b/ext/standard/tests/streams/stream_get_contents_002.phpt new file mode 100644 index 000000000..66ff3fb18 --- /dev/null +++ b/ext/standard/tests/streams/stream_get_contents_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +stream_get_contents() - Testing on socket with $maxlength +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(3) "foo" diff --git a/ext/standard/tests/streams/stream_get_line_nb.phpt b/ext/standard/tests/streams/stream_get_line_nb.phpt new file mode 100644 index 000000000..3e3848f54 --- /dev/null +++ b/ext/standard/tests/streams/stream_get_line_nb.phpt @@ -0,0 +1,66 @@ +--TEST-- +stream_get_line() on non-blocking stream +--SKIPIF-- + +--FILE-- +'; + +fwrite($sockets[0], b"line start"); +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Does not returns incomplete line (EOL not found) +var_dump(stream_get_line($sockets[1], 8192, $eol)); +fwrite($sockets[0], b", line end"); +fwrite($sockets[0], b", $eol"); +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Returns full line (EOL found) +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Nothing to read +var_dump(stream_get_line($sockets[1], 8192, $eol)); + +fwrite($sockets[0], b"incomplete line"); +var_dump(stream_get_line($sockets[1], strlen(b"incomplete line"), $eol)); // EOL not found but $length has been read, return incomplete line + +fwrite($sockets[0], b"incomplete line"); +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Does not returns incomplete line (EOL not found) +var_dump(fread($sockets[1], strlen(b"incomplete line"))); // Returns buffer readden by stream_get_line + +fwrite($sockets[0], b"end of file"); +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Does not returns incomplete line (EOL not found) + +fclose($sockets[0]); +var_dump(stream_get_line($sockets[1], 8192, $eol)); // Returns incomplete line (End of file) + +fclose($sockets[1]); + +?> +--EXPECTF-- +array(2) { + [0]=> + resource(%d) of type (stream) + [1]=> + resource(%d) of type (stream) +} +bool(false) +bool(false) +string(22) "line start, line end, " +bool(false) +bool(false) +string(15) "incomplete line" +bool(false) +string(15) "incomplete line" +bool(false) +string(11) "end of file" diff --git a/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt b/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt index 649311039..16b38d9a1 100644 --- a/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt +++ b/ext/standard/tests/streams/stream_get_meta_data_socket_variation1.phpt @@ -8,6 +8,9 @@ $server = stream_socket_server('tcp://127.0.0.1:31337'); /* Connect to it */ $client = fsockopen('tcp://127.0.0.1:31337'); +if (!$client) { + die("Unable to create socket"); +} /* Accept that connection */ $socket = stream_socket_accept($server); diff --git a/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt b/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt index c04f3cb5d..d30fec705 100644 --- a/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt +++ b/ext/standard/tests/streams/stream_get_meta_data_socket_variation2.phpt @@ -8,6 +8,9 @@ $server = stream_socket_server('tcp://127.0.0.1:31337'); /* Connect to it */ $client = fsockopen('tcp://127.0.0.1:31337'); +if (!$client) { + die("Unable to create socket"); +} /* Accept that connection */ $socket = stream_socket_accept($server); diff --git a/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt b/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt index 4ec00b3fd..0b079ccf7 100644 --- a/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt +++ b/ext/standard/tests/streams/stream_get_meta_data_socket_variation3.phpt @@ -8,6 +8,9 @@ $server = stream_socket_server('tcp://127.0.0.1:31337'); /* Connect to it */ $client = fsockopen('tcp://127.0.0.1:31337'); +if (!$client) { + die("Unable to create socket"); +} /* Accept that connection */ $socket = stream_socket_accept($server); diff --git a/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt b/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt index dae4f470f..f9ef74798 100644 --- a/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt +++ b/ext/standard/tests/streams/stream_get_meta_data_socket_variation4.phpt @@ -8,6 +8,9 @@ $server = stream_socket_server('tcp://127.0.0.1:31337'); /* Connect to it */ $client = fsockopen('tcp://127.0.0.1:31337'); +if (!$client) { + die("Unable to create socket"); +} /* Accept that connection */ $socket = stream_socket_accept($server); diff --git a/ext/standard/tests/streams/stream_set_timeout_error.phpt b/ext/standard/tests/streams/stream_set_timeout_error.phpt index 1e8e60bd2..67e56df36 100644 --- a/ext/standard/tests/streams/stream_set_timeout_error.phpt +++ b/ext/standard/tests/streams/stream_set_timeout_error.phpt @@ -8,13 +8,8 @@ Test stream_set_timeout() function : error conditions * Alias to functions: socket_set_timeout */ -/* - * add a comment here to say what the test is supposed to do - */ - echo "*** Testing stream_set_timeout() : error conditions ***\n"; - //Test stream_set_timeout with one more than the expected number of arguments echo "\n-- Testing stream_set_timeout() function with more than expected no. of arguments --\n"; diff --git a/ext/standard/tests/streams/stream_socket_pair.phpt b/ext/standard/tests/streams/stream_socket_pair.phpt new file mode 100644 index 000000000..5556d8e22 --- /dev/null +++ b/ext/standard/tests/streams/stream_socket_pair.phpt @@ -0,0 +1,22 @@ +--TEST-- +stream_socket_pair() +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(2) { + [0]=> + resource(%d) of type (stream) + [1]=> + resource(%d) of type (stream) +} +string(3) "foo" diff --git a/ext/standard/tests/strings/006.phpt b/ext/standard/tests/strings/006.phpt index f0156ccf6..a5dc3e81e 100644 --- a/ext/standard/tests/strings/006.phpt +++ b/ext/standard/tests/strings/006.phpt @@ -1,5 +1,7 @@ --TEST-- highlight_file() and output buffer +--INI-- +log_errors_max_len = 4096 --FILE-- --EXPECTF-- -Warning: highlight_file(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d +Warning: highlight_file(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA): failed to open stream: File name too long in %s on line %d -Warning: highlight_file(): Failed opening 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d +Warning: highlight_file(): Failed opening 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' for highlighting in %s on line %d bool(false) bool(false) Done diff --git a/ext/standard/tests/strings/007.phpt b/ext/standard/tests/strings/007.phpt index e0e516389..af8c9e299 100644 --- a/ext/standard/tests/strings/007.phpt +++ b/ext/standard/tests/strings/007.phpt @@ -1,5 +1,7 @@ --TEST-- php_strip_whitespace() and output buffer +--INI-- +log_errors_max_len = 4096 --FILE-- --EXPECTF-- -Warning: php_strip_whitespace(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in %s on line %d +Warning: php_strip_whitespace(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA): failed to open stream: File name too long in %s on line %d string(0) "" bool(false) Done diff --git a/ext/standard/tests/strings/addslashes_variation1.phpt b/ext/standard/tests/strings/addslashes_variation1.phpt index a86f86d05..c4f9fdd09 100644 --- a/ext/standard/tests/strings/addslashes_variation1.phpt +++ b/ext/standard/tests/strings/addslashes_variation1.phpt @@ -32,50 +32,50 @@ $file_handle = fopen(__FILE__, 'r'); // array with different values $values = array ( - // integer values - 0, - 1, - 12345, - -2345, - - // float values - 10.5, - -10.5, - 10.5e10, - 10.6E-10, - .5, - - // array values - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // boolean values - true, - false, - TRUE, - FALSE, - - // empty string - "", - '', - - // undefined variable - $undefined_var, - - // unset variable - $unset_var, - - // objects - new sample(), - - // resource - $file_handle, - - NULL, - null + // integer values +/*1*/ 0, + 1, + 12345, + -2345, + + // float values +/*5*/ 10.5, + -10.5, + 10.1234567e10, + 10.7654321E-10, + .5, + + // array values +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values +/*15*/ true, + false, + TRUE, + FALSE, + + // empty string +/*19*/ "", + '', + + // undefined variable +/*21*/ $undefined_var, + + // unset variable +/*22*/ $unset_var, + + // objects +/*23*/ new sample(), + + // resource +/*24*/ $file_handle, + +/*25*/ NULL, + null ); @@ -95,8 +95,8 @@ for($index = 0; $index < count($values); $index ++) { // closing the file fclose($file_handle); -echo "Done\n"; ?> +===DONE=== --EXPECTF-- *** Testing addslashes() : with non-string type argument *** @@ -118,9 +118,9 @@ string(4) "10.5" -- Iteration 6 -- string(5) "-10.5" -- Iteration 7 -- -string(12) "105000000000" +string(12) "101234567000" -- Iteration 8 -- -string(7) "1.06E-9" +string(13) "1.07654321E-9" -- Iteration 9 -- string(3) "0.5" -- Iteration 10 -- @@ -167,4 +167,4 @@ string(%d) "Resource id #%d" string(0) "" -- Iteration 26 -- string(0) "" -Done +===DONE=== diff --git a/ext/standard/tests/strings/bin2hex_basic.phpt b/ext/standard/tests/strings/bin2hex_basic.phpt new file mode 100644 index 000000000..5d667a7ff --- /dev/null +++ b/ext/standard/tests/strings/bin2hex_basic.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test bin2hex() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing bin2hex() : basic functionality *** +-- Iteration 1 -- +string(46) "4865726520697320612073696d706c6520737472696e67" +-- Iteration 2 -- +string(102) "09205468697320537472696e6720636f6e7461696e7320090920736f6d6520636f6e74726f6c20636861726163746572730d0a" +-- Iteration 3 -- +string(36) "9091009394909195969798999a9b9c9d9e9f" +-- Iteration 4 -- +string(46) "4865726520697320612073696d706c6520737472696e67" +-- Iteration 5 -- +string(112) "5c74205468697320537472696e6720636f6e7461696e73205c745c7420736f6d6520636f6e74726f6c20636861726163746572735c725c6e" +-- Iteration 6 -- +string(144) "5c7839305c7839315c7830305c7839335c7839345c7839305c7839315c7839355c7839365c7839375c7839385c7839395c7839615c7839625c7839635c7839645c7839655c783966" +===DONE=== diff --git a/ext/standard/tests/strings/bin2hex_error.phpt b/ext/standard/tests/strings/bin2hex_error.phpt new file mode 100644 index 000000000..5864133ec --- /dev/null +++ b/ext/standard/tests/strings/bin2hex_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test bin2hex() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing bin2hex() : error conditions *** + +-- Testing bin2hex() function with no arguments -- + +Warning: Wrong parameter count for bin2hex() in %s on line %d +NULL + +-- Testing bin2hex() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for bin2hex() in %s on line %d +NULL + +===DONE=== diff --git a/ext/standard/tests/strings/bin2hex_variation1.phpt b/ext/standard/tests/strings/bin2hex_variation1.phpt new file mode 100644 index 000000000..e616c1c47 --- /dev/null +++ b/ext/standard/tests/strings/bin2hex_variation1.phpt @@ -0,0 +1,126 @@ +--TEST-- +Test bin2hex() function : usage variations - test values for $str argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing bin2hex() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +string(2) "30" +-- Iteration 2 -- +string(2) "31" +-- Iteration 3 -- +string(12) "313233343536" +-- Iteration 4 -- +string(8) "31302e35" +-- Iteration 5 -- +string(10) "2d32302e35" +-- Iteration 6 -- +string(24) "313031323334353637303030" +-- Iteration 7 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" +-- Iteration 8 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" +-- Iteration 10 -- +string(2) "31" +-- Iteration 11 -- +string(0) "" +-- Iteration 12 -- +string(2) "31" +-- Iteration 13 -- +string(0) "" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(0) "" +-- Iteration 16 -- +string(26) "73616d706c65206f626a656374" +-- Iteration 17 -- +string(%d) "%s" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/bug37262.phpt b/ext/standard/tests/strings/bug37262.phpt index 6fe2d9f37..5a9f7f724 100644 --- a/ext/standard/tests/strings/bug37262.phpt +++ b/ext/standard/tests/strings/bug37262.phpt @@ -5,5 +5,5 @@ Bug #37262 (var_export() does not escape \0 character) $func = create_function('$a', 'return $a;'); var_export($func); ?> ---EXPECT-- -'' . "\0" . 'lambda_1' +--EXPECTF-- +'' . "\0" . 'lambda_%d' diff --git a/ext/standard/tests/strings/bug40754.phpt b/ext/standard/tests/strings/bug40754.phpt index 943114d51..e4bba8f44 100644 --- a/ext/standard/tests/strings/bug40754.phpt +++ b/ext/standard/tests/strings/bug40754.phpt @@ -53,10 +53,10 @@ bool(false) Warning: stripos(): Offset not contained in string in %s on line %d bool(false) -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) int(2) string(8) "abcdeabc" diff --git a/ext/standard/tests/strings/bug45166.phpt b/ext/standard/tests/strings/bug45166.phpt new file mode 100644 index 000000000..60449e04f --- /dev/null +++ b/ext/standard/tests/strings/bug45166.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #45166 (substr() ) +--FILE-- + +===DONE=== +--EXPECT-- +cd +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/bug45485.phpt b/ext/standard/tests/strings/bug45485.phpt new file mode 100644 index 000000000..4d24c9ad8 --- /dev/null +++ b/ext/standard/tests/strings/bug45485.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #45485 (strip_tags and This Text disappears +EOD; + +$s = strip_tags($s); +echo htmlspecialchars($s),"\n"; + +$s =<<< EOD +This text is shown This Text disappears +EOD; + +$s = strip_tags($s); +echo htmlspecialchars($s),"\n"; + +?> +--EXPECT-- +This text is shown This Text disappears +This text is shown This Text disappears diff --git a/ext/standard/tests/strings/bug47322.phpt b/ext/standard/tests/strings/bug47322.phpt new file mode 100644 index 000000000..e04b230ba --- /dev/null +++ b/ext/standard/tests/strings/bug47322.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #47322 (sscanf %d does't work) +--FILE-- + +--EXPECT-- +[:59:58][][] +[15][1][58.2] +[15.1111][1][58.2] diff --git a/ext/standard/tests/strings/chr_basic.phpt b/ext/standard/tests/strings/chr_basic.phpt new file mode 100644 index 000000000..378b4027a --- /dev/null +++ b/ext/standard/tests/strings/chr_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test chr() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing chr() : basic functionality *** +Hello +World +===DONE=== diff --git a/ext/standard/tests/strings/chr_error.phpt b/ext/standard/tests/strings/chr_error.phpt new file mode 100644 index 000000000..d5fb97455 --- /dev/null +++ b/ext/standard/tests/strings/chr_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test chr() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing chr() : error conditions *** + +-- Testing chr() function with no arguments -- + +Warning: Wrong parameter count for chr() in %s on line %d +NULL + +-- Testing chr() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for chr() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/chr_variation1.phpt b/ext/standard/tests/strings/chr_variation1.phpt new file mode 100644 index 000000000..1d9e8e91c --- /dev/null +++ b/ext/standard/tests/strings/chr_variation1.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test chr() function : usage variations - test values for $ascii argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing chr() function: with unexpected inputs for 'ascii' argument *** +-- Iteration 1 -- +string(2) "00" +-- Iteration 2 -- +string(2) "01" +-- Iteration 3 -- +string(2) "ff" +-- Iteration 4 -- +string(2) "00" +-- Iteration 5 -- +string(2) "0a" +-- Iteration 6 -- +string(2) "ec" +-- Iteration 7 -- +string(2) "58" +-- Iteration 8 -- +string(2) "00" +-- Iteration 9 -- +string(2) "01" +-- Iteration 10 -- +string(2) "01" +-- Iteration 11 -- +string(2) "01" +-- Iteration 12 -- +string(2) "00" +-- Iteration 13 -- +string(2) "01" +-- Iteration 14 -- +string(2) "00" +-- Iteration 15 -- +string(2) "00" +-- Iteration 16 -- +string(2) "00" +-- Iteration 17 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +string(2) "01" +-- Iteration 18 -- +string(%d) "%s" +-- Iteration 19 -- +string(2) "00" +-- Iteration 20 -- +string(2) "00" +===DONE=== diff --git a/ext/standard/tests/strings/convert_cyr_string_basic.phpt b/ext/standard/tests/strings/convert_cyr_string_basic.phpt new file mode 100644 index 000000000..e29ad330c --- /dev/null +++ b/ext/standard/tests/strings/convert_cyr_string_basic.phpt @@ -0,0 +1,165 @@ +--TEST-- +Test convert_cyr_string() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_cyr_string() : basic functionality *** + +-- First try some simple English text -- +string(102) "436f6e766572742066726f6d206f6e6520437972696c6c6963206368617261637465722073657420746f20616e6f746865722e" +string(102) "436f6e766572742066726f6d206f6e6520437972696c6c6963206368617261637465722073657420746f20616e6f746865722e" + +-- Now try some of characters in 128-255 range -- +128: 2e +129: 2e +130: 2e +131: 2e +132: 2e +133: 2e +134: 2e +135: 2e +136: 2e +137: 2e +138: 2e +139: 2e +140: 2e +141: 2e +142: 2e +143: 2e +144: 2e +145: 2e +146: 2e +147: 2e +148: 2e +149: 2e +150: 2e +151: 2e +152: 2e +153: 2e +154: 2e +155: 2e +156: 2e +157: 2e +158: 2e +159: 2e +160: 9a +161: ae +162: be +163: 2e +164: 9f +165: bd +166: 2e +167: 2e +168: b3 +169: bf +170: b4 +171: 9d +172: 2e +173: 2e +174: 9c +175: b7 +176: 2e +177: 2e +178: b6 +179: a6 +180: ad +181: 2e +182: 2e +183: 9e +184: a3 +185: 98 +186: a4 +187: 9b +188: 2e +189: 2e +190: 2e +191: a7 +192: e1 +193: e2 +194: f7 +195: e7 +196: e4 +197: e5 +198: f6 +199: fa +200: e9 +201: ea +202: eb +203: ec +204: ed +205: ee +206: ef +207: f0 +208: f2 +209: f3 +210: f4 +211: f5 +212: e6 +213: e8 +214: e3 +215: fe +216: fb +217: fd +218: ff +219: f9 +220: f8 +221: fc +222: e0 +223: f1 +224: c1 +225: c2 +226: d7 +227: c7 +228: c4 +229: c5 +230: d6 +231: da +232: c9 +233: ca +234: cb +235: cc +236: cd +237: ce +238: cf +239: d0 +240: d2 +241: d3 +242: d4 +243: d5 +244: c6 +245: c8 +246: c3 +247: de +248: db +249: dd +250: df +251: d9 +252: d8 +253: dc +254: c0 +255: d1 +===DONE=== diff --git a/ext/standard/tests/strings/convert_cyr_string_error.phpt b/ext/standard/tests/strings/convert_cyr_string_error.phpt new file mode 100644 index 000000000..21471074e --- /dev/null +++ b/ext/standard/tests/strings/convert_cyr_string_error.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test convert_cyr_string() function : error conditions +--FILE-- +", "?")) ); + +?> +===DONE=== +--EXPECTF-- +*** Testing convert_cyr_string() : error conditions *** + +-- Testing convert_cyr_string() function with no arguments -- + +Warning: Wrong parameter count for convert_cyr_string() in %s on line %d +NULL + +-- Testing convert_cyr_string() function with no 'to' character set -- + +Warning: Wrong parameter count for convert_cyr_string() in %s on line %d +NULL + +-- Testing convert_cyr_string() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for convert_cyr_string() in %s on line %d +NULL + +-- Testing convert_cyr_string() function with invalid 'from' character set -- + +Warning: convert_cyr_string(): Unknown source charset: ? in %s on line %d +string(10) "68656c6c6f" + +-- Testing convert_cyr_string() function with invalid 'to' character set -- + +Warning: convert_cyr_string(): Unknown destination charset: ? in %s on line %d +string(10) "68656c6c6f" + +-- Testing convert_cyr_string() function with invalid 'from' and 'to' character set -- + +Warning: convert_cyr_string(): Unknown source charset: > in %s on line %d + +Warning: convert_cyr_string(): Unknown destination charset: ? in %s on line %d +string(10) "68656c6c6f" + +===DONE=== diff --git a/ext/standard/tests/strings/convert_cyr_string_variation1.phpt b/ext/standard/tests/strings/convert_cyr_string_variation1.phpt new file mode 100644 index 000000000..d2bd82b4b --- /dev/null +++ b/ext/standard/tests/strings/convert_cyr_string_variation1.phpt @@ -0,0 +1,137 @@ +--TEST-- +Test convert_cyr_string() function : usage variations - test values for $str argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_cyr_string() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(11) "-2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(5) "-20.5" +-- Iteration 9 -- +string(12) "101234567000" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(13) "sample object" +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/convert_uudecode_basic.phpt b/ext/standard/tests/strings/convert_uudecode_basic.phpt new file mode 100644 index 000000000..6e334a981 --- /dev/null +++ b/ext/standard/tests/strings/convert_uudecode_basic.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test convert_uudecode() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_uudecode() : basic functionality *** +TEST PASSED +===DONE=== diff --git a/ext/standard/tests/strings/convert_uudecode_error.phpt b/ext/standard/tests/strings/convert_uudecode_error.phpt new file mode 100644 index 000000000..77d3a8883 --- /dev/null +++ b/ext/standard/tests/strings/convert_uudecode_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test convert_uudecode() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_uudecode() : error conditions *** + +-- Testing convert_uudecode() function with no arguments -- + +Warning: convert_uudecode() expects exactly 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing convert_uudecode() function with more than expected no. of arguments -- + +Warning: convert_uudecode() expects exactly 1 parameter, 2 given in %s on line %d +bool(false) + +===DONE=== diff --git a/ext/standard/tests/strings/convert_uudecode_variation1.phpt b/ext/standard/tests/strings/convert_uudecode_variation1.phpt new file mode 100644 index 000000000..049fd7f65 --- /dev/null +++ b/ext/standard/tests/strings/convert_uudecode_variation1.phpt @@ -0,0 +1,161 @@ +--TEST-- +Test convert_uudecode() function : usage variations - test values for $data argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_uudecode() function: with unexpected inputs for 'data' argument *** +-- Iteration 1 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 2 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 8 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 9 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 10 -- + +Warning: convert_uudecode() expects parameter 1 to be string, array given in %s on line %d +bool(false) +-- Iteration 11 -- + +Warning: convert_uudecode() expects parameter 1 to be string, array given in %s on line %d +bool(false) +-- Iteration 12 -- + +Warning: convert_uudecode() expects parameter 1 to be string, array given in %s on line %d +bool(false) +-- Iteration 13 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- + +Warning: convert_uudecode(): The given parameter is not a valid uuencoded string in %s on line %d +bool(false) +-- Iteration 20 -- + +Warning: convert_uudecode() expects parameter 1 to be string, resource given in %s on line %d +bool(false) +-- Iteration 21 -- +bool(false) +-- Iteration 22 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/convert_uuencode_basic.phpt b/ext/standard/tests/strings/convert_uuencode_basic.phpt new file mode 100644 index 000000000..df8ee3666 --- /dev/null +++ b/ext/standard/tests/strings/convert_uuencode_basic.phpt @@ -0,0 +1,88 @@ +--TEST-- +Test convert_uuencode() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_uuencode() : basic functionality *** +-- Iteration 1 -- +string(8) "#,3(S +` +" +-- Iteration 2 -- +string(8) "#86)C +` +" +-- Iteration 3 -- +string(12) "&,6$R8C-C +` +" +-- Iteration 4 -- +string(82) "M2&5R92!I +===DONE=== +--EXPECTF-- +*** Testing convert_uuencode() : error conditions *** + +-- Testing chconvert_uuencoder() function with no arguments -- + +Warning: convert_uuencode() expects exactly 1 parameter, 0 given in %s on line %d +bool(false) + +-- Testing convert_uuencode() function with more than expected no. of arguments -- + +Warning: convert_uuencode() expects exactly 1 parameter, 2 given in %s on line %d +bool(false) + +===DONE=== diff --git a/ext/standard/tests/strings/convert_uuencode_variation1.phpt b/ext/standard/tests/strings/convert_uuencode_variation1.phpt new file mode 100644 index 000000000..12ca28196 --- /dev/null +++ b/ext/standard/tests/strings/convert_uuencode_variation1.phpt @@ -0,0 +1,137 @@ +--TEST-- +Test convert_uuencode() function : usage variations - test values for $data argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing convert_uuencode() function: with unexpected inputs for 'data' argument *** +-- Iteration 1 -- +string(16) "212c6060600a600a" +-- Iteration 2 -- +string(16) "212c3060600a600a" +-- Iteration 3 -- +string(16) "232c4334550a600a" +-- Iteration 4 -- +string(16) "232c4334560a600a" +-- Iteration 5 -- +string(40) "2a2c4324542d5330582c5338542d5060600a600a" +-- Iteration 6 -- +string(40) "2b2b3328512d233c542e232c562d2340600a600a" +-- Iteration 7 -- +string(24) "242c33604e2d3060600a600a" +-- Iteration 8 -- +string(24) "252b3328502b4334600a600a" +-- Iteration 9 -- +string(40) "2c2c3360512c432c542d3338572c2360500a600a" +-- Iteration 10 -- + +Warning: convert_uuencode() expects parameter 1 to be string, array given in %s on line %d +string(0) "" +-- Iteration 11 -- + +Warning: convert_uuencode() expects parameter 1 to be string, array given in %s on line %d +string(0) "" +-- Iteration 12 -- + +Warning: convert_uuencode() expects parameter 1 to be string, array given in %s on line %d +string(0) "" +-- Iteration 13 -- +string(16) "212c3060600a600a" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(16) "212c3060600a600a" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(48) "2d3c56254d3c26514528265d423a4635433d6060600a600a" +-- Iteration 20 -- + +Warning: convert_uuencode() expects parameter 1 to be string, resource given in %s on line %d +string(0) "" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/count_chars_basic.phpt b/ext/standard/tests/strings/count_chars_basic.phpt new file mode 100644 index 000000000..f28fa63b2 --- /dev/null +++ b/ext/standard/tests/strings/count_chars_basic.phpt @@ -0,0 +1,1574 @@ +--TEST-- +Test count_chars() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing count_chars() : basic functionality *** +array(256) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(0) + [4]=> + int(0) + [5]=> + int(0) + [6]=> + int(0) + [7]=> + int(0) + [8]=> + int(0) + [9]=> + int(0) + [10]=> + int(0) + [11]=> + int(0) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(7) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(1) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(5) + [98]=> + int(1) + [99]=> + int(2) + [100]=> + int(1) + [101]=> + int(3) + [102]=> + int(1) + [103]=> + int(1) + [104]=> + int(1) + [105]=> + int(4) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(1) + [110]=> + int(5) + [111]=> + int(3) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(5) + [115]=> + int(3) + [116]=> + int(5) + [117]=> + int(3) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(0) +} +array(256) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(0) + [4]=> + int(0) + [5]=> + int(0) + [6]=> + int(0) + [7]=> + int(0) + [8]=> + int(0) + [9]=> + int(0) + [10]=> + int(0) + [11]=> + int(0) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [32]=> + int(7) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [82]=> + int(1) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [97]=> + int(5) + [98]=> + int(1) + [99]=> + int(2) + [100]=> + int(1) + [101]=> + int(3) + [102]=> + int(1) + [103]=> + int(1) + [104]=> + int(1) + [105]=> + int(4) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [109]=> + int(1) + [110]=> + int(5) + [111]=> + int(3) + [112]=> + int(0) + [113]=> + int(0) + [114]=> + int(5) + [115]=> + int(3) + [116]=> + int(5) + [117]=> + int(3) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(0) +} +array(18) { + [32]=> + int(7) + [82]=> + int(1) + [97]=> + int(5) + [98]=> + int(1) + [99]=> + int(2) + [100]=> + int(1) + [101]=> + int(3) + [102]=> + int(1) + [103]=> + int(1) + [104]=> + int(1) + [105]=> + int(4) + [109]=> + int(1) + [110]=> + int(5) + [111]=> + int(3) + [114]=> + int(5) + [115]=> + int(3) + [116]=> + int(5) + [117]=> + int(3) +} +array(238) { + [0]=> + int(0) + [1]=> + int(0) + [2]=> + int(0) + [3]=> + int(0) + [4]=> + int(0) + [5]=> + int(0) + [6]=> + int(0) + [7]=> + int(0) + [8]=> + int(0) + [9]=> + int(0) + [10]=> + int(0) + [11]=> + int(0) + [12]=> + int(0) + [13]=> + int(0) + [14]=> + int(0) + [15]=> + int(0) + [16]=> + int(0) + [17]=> + int(0) + [18]=> + int(0) + [19]=> + int(0) + [20]=> + int(0) + [21]=> + int(0) + [22]=> + int(0) + [23]=> + int(0) + [24]=> + int(0) + [25]=> + int(0) + [26]=> + int(0) + [27]=> + int(0) + [28]=> + int(0) + [29]=> + int(0) + [30]=> + int(0) + [31]=> + int(0) + [33]=> + int(0) + [34]=> + int(0) + [35]=> + int(0) + [36]=> + int(0) + [37]=> + int(0) + [38]=> + int(0) + [39]=> + int(0) + [40]=> + int(0) + [41]=> + int(0) + [42]=> + int(0) + [43]=> + int(0) + [44]=> + int(0) + [45]=> + int(0) + [46]=> + int(0) + [47]=> + int(0) + [48]=> + int(0) + [49]=> + int(0) + [50]=> + int(0) + [51]=> + int(0) + [52]=> + int(0) + [53]=> + int(0) + [54]=> + int(0) + [55]=> + int(0) + [56]=> + int(0) + [57]=> + int(0) + [58]=> + int(0) + [59]=> + int(0) + [60]=> + int(0) + [61]=> + int(0) + [62]=> + int(0) + [63]=> + int(0) + [64]=> + int(0) + [65]=> + int(0) + [66]=> + int(0) + [67]=> + int(0) + [68]=> + int(0) + [69]=> + int(0) + [70]=> + int(0) + [71]=> + int(0) + [72]=> + int(0) + [73]=> + int(0) + [74]=> + int(0) + [75]=> + int(0) + [76]=> + int(0) + [77]=> + int(0) + [78]=> + int(0) + [79]=> + int(0) + [80]=> + int(0) + [81]=> + int(0) + [83]=> + int(0) + [84]=> + int(0) + [85]=> + int(0) + [86]=> + int(0) + [87]=> + int(0) + [88]=> + int(0) + [89]=> + int(0) + [90]=> + int(0) + [91]=> + int(0) + [92]=> + int(0) + [93]=> + int(0) + [94]=> + int(0) + [95]=> + int(0) + [96]=> + int(0) + [106]=> + int(0) + [107]=> + int(0) + [108]=> + int(0) + [112]=> + int(0) + [113]=> + int(0) + [118]=> + int(0) + [119]=> + int(0) + [120]=> + int(0) + [121]=> + int(0) + [122]=> + int(0) + [123]=> + int(0) + [124]=> + int(0) + [125]=> + int(0) + [126]=> + int(0) + [127]=> + int(0) + [128]=> + int(0) + [129]=> + int(0) + [130]=> + int(0) + [131]=> + int(0) + [132]=> + int(0) + [133]=> + int(0) + [134]=> + int(0) + [135]=> + int(0) + [136]=> + int(0) + [137]=> + int(0) + [138]=> + int(0) + [139]=> + int(0) + [140]=> + int(0) + [141]=> + int(0) + [142]=> + int(0) + [143]=> + int(0) + [144]=> + int(0) + [145]=> + int(0) + [146]=> + int(0) + [147]=> + int(0) + [148]=> + int(0) + [149]=> + int(0) + [150]=> + int(0) + [151]=> + int(0) + [152]=> + int(0) + [153]=> + int(0) + [154]=> + int(0) + [155]=> + int(0) + [156]=> + int(0) + [157]=> + int(0) + [158]=> + int(0) + [159]=> + int(0) + [160]=> + int(0) + [161]=> + int(0) + [162]=> + int(0) + [163]=> + int(0) + [164]=> + int(0) + [165]=> + int(0) + [166]=> + int(0) + [167]=> + int(0) + [168]=> + int(0) + [169]=> + int(0) + [170]=> + int(0) + [171]=> + int(0) + [172]=> + int(0) + [173]=> + int(0) + [174]=> + int(0) + [175]=> + int(0) + [176]=> + int(0) + [177]=> + int(0) + [178]=> + int(0) + [179]=> + int(0) + [180]=> + int(0) + [181]=> + int(0) + [182]=> + int(0) + [183]=> + int(0) + [184]=> + int(0) + [185]=> + int(0) + [186]=> + int(0) + [187]=> + int(0) + [188]=> + int(0) + [189]=> + int(0) + [190]=> + int(0) + [191]=> + int(0) + [192]=> + int(0) + [193]=> + int(0) + [194]=> + int(0) + [195]=> + int(0) + [196]=> + int(0) + [197]=> + int(0) + [198]=> + int(0) + [199]=> + int(0) + [200]=> + int(0) + [201]=> + int(0) + [202]=> + int(0) + [203]=> + int(0) + [204]=> + int(0) + [205]=> + int(0) + [206]=> + int(0) + [207]=> + int(0) + [208]=> + int(0) + [209]=> + int(0) + [210]=> + int(0) + [211]=> + int(0) + [212]=> + int(0) + [213]=> + int(0) + [214]=> + int(0) + [215]=> + int(0) + [216]=> + int(0) + [217]=> + int(0) + [218]=> + int(0) + [219]=> + int(0) + [220]=> + int(0) + [221]=> + int(0) + [222]=> + int(0) + [223]=> + int(0) + [224]=> + int(0) + [225]=> + int(0) + [226]=> + int(0) + [227]=> + int(0) + [228]=> + int(0) + [229]=> + int(0) + [230]=> + int(0) + [231]=> + int(0) + [232]=> + int(0) + [233]=> + int(0) + [234]=> + int(0) + [235]=> + int(0) + [236]=> + int(0) + [237]=> + int(0) + [238]=> + int(0) + [239]=> + int(0) + [240]=> + int(0) + [241]=> + int(0) + [242]=> + int(0) + [243]=> + int(0) + [244]=> + int(0) + [245]=> + int(0) + [246]=> + int(0) + [247]=> + int(0) + [248]=> + int(0) + [249]=> + int(0) + [250]=> + int(0) + [251]=> + int(0) + [252]=> + int(0) + [253]=> + int(0) + [254]=> + int(0) + [255]=> + int(0) +} +string(18) " Rabcdefghimnorstu" +string(476) "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051535455565758595a5b5c5d5e5f606a6b6c7071767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff" +===DONE=== diff --git a/ext/standard/tests/strings/count_chars_error.phpt b/ext/standard/tests/strings/count_chars_error.phpt new file mode 100644 index 000000000..68510be53 --- /dev/null +++ b/ext/standard/tests/strings/count_chars_error.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test count_chars() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing count_chars() : error conditions *** + +-- Testing count_chars() function with no arguments -- + +Warning: Wrong parameter count for count_chars() in %s on line %d +NULL + +-- Testing count_chars() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for count_chars() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/count_chars_variation1.phpt b/ext/standard/tests/strings/count_chars_variation1.phpt new file mode 100644 index 000000000..a4480a182 --- /dev/null +++ b/ext/standard/tests/strings/count_chars_variation1.phpt @@ -0,0 +1,289 @@ +--TEST-- +Test count_chars() function : usage variations - test values for $string argument +--FILE-- + 0 + var_dump(count_chars($input, 1)); + $count ++; +} + +fclose($file_handle); //closing the file handle + +?> +===DONE=== +--EXPECTF-- +*** Testing count_chars() function: with unexpected inputs for 'string' argument *** +-- Iteration 1 -- +array(1) { + [48]=> + int(1) +} +-- Iteration 2 -- +array(1) { + [49]=> + int(1) +} +-- Iteration 3 -- +array(2) { + [50]=> + int(1) + [53]=> + int(2) +} +-- Iteration 4 -- +array(3) { + [50]=> + int(1) + [53]=> + int(1) + [54]=> + int(1) +} +-- Iteration 5 -- +array(7) { + [49]=> + int(1) + [50]=> + int(1) + [51]=> + int(1) + [52]=> + int(3) + [54]=> + int(1) + [55]=> + int(2) + [56]=> + int(1) +} +-- Iteration 6 -- +array(8) { + [45]=> + int(1) + [49]=> + int(1) + [50]=> + int(1) + [51]=> + int(1) + [52]=> + int(3) + [54]=> + int(1) + [55]=> + int(1) + [56]=> + int(2) +} +-- Iteration 7 -- +array(4) { + [46]=> + int(1) + [48]=> + int(1) + [49]=> + int(1) + [53]=> + int(1) +} +-- Iteration 8 -- +array(5) { + [45]=> + int(1) + [46]=> + int(1) + [48]=> + int(1) + [50]=> + int(1) + [53]=> + int(1) +} +-- Iteration 9 -- +array(8) { + [48]=> + int(4) + [49]=> + int(2) + [50]=> + int(1) + [51]=> + int(1) + [52]=> + int(1) + [53]=> + int(1) + [54]=> + int(1) + [55]=> + int(1) +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(4) { + [65]=> + int(1) + [97]=> + int(1) + [114]=> + int(2) + [121]=> + int(1) +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(4) { + [65]=> + int(1) + [97]=> + int(1) + [114]=> + int(2) + [121]=> + int(1) +} +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +array(4) { + [65]=> + int(1) + [97]=> + int(1) + [114]=> + int(2) + [121]=> + int(1) +} +-- Iteration 13 -- +array(1) { + [49]=> + int(1) +} +-- Iteration 14 -- +array(0) { +} +-- Iteration 15 -- +array(1) { + [49]=> + int(1) +} +-- Iteration 16 -- +array(0) { +} +-- Iteration 17 -- +array(0) { +} +-- Iteration 18 -- +array(0) { +} +-- Iteration 19 -- +array(12) { + [32]=> + int(1) + [97]=> + int(1) + [98]=> + int(1) + [99]=> + int(1) + [101]=> + int(2) + [106]=> + int(1) + [108]=> + int(1) + [109]=> + int(1) + [111]=> + int(1) + [112]=> + int(1) + [115]=> + int(1) + [116]=> + int(1) +} +-- Iteration 20 -- +array(%d) { + %a +} +-- Iteration 21 -- +array(0) { +} +-- Iteration 22 -- +array(0) { +} +===DONE=== diff --git a/ext/standard/tests/strings/count_chars_variation2.phpt b/ext/standard/tests/strings/count_chars_variation2.phpt new file mode 100644 index 000000000..103c39826 --- /dev/null +++ b/ext/standard/tests/strings/count_chars_variation2.phpt @@ -0,0 +1,150 @@ +--TEST-- +Test count_chars() function : usage variations - test values for $mode argument +--FILE-- + 0 + var_dump(is_array(count_chars($string, $input))); + $count ++; +} + + +?> +===DONE=== +--EXPECTF-- +*** Testing count_chars() function: with unexpected inputs for 'mode' argument *** +-- Iteration 1 -- +bool(true) +-- Iteration 2 -- +bool(true) +-- Iteration 3 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 6 -- +bool(true) +-- Iteration 7 -- +bool(true) +-- Iteration 8 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 9 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 10 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 11 -- +bool(true) +-- Iteration 12 -- +bool(true) +-- Iteration 13 -- +bool(true) +-- Iteration 14 -- +bool(true) +-- Iteration 15 -- +bool(true) +-- Iteration 16 -- +bool(true) +-- Iteration 17 -- +bool(true) +-- Iteration 18 -- +bool(true) +-- Iteration 19 -- +bool(true) +-- Iteration 20 -- +bool(true) +-- Iteration 21 -- +bool(true) +-- Iteration 22 -- + +Warning: count_chars(): Unknown mode in %s on line %d +bool(false) +-- Iteration 23 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(true) +-- Iteration 24 -- +bool(true) +-- Iteration 25 -- +bool(true) +===DONE=== diff --git a/ext/standard/tests/strings/explode.phpt b/ext/standard/tests/strings/explode.phpt index 6d54b6609..1047fb785 100644 --- a/ext/standard/tests/strings/explode.phpt +++ b/ext/standard/tests/strings/explode.phpt @@ -17,6 +17,7 @@ var_dump(@explode("a", NULL)); var_dump(@explode(NULL, a)); var_dump(@explode("abc", "acb")); var_dump(@explode("somestring", "otherstring")); +var_dump(@explode("somestring", "otherstring", -1)); var_dump(@explode("a", "aaaaaa")); var_dump(@explode("==", str_repeat("-=".ord(0)."=-", 10))); var_dump(@explode("=", str_repeat("-=".ord(0)."=-", 10))); @@ -63,6 +64,8 @@ array(1) { [0]=> string(11) "otherstring" } +array(0) { +} array(7) { [0]=> string(0) "" diff --git a/ext/standard/tests/strings/explode_bug.phpt b/ext/standard/tests/strings/explode_bug.phpt new file mode 100644 index 000000000..9766f0b8f --- /dev/null +++ b/ext/standard/tests/strings/explode_bug.phpt @@ -0,0 +1,15 @@ +--TEST-- +Explode/memnstr bug +--INI-- +error_reporting=2047 +memory_limit=256M +--FILE-- + +--EXPECTF-- +array(1) { + [0]=> + string(1) "1" +} diff --git a/ext/standard/tests/strings/explode_error.phpt b/ext/standard/tests/strings/explode_error.phpt new file mode 100644 index 000000000..3f18bede8 --- /dev/null +++ b/ext/standard/tests/strings/explode_error.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test explode() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing explode() : error conditions *** + +-- Testing explode() function with no arguments -- + +Warning: Wrong parameter count for explode() in %s on line %d +NULL + +-- Testing explode() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for explode() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/explode_variation1.phpt b/ext/standard/tests/strings/explode_variation1.phpt new file mode 100644 index 000000000..abb3c3223 --- /dev/null +++ b/ext/standard/tests/strings/explode_variation1.phpt @@ -0,0 +1,203 @@ +--TEST-- +Test explode() function : usage variations - test values for $delimiter argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing explode() function: with unexpected inputs for 'delimiter' argument *** +-- Iteration 1 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 2 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 3 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 4 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 5 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 6 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 7 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 8 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 9 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 13 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 14 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 15 -- +array(2) { + [0]=> + string(5) "piece" + [1]=> + string(35) " piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 16 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 17 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 18 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 19 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 20 -- +array(1) { + [0]=> + string(%d) "%s" +} +-- Iteration 21 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +-- Iteration 22 -- + +Warning: explode(): Empty delimiter in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/explode_variation2.phpt b/ext/standard/tests/strings/explode_variation2.phpt new file mode 100644 index 000000000..f2c0057fe --- /dev/null +++ b/ext/standard/tests/strings/explode_variation2.phpt @@ -0,0 +1,209 @@ +--TEST-- +Test explode() function : usage variations - test values for $string argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing explode() function: with unexpected inputs for 'string' argument *** +-- Iteration 1 -- +array(1) { + [0]=> + string(1) "0" +} +-- Iteration 2 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 3 -- +array(1) { + [0]=> + string(3) "255" +} +-- Iteration 4 -- +array(1) { + [0]=> + string(3) "256" +} +-- Iteration 5 -- +array(1) { + [0]=> + string(10) "2147483647" +} +-- Iteration 6 -- +array(1) { + [0]=> + string(11) "-2147483648" +} +-- Iteration 7 -- +array(1) { + [0]=> + string(4) "10.5" +} +-- Iteration 8 -- +array(1) { + [0]=> + string(5) "-20.5" +} +-- Iteration 9 -- +array(1) { + [0]=> + string(12) "101234567000" +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 13 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 14 -- +array(1) { + [0]=> + string(0) "" +} +-- Iteration 15 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 16 -- +array(1) { + [0]=> + string(0) "" +} +-- Iteration 17 -- +array(1) { + [0]=> + string(0) "" +} +-- Iteration 18 -- +array(1) { + [0]=> + string(0) "" +} +-- Iteration 19 -- +array(2) { + [0]=> + string(6) "sample" + [1]=> + string(6) "object" +} +-- Iteration 20 -- +array(3) { + [0]=> + string(8) "Resource" + [1]=> + string(2) "id" + [2]=> + string(%d) "#%d" +} +-- Iteration 21 -- +array(1) { + [0]=> + string(0) "" +} +-- Iteration 22 -- +array(1) { + [0]=> + string(0) "" +} +===DONE=== diff --git a/ext/standard/tests/strings/explode_variation3.phpt b/ext/standard/tests/strings/explode_variation3.phpt new file mode 100644 index 000000000..8d725e7fd --- /dev/null +++ b/ext/standard/tests/strings/explode_variation3.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test explode() function : usage variations - test values for $limit argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing explode() function: with unexpected inputs for 'limit' argument *** +-- Iteration 1 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 2 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 3 -- +array(6) { + [0]=> + string(6) "piece1" + [1]=> + string(6) "piece2" + [2]=> + string(6) "piece3" + [3]=> + string(6) "piece4" + [4]=> + string(6) "piece5" + [5]=> + string(6) "piece6" +} +-- Iteration 4 -- +array(6) { + [0]=> + string(6) "piece1" + [1]=> + string(6) "piece2" + [2]=> + string(6) "piece3" + [3]=> + string(6) "piece4" + [4]=> + string(6) "piece5" + [5]=> + string(6) "piece6" +} +-- Iteration 5 -- +array(6) { + [0]=> + string(6) "piece1" + [1]=> + string(6) "piece2" + [2]=> + string(6) "piece3" + [3]=> + string(6) "piece4" + [4]=> + string(6) "piece5" + [5]=> + string(6) "piece6" +} +-- Iteration 6 -- +array(0) { +} +-- Iteration 7 -- +array(6) { + [0]=> + string(6) "piece1" + [1]=> + string(6) "piece2" + [2]=> + string(6) "piece3" + [3]=> + string(6) "piece4" + [4]=> + string(6) "piece5" + [5]=> + string(6) "piece6" +} +-- Iteration 8 -- +array(0) { +} +-- Iteration 9 -- +array(6) { + [0]=> + string(6) "piece1" + [1]=> + string(6) "piece2" + [2]=> + string(6) "piece3" + [3]=> + string(6) "piece4" + [4]=> + string(6) "piece5" + [5]=> + string(6) "piece6" +} +-- Iteration 10 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 11 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 12 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 13 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 14 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 15 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 16 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 17 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 18 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 19 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 20 -- +array(%d) { +%a +} +-- Iteration 21 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +-- Iteration 22 -- +array(1) { + [0]=> + string(41) "piece1 piece2 piece3 piece4 piece5 piece6" +} +===DONE=== diff --git a/ext/standard/tests/strings/explode_variation4.phpt b/ext/standard/tests/strings/explode_variation4.phpt new file mode 100644 index 000000000..080531c6e --- /dev/null +++ b/ext/standard/tests/strings/explode_variation4.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test explode() function : usage variations - match longer string +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing explode() function: match longer string *** +array(7) { + [0]=> + string(6) "piece1" + [1]=> + string(5) "iece2" + [2]=> + string(5) "iece3" + [3]=> + string(5) "iece4" + [4]=> + string(5) "iece5" + [5]=> + string(5) "iece6" + [6]=> + string(0) "" +} +===DONE=== diff --git a/ext/standard/tests/strings/explode_variation5.phpt b/ext/standard/tests/strings/explode_variation5.phpt new file mode 100644 index 000000000..754e55222 --- /dev/null +++ b/ext/standard/tests/strings/explode_variation5.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test explode() function : usage variations - positive and negative limits +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing explode() function: positive and negative limits *** + +-- positive limit -- +array(2) { + [0]=> + string(3) "one" + [1]=> + string(16) "two||three||four" +} + +-- negative limit (since PHP 5.1) -- +array(3) { + [0]=> + string(3) "one" + [1]=> + string(3) "two" + [2]=> + string(5) "three" +} + +-- negative limit (since PHP 5.1) with null string -- +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/explode_variation6.phpt b/ext/standard/tests/strings/explode_variation6.phpt new file mode 100644 index 000000000..d1b34e3ef --- /dev/null +++ b/ext/standard/tests/strings/explode_variation6.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test explode() function : usage variations - misc tests +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing explode() function: misc tests *** + +-- positive limit with null separator -- +string(6) "6f6e65" +string(28) "74776f00746872656500666f7572" + +-- negative limit (since PHP 5.1) with null separator -- +string(6) "6f6e65" +string(6) "74776f" + +-- unknown string -- +string(36) "6f6e650074776f00746872656500666f7572" + +-- limit = 0 -- +string(36) "6f6e650074776f00746872656500666f7572" + +-- limit = -1 -- +string(6) "6f6e65" +string(6) "74776f" +string(10) "7468726565" + +-- large limit = -100 -- +string(6) "6f6e65" +string(6) "74776f" +string(10) "7468726565" +string(8) "666f7572" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/hebrev_basic.phpt b/ext/standard/tests/strings/hebrev_basic.phpt new file mode 100644 index 000000000..2f53c6fc2 --- /dev/null +++ b/ext/standard/tests/strings/hebrev_basic.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test hebrev() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrev() : basic functionality *** +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +string(109) "to visual text +Hebrew text +logical +converts +hebrev function +.The +breaking words +tries to avoid +.The function +" +===DONE=== diff --git a/ext/standard/tests/strings/hebrev_error.phpt b/ext/standard/tests/strings/hebrev_error.phpt new file mode 100644 index 000000000..c4e3ee6bb --- /dev/null +++ b/ext/standard/tests/strings/hebrev_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test hebrev() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrev() : error conditions *** + +-- Testing hebrev() function with no arguments -- + +Warning: Wrong parameter count for hebrev() in %s on line %s +NULL + +-- Testing hebrev() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for hebrev() in %s on line %d +NULL + +===DONE=== diff --git a/ext/standard/tests/strings/hebrev_variation1.phpt b/ext/standard/tests/strings/hebrev_variation1.phpt new file mode 100644 index 000000000..498980249 --- /dev/null +++ b/ext/standard/tests/strings/hebrev_variation1.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test hebrev() function : usage variations - test values for $hebrew_text argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrev() function: with unexpected inputs for 'hebrew_text' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(11) "-2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(5) "-20.5" +-- Iteration 9 -- +string(10) "1012345.67" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- +string(13) "sample object" +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +bool(false) +-- Iteration 22 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/hebrev_variation2.phpt b/ext/standard/tests/strings/hebrev_variation2.phpt new file mode 100644 index 000000000..07d454560 --- /dev/null +++ b/ext/standard/tests/strings/hebrev_variation2.phpt @@ -0,0 +1,298 @@ +--TEST-- +Test hebrev() function : usage variations - test values for $max_chars_per_line argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrev() function: with unexpected inputs for 'max_chars_per_line' argument *** +-- Iteration 1 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 2 -- +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 3 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 4 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 5 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 6 -- +string(109) "txet +lausiv +ot +txet +werbeH +lacigol +strevnoc +noitcnuf +verbeh +ehT. +sdrow +gnikaerb +diova +ot +seirt +noitcnuf +ehT. +" +-- Iteration 7 -- +string(109) "text +to visual +text +Hebrew +logical +converts +function +hebrev +.The +words +breaking +to avoid +tries +function +.The +" +-- Iteration 8 -- +string(109) "txet +lausiv +ot +txet +werbeH +lacigol +strevnoc +noitcnuf +verbeh +ehT. +sdrow +gnikaerb +diova +ot +seirt +noitcnuf +ehT. +" +-- Iteration 9 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 10 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 11 -- +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 12 -- +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 13 -- +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 14 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 15 -- +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 16 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 17 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 18 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 19 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 20 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 21 -- +string(109) "textual vis +to +textrew Heb +icallog +ertsconvion unctf +brevhe +.Therds +wo +kingbreaoid av +to +riest +tionfuncThe . +" +-- Iteration 22 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 23 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 24 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +string(109) "xttel uaisv +tot ext +ewbrHel cagilos rtveonc +ontincfuv reebh +he.Ts +rdwog inakreb +idvoa +tos ietrn ioctunf +he.T +" +-- Iteration 25 -- +string(109) "%a" +-- Iteration 26 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +-- Iteration 27 -- +string(109) ".The hebrev function converts logical Hebrew text to visual text +.The function tries to avoid breaking words +" +===DONE=== diff --git a/ext/standard/tests/strings/hebrevc_basic.phpt b/ext/standard/tests/strings/hebrevc_basic.phpt new file mode 100644 index 000000000..9d9a7137c --- /dev/null +++ b/ext/standard/tests/strings/hebrevc_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test hebrevc() function : basic functionality +--FILE-- +\n'.\nThe function tries to avoid breaking words.\n"; + +var_dump(hebrevc($hebrew_text)); +var_dump(hebrevc($hebrew_text, 15)); + +?> +===DONE=== +--EXPECTF-- +*** Testing hebrevc() : basic functionality *** +string(239) ".The hebrevc function converts logical Hebrew text to visual text
+) This function is similar to hebrev() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +string(317) "to visual text
+Hebrew text
+logical
+converts
+function
+.The hebrevc
+newlines
+it converts
+difference that
+with the
+to hebrev()
+is similar
+) This function
+ +.'
+breaking words
+tries to avoid
+.The function
+" +===DONE=== diff --git a/ext/standard/tests/strings/hebrevc_error.phpt b/ext/standard/tests/strings/hebrevc_error.phpt new file mode 100644 index 000000000..5c54369a3 --- /dev/null +++ b/ext/standard/tests/strings/hebrevc_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test hebrevc() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrevc() : error conditions *** + +-- Testing hebrevc() function with no arguments -- + +Warning: Wrong parameter count for hebrevc() in %s on line %s +NULL + +-- Testing hebrevc() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for hebrevc() in %s on line %d +NULL + +===DONE=== diff --git a/ext/standard/tests/strings/hebrevc_variation1.phpt b/ext/standard/tests/strings/hebrevc_variation1.phpt new file mode 100644 index 000000000..173b90390 --- /dev/null +++ b/ext/standard/tests/strings/hebrevc_variation1.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test hebrevc() function : usage variations - test values for $hebrew_text argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing hebrevc() function: with unexpected inputs for 'hebrew_text' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(11) "-2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(5) "-20.5" +-- Iteration 9 -- +string(10) "1012345.67" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- +string(13) "sample object" +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +bool(false) +-- Iteration 22 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/hebrevc_variation2.phpt b/ext/standard/tests/strings/hebrevc_variation2.phpt new file mode 100644 index 000000000..909e8818f --- /dev/null +++ b/ext/standard/tests/strings/hebrevc_variation2.phpt @@ -0,0 +1,471 @@ +--TEST-- +Test hebrevc() function : usage variations - test values for $max_chars_per_line argument +--FILE-- +\n'.\nThe function tries to avoid breaking words.\n"; + +foreach($inputs as $max_chars_per_line) { + echo "-- Iteration $count --\n"; + var_dump( hebrevc($hebrew_text, $max_chars_per_line) ); + $count ++; +} + +fclose($file_handle); //closing the file handle + +?> +===DONE=== +--EXPECTF-- +*** Testing hebrevc() function: with unexpected inputs for 'max_chars_per_line' argument *** +-- Iteration 1 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 2 -- +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 3 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 4 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 5 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 6 -- +string(421) "txet
+lausiv
+ot
+txet
+werbeH
+lacigol
+strevnoc
+noitcnuf
+ccverbeh
+ehT.
+senilwen
+strevnoc
+ti
+taht
+ecnereffid
+eht
+htiw
+)(cverbeh
+ot
+ralimis
+si
+noitcnuf
+sihT
+)
+(
+rb<'
+ot<
+'.
+sdrow
+gnikaerb
+diova
+ot
+seirt
+noitcnuf
+ehT.
+" +-- Iteration 7 -- +string(373) "text
+to visual
+text
+Hebrew
+logical
+converts
+function
+hebrevcc
+.The
+newlines
+converts
+that it
+difference
+with the
+hebrevc()
+similar to
+is
+function
+) This
+ +.'
+words
+breaking
+to avoid
+tries
+function
+.The
+" +-- Iteration 8 -- +string(421) "txet
+lausiv
+ot
+txet
+werbeH
+lacigol
+strevnoc
+noitcnuf
+ccverbeh
+ehT.
+senilwen
+strevnoc
+ti
+taht
+ecnereffid
+eht
+htiw
+)(cverbeh
+ot
+ralimis
+si
+noitcnuf
+sihT
+)
+(
+rb<'
+ot<
+'.
+sdrow
+gnikaerb
+diova
+ot
+seirt
+noitcnuf
+ehT.
+" +-- Iteration 9 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 10 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 11 -- +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 12 -- +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 13 -- +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 14 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 15 -- +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 16 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 17 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 18 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 19 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 20 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 21 -- +string(349) "textual vis
+to
+textrew Heb
+icallog
+ertsconvion unctf
+evcchebrThe .
+inesnewlrts onvec
+it
+thatnce feredif
+the
+withc() brevhe
+to
+ilarsim
+is
+tionfunchis ) T
+(
+' +
+ordsw
+kingbreaoid av
+to
+riest
+tionfuncThe .
+" +-- Iteration 22 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 23 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 24 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +string(331) "xttel uaisv
+tot ext
+ewbrHel cagilos rtveonc
+ontincfuc vcreebh
+he.Ts
+neliewn
+tsernvcot i
+atthe ncrefeifd
+het
+thwi) c(evbrheo t
+arilims
+isn ioctunf
+isTh) (
+r +to<
+.'s
+rdwog inakreb
+idvoa
+tos ietrn ioctunf
+he.T
+" +-- Iteration 25 -- +string(%d) %a +-- Iteration 26 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +-- Iteration 27 -- +string(241) ".The hebrevcc function converts logical Hebrew text to visual text
+) This function is similar to hebrevc() with the difference that it converts newlines
+ +.'
+.The function tries to avoid breaking words
+" +===DONE=== diff --git a/ext/standard/tests/strings/htmlentities18.phpt b/ext/standard/tests/strings/htmlentities18.phpt index ab3df05da..8970be8a0 100644 --- a/ext/standard/tests/strings/htmlentities18.phpt +++ b/ext/standard/tests/strings/htmlentities18.phpt @@ -6,7 +6,8 @@ $tests = array( "abc", "abc&sfdsa", "test+s & some more D", - "&; & &#a; &9;", + "test+s & some more D", + "&; & &#a; &9; &#xyz;", "&kffjadfdhsjfhjasdhffasdfas;", "�", "&", @@ -26,8 +27,10 @@ string(13) "abc&sfdsa" string(13) "abc&sfdsa" string(33) "test+s & some more D" string(33) "test+s & some more D" -string(24) "&; &amp &#a; &9;" -string(24) "&; &amp &#a; &9;" +string(34) "test+s & some more D" +string(34) "test+s & some more D" +string(35) "&; &amp &#a; &9; &#xyz;" +string(35) "&; &amp &#a; &9; &#xyz;" string(32) "&kffjadfdhsjfhjasdhffasdfas;" string(32) "&kffjadfdhsjfhjasdhffasdfas;" string(16) "&#8787978789" diff --git a/ext/standard/tests/strings/levenshtein.phpt b/ext/standard/tests/strings/levenshtein.phpt index d7d5e7a44..249b532da 100644 --- a/ext/standard/tests/strings/levenshtein.phpt +++ b/ext/standard/tests/strings/levenshtein.phpt @@ -77,10 +77,8 @@ Warning: levenshtein(): Argument string(s) too long in %s on line %d Warning: levenshtein(): Argument string(s) too long in %s on line %d all passed -Notice: Array to string conversion in %s on line %d - -Notice: Array to string conversion in %s on line %d -int(0) +Warning: levenshtein() expects parameter 1 to be string, array given in %s on line %d +NULL int(0) int(0) diff --git a/ext/standard/tests/strings/ltrim_basic.phpt b/ext/standard/tests/strings/ltrim_basic.phpt new file mode 100644 index 000000000..74769cac9 --- /dev/null +++ b/ext/standard/tests/strings/ltrim_basic.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test ltrim() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing ltrim() : basic functionality *** + +-- Trim string with all white space characters -- +string(29) "---These are a few words--- " + +-- Trim non-whitespace from a string -- +string(15) "Hello World===!" + +-- Trim some non-white space characters from a string -- +string(10) " World===!" + +-- Trim some non-white space characters from a string suing a character range -- +string(10) "0123456789" + +-- Trim the ASCII control characters at the beginning of a string -- +string(14) "Example string" +===DONE=== diff --git a/ext/standard/tests/strings/ltrim_error.phpt b/ext/standard/tests/strings/ltrim_error.phpt new file mode 100644 index 000000000..bb9cdfe79 --- /dev/null +++ b/ext/standard/tests/strings/ltrim_error.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test ltrim() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ltrim() : error conditions *** + +-- Testing ltrim() function with no arguments -- + +Warning: Wrong parameter count for ltrim() in %s on line %d +NULL + +-- Testing ltrim() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for ltrim() in %s on line %d +NULL + +-- Test ltrim function with various invalid charlists + +Warning: ltrim(): Invalid '..'-range, no character to the left of '..' in %s on line %d +string(14) " Hello World +" + +Warning: ltrim(): Invalid '..'-range, no character to the right of '..' in %s on line %d +string(14) " Hello World +" + +Warning: ltrim(): Invalid '..'-range, '..'-range needs to be incrementing in %s on line %d +string(14) " Hello World +" + +Warning: ltrim(): Invalid '..'-range in %s on line %d +string(14) " Hello World +" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/ltrim_variation1.phpt b/ext/standard/tests/strings/ltrim_variation1.phpt new file mode 100644 index 000000000..ef765111e --- /dev/null +++ b/ext/standard/tests/strings/ltrim_variation1.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test ltrim() function : usage variations - test values for $str argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ltrim() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(10) "2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(4) "20.5" +-- Iteration 9 -- +string(12) "101234567000" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(15) "sample object " +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/ltrim_variation2.phpt b/ext/standard/tests/strings/ltrim_variation2.phpt new file mode 100644 index 000000000..fea708891 --- /dev/null +++ b/ext/standard/tests/strings/ltrim_variation2.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test ltrim() function : usage variations - test values for $charlist argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ltrim() function: with unexpected inputs for 'charlist' argument *** +-- Iteration 1 -- +string(19) "!---Hello World---!" +-- Iteration 2 -- +string(19) "!---Hello World---!" +-- Iteration 3 -- +string(19) "!---Hello World---!" +-- Iteration 4 -- +string(19) "!---Hello World---!" +-- Iteration 5 -- +string(19) "!---Hello World---!" +-- Iteration 6 -- +string(19) "!---Hello World---!" +-- Iteration 7 -- +string(19) "!---Hello World---!" +-- Iteration 8 -- +string(19) "!---Hello World---!" +-- Iteration 9 -- +string(19) "!---Hello World---!" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 13 -- +string(19) "!---Hello World---!" +-- Iteration 14 -- +string(19) "!---Hello World---!" +-- Iteration 15 -- +string(19) "!---Hello World---!" +-- Iteration 16 -- +string(19) "!---Hello World---!" +-- Iteration 17 -- +string(19) "!---Hello World---!" +-- Iteration 18 -- +string(19) "!---Hello World---!" +-- Iteration 19 -- +string(19) "!---Hello World---!" +-- Iteration 20 -- +string(19) "!---Hello World---!" +-- Iteration 21 -- +string(19) "!---Hello World---!" +-- Iteration 22 -- +string(19) "!---Hello World---!" +===DONE=== diff --git a/ext/standard/tests/strings/md5_file.phpt b/ext/standard/tests/strings/md5_file.phpt index c10d62044..879cd59aa 100644 Binary files a/ext/standard/tests/strings/md5_file.phpt and b/ext/standard/tests/strings/md5_file.phpt differ diff --git a/ext/standard/tests/strings/money_format_basic1.phpt b/ext/standard/tests/strings/money_format_basic1.phpt new file mode 100644 index 000000000..e76aa6087 --- /dev/null +++ b/ext/standard/tests/strings/money_format_basic1.phpt @@ -0,0 +1,84 @@ +--TEST-- +Test money_format() function : basic functionality using national currency symbols +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing money_format() : basic functionality using national currency symbols*** +Format values with 14 positions, 8 digits to left, 2 to right using national format +string(15) " $ 1,234.57" +string(15) "-$ 1,234.57" +Format again but with ( for negative values +string(15) " $ 1,234.57" +string(16) "($ 1,234.57)" +Format with 0 for padding character +string(15) " $000001,234.57" +string(15) "-$000001,234.57" +Format again with * for padding character +string(15) " $*****1,234.57" +string(15) "-$*****1,234.57" +Format again but disable grouping character +string(14) " $****1234.57" +string(14) " -$****1234.57" +Format again suppress currency symbol +string(14) " *****1,234.57" +string(14) "-*****1,234.57" +===DONE=== + diff --git a/ext/standard/tests/strings/money_format_basic2.phpt b/ext/standard/tests/strings/money_format_basic2.phpt new file mode 100644 index 000000000..8074cf998 --- /dev/null +++ b/ext/standard/tests/strings/money_format_basic2.phpt @@ -0,0 +1,84 @@ +--TEST-- +Test money_format() function : basic functionality using international currency symbols +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing money_format() : basic functionality using international currency symbols*** +Format with 14 positions, 8 digits to left, 2 to right using national format +string(18) " USD 1,234.57" +string(18) "-USD 1,234.57" +Format with ( for negative values +string(18) " USD 1,234.57" +string(19) "(USD 1,234.57)" +Format with 0 for padding character +string(18) " USD 000001,234.57" +string(18) "-USD 000001,234.57" +Format with * for padding character +string(18) " USD *****1,234.57" +string(18) "-USD *****1,234.57" +Format again but disable grouping character +string(16) " USD ****1234.57" +string(16) "-USD ****1234.57" +Format again but suppress currency symbol +string(14) " *****1,234.57" +string(14) "-*****1,234.57" +===DONE=== + diff --git a/ext/standard/tests/strings/money_format_basic3.phpt b/ext/standard/tests/strings/money_format_basic3.phpt new file mode 100644 index 000000000..98d0fca7f --- /dev/null +++ b/ext/standard/tests/strings/money_format_basic3.phpt @@ -0,0 +1,83 @@ +--TEST-- +Test money_format() function : basic functionality using national currency symbols and de_DE locale +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing money_format() : basic functionality using national currency symbols and de_DE locale*** +Format values with 14 positions, 8 digits to left, 2 to right using national format +string(18) " 1.234,57 EUR" +string(18) "- 1.234,57 EUR" +Format again but with ( for negative values +string(18) " 1.234,57 EUR" +string(19) "( 1.234,57 EUR)" +Format with 0 for padding character +string(18) " 000001.234,57 EUR" +string(18) "-000001.234,57 EUR" +Format again with * for padding character +string(18) " *****1.234,57 EUR" +string(18) "-*****1.234,57 EUR" +Format again but disable grouping character +string(16) " ****1234,57 EUR" +string(16) "-****1234,57 EUR" +Format again suppress currency symbol +string(14) " *****1.234,57" +string(14) "-*****1.234,57" +===DONE=== diff --git a/ext/standard/tests/strings/money_format_error.phpt b/ext/standard/tests/strings/money_format_error.phpt new file mode 100644 index 000000000..fac89d1b5 --- /dev/null +++ b/ext/standard/tests/strings/money_format_error.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test money_format() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing money_format() : error conditions *** + +-- Testing money_format() function with no arguments -- + +Warning: money_format() expects exactly 2 parameters, 0 given in %s on line %d +NULL + +-- Testing money_format() function with insufficient arguments -- + +Warning: money_format() expects exactly 2 parameters, 1 given in %s on line %d +NULL + +-- Testing money_format() function with more than expected no. of arguments -- + +Warning: money_format() expects exactly 2 parameters, 3 given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/money_format_variation1.phpt b/ext/standard/tests/strings/money_format_variation1.phpt new file mode 100644 index 000000000..4224a6975 --- /dev/null +++ b/ext/standard/tests/strings/money_format_variation1.phpt @@ -0,0 +1,178 @@ +--TEST-- +Test money_format() function : usage variations - test values for $format argument +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing money_format() function: with unexpected inputs for 'format' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(11) "-2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(5) "-20.5" +-- Iteration 9 -- +string(12) "101234567000" +-- Iteration 10 -- + +Warning: money_format() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: money_format() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: money_format() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(4) "abcd" +-- Iteration 20 -- +string(4) "abcd" +-- Iteration 21 -- +string(5) "0x12f" +-- Iteration 22 -- +string(18) " *****1,234.56abcd" +-- Iteration 23 -- + +Warning: money_format() expects parameter 1 to be string, object given in %s on line %d +NULL +-- Iteration 24 -- +string(17) " sample object " +-- Iteration 25 -- + +Warning: money_format() expects parameter 1 to be string, resource given in %s on line %d +NULL +-- Iteration 26 -- +string(0) "" +-- Iteration 27 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/money_format_variation2.phpt b/ext/standard/tests/strings/money_format_variation2.phpt new file mode 100644 index 000000000..24d48735b --- /dev/null +++ b/ext/standard/tests/strings/money_format_variation2.phpt @@ -0,0 +1,186 @@ +--TEST-- +Test money_format() function : usage variations - test values for $number argument +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing money_format() function: with unexpected inputs for 'number' argument *** +-- Iteration 1 -- +string(18) " USD 0.00" +-- Iteration 2 -- +string(18) " USD 1.00" +-- Iteration 3 -- +string(18) " USD 255.00" +-- Iteration 4 -- +string(18) " USD 256.00" +-- Iteration 5 -- +string(21) " USD 2,147,483,647.00" +-- Iteration 6 -- +string(21) "-USD 2,147,483,648.00" +-- Iteration 7 -- +string(18) " USD 10.50" +-- Iteration 8 -- +string(18) "-USD 20.50" +-- Iteration 9 -- +string(23) " USD 101,234,567,000.00" +-- Iteration 10 -- + +Warning: money_format() expects parameter 2 to be double, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: money_format() expects parameter 2 to be double, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: money_format() expects parameter 2 to be double, array given in %s on line %d +NULL +-- Iteration 13 -- +string(18) " USD 1.00" +-- Iteration 14 -- +string(18) " USD 0.00" +-- Iteration 15 -- +string(18) " USD 1.00" +-- Iteration 16 -- +string(18) " USD 0.00" +-- Iteration 17 -- +string(18) " USD 0.00" +-- Iteration 18 -- +string(18) " USD 0.00" +-- Iteration 19 -- + +Warning: money_format() expects parameter 2 to be double, string given in %s on line %d +NULL +-- Iteration 20 -- + +Warning: money_format() expects parameter 2 to be double, string given in %s on line %d +NULL +-- Iteration 21 -- +string(18) " USD 303.00" +-- Iteration 22 -- + +Warning: money_format() expects parameter 2 to be double, string given in %s on line %d +NULL +-- Iteration 23 -- + +Warning: money_format() expects parameter 2 to be double, object given in %s on line %d +NULL +-- Iteration 24 -- + +Warning: money_format() expects parameter 2 to be double, object given in %s on line %d +NULL +-- Iteration 25 -- + +Warning: money_format() expects parameter 2 to be double, resource given in %s on line %d +NULL +-- Iteration 26 -- +string(18) " USD 0.00" +-- Iteration 27 -- +string(18) " USD 0.00" +===DONE=== diff --git a/ext/standard/tests/strings/nl2br_variation5.phpt b/ext/standard/tests/strings/nl2br_variation5.phpt index 066d642cd..a042dd6b1 100644 --- a/ext/standard/tests/strings/nl2br_variation5.phpt +++ b/ext/standard/tests/strings/nl2br_variation5.phpt @@ -40,8 +40,8 @@ $values = array( // float data 10.5, -10.5, - 10.5e10, - 10.6E-10, + 10.1234567e10, + 10.7654321E-10, .5, // array data @@ -85,8 +85,8 @@ foreach($values as $value) { //closing the file handle fclose( $file_handle ); -echo "Done"; ?> +===DONE=== --EXPECTF-- *** Testing nl2br() : usage variations *** -- Iteration 1 -- @@ -102,9 +102,9 @@ string(4) "10.5" -- Iteration 6 -- string(5) "-10.5" -- Iteration 7 -- -string(12) "105000000000" +string(12) "101234567000" -- Iteration 8 -- -string(7) "1.06E-9" +string(13) "1.07654321E-9" -- Iteration 9 -- string(3) "0.5" -- Iteration 10 -- @@ -147,4 +147,4 @@ string(9) "My String" string(0) "" -- Iteration 24 -- string(0) "" -Done +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/nl_langinfo_basic.phpt b/ext/standard/tests/strings/nl_langinfo_basic.phpt new file mode 100644 index 000000000..370177ba8 --- /dev/null +++ b/ext/standard/tests/strings/nl_langinfo_basic.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test nl_langinfo() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing nl_langinfo() : basic functionality *** +string(3) "Mon" +string(9) "Wednesday" +string(3) "Jul" +string(5) "April" +string(1) "." +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/nl_langinfo_error1.phpt b/ext/standard/tests/strings/nl_langinfo_error1.phpt new file mode 100644 index 000000000..7702b012e --- /dev/null +++ b/ext/standard/tests/strings/nl_langinfo_error1.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test nl_langinfo() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing nl_langinfo() : error conditions *** + +-- Testing nl_langinfo() function with no arguments -- + +Warning: nl_langinfo() expects exactly 1 parameter, 0 given in %s on line %d +NULL + +-- Testing nl_langinfo() function with more than expected no. of arguments -- + +Warning: nl_langinfo() expects exactly 1 parameter, 2 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/nl_langinfo_variation1.phpt b/ext/standard/tests/strings/nl_langinfo_variation1.phpt new file mode 100644 index 000000000..65dbb2804 --- /dev/null +++ b/ext/standard/tests/strings/nl_langinfo_variation1.phpt @@ -0,0 +1,181 @@ +--TEST-- +Test nl_langinfo() function : unexpected inputs for '$tem' argument +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing nl_langinfo() : with unexpected inputs for 'item' argument *** +-- Iteration 1 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 2 -- + +Warning: nl_langinfo(): Item '10' is not valid in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: nl_langinfo(): Item '2147483647' is not valid in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: nl_langinfo(): Item '-2147483648' is not valid in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: nl_langinfo(): Item '10' is not valid in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: nl_langinfo(): Item '20' is not valid in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: nl_langinfo(): Item '-20' is not valid in %s on line %d +bool(false) +-- Iteration 8 -- + +Warning: nl_langinfo(): Item '1012345' is not valid in %s on line %d +bool(false) +-- Iteration 9 -- + +Warning: nl_langinfo() expects parameter 1 to be long, array given in %s on line %d +NULL +-- Iteration 10 -- + +Warning: nl_langinfo() expects parameter 1 to be long, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: nl_langinfo() expects parameter 1 to be long, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: nl_langinfo(): Item '1' is not valid in %s on line %d +bool(false) +-- Iteration 13 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 14 -- + +Warning: nl_langinfo(): Item '1' is not valid in %s on line %d +bool(false) +-- Iteration 15 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 16 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 17 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 18 -- + +Warning: nl_langinfo() expects parameter 1 to be long, object given in %s on line %d +NULL +-- Iteration 19 -- + +Warning: nl_langinfo() expects parameter 1 to be long, resource given in %s on line %d +NULL +-- Iteration 20 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +-- Iteration 21 -- + +Warning: nl_langinfo(): Item '0' is not valid in %s on line %d +bool(false) +===DONE=== + diff --git a/ext/standard/tests/strings/number_format_basic.phpt b/ext/standard/tests/strings/number_format_basic.phpt new file mode 100644 index 000000000..7a5a7a770 --- /dev/null +++ b/ext/standard/tests/strings/number_format_basic.phpt @@ -0,0 +1,99 @@ +--TEST-- +Test number_format() - basic function test number_format() +--FILE-- + +===DONE=== +--EXPECTF-- +-- number_format tests.....default -- +string(5) "1,235" +string(6) "-1,235" +string(10) "12,346,578" +string(11) "-12,345,679" +string(11) "305,450,479" +string(11) "402,653,183" +string(11) "123,456,789" +string(3) "123" +string(3) "123" +string(1) "0" +string(1) "1" +string(1) "0" + +-- number_format tests.....with two dp -- +string(8) "1,234.57" +string(9) "-1,234.57" +string(13) "12,346,578.00" +string(14) "-12,345,678.90" +string(14) "305,450,479.00" +string(14) "402,653,183.00" +string(14) "123,456,789.00" +string(6) "123.46" +string(6) "123.46" +string(4) "0.00" +string(4) "1.00" +string(4) "0.00" + +-- number_format tests.....English format -- +string(8) "1 234.57" +string(9) "-1 234.57" +string(13) "12 346 578.00" +string(14) "-12 345 678.90" +string(14) "305 450 479.00" +string(14) "402 653 183.00" +string(14) "123 456 789.00" +string(6) "123.46" +string(6) "123.46" +string(4) "0.00" +string(4) "1.00" +string(4) "0.00" + +-- number_format tests.....French format -- +string(8) "1 234,57" +string(9) "-1 234,57" +string(13) "12 346 578,00" +string(14) "-12 345 678,90" +string(14) "305 450 479,00" +string(14) "402 653 183,00" +string(14) "123 456 789,00" +string(6) "123,46" +string(6) "123,46" +string(4) "0,00" +string(4) "1,00" +string(4) "0,00" +===DONE=== diff --git a/ext/standard/tests/strings/number_format_error.phpt b/ext/standard/tests/strings/number_format_error.phpt new file mode 100644 index 000000000..be3521607 --- /dev/null +++ b/ext/standard/tests/strings/number_format_error.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test number_format() - wrong params test number_format() +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing number_format() : error conditions *** + +-- Testing number_format() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for number_format() in %s on line %d + +-- Testing number_format() function with 3 arguments -- + +Warning: Wrong parameter count for number_format() in %s on line %d + +-- Testing number_format() function with more than 4 arguments -- + +Warning: Wrong parameter count for number_format() in %s on line %d +===DONE=== diff --git a/ext/standard/tests/strings/ord_basic.phpt b/ext/standard/tests/strings/ord_basic.phpt new file mode 100644 index 000000000..19f3ea28d --- /dev/null +++ b/ext/standard/tests/strings/ord_basic.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test ord() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing ord() : basic functionality *** +int(97) +int(122) +int(48) +int(57) +int(33) +int(42) +int(64) +int(10) +int(10) +int(255) +int(72) +===DONE=== diff --git a/ext/standard/tests/strings/ord_error.phpt b/ext/standard/tests/strings/ord_error.phpt new file mode 100644 index 000000000..c81839264 --- /dev/null +++ b/ext/standard/tests/strings/ord_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test ord() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ord() : error conditions *** + +-- Testing ord() function with no arguments -- + +Warning: Wrong parameter count for ord() in %s on line %d +NULL + +-- Testing ord() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for ord() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/ord_variation1.phpt b/ext/standard/tests/strings/ord_variation1.phpt new file mode 100644 index 000000000..ebff2f7db --- /dev/null +++ b/ext/standard/tests/strings/ord_variation1.phpt @@ -0,0 +1,135 @@ +--TEST-- +Test ord() function : usage variations - test values for $string argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing ord() function: with unexpected inputs for 'string' argument *** +-- Iteration 1 -- +int(48) +-- Iteration 2 -- +int(49) +-- Iteration 3 -- +int(50) +-- Iteration 4 -- +int(50) +-- Iteration 5 -- +int(50) +-- Iteration 6 -- +int(45) +-- Iteration 7 -- +int(49) +-- Iteration 8 -- +int(45) +-- Iteration 9 -- +int(49) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +int(65) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +int(65) +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +int(65) +-- Iteration 13 -- +int(49) +-- Iteration 14 -- +int(0) +-- Iteration 15 -- +int(49) +-- Iteration 16 -- +int(0) +-- Iteration 17 -- +int(0) +-- Iteration 18 -- +int(0) +-- Iteration 19 -- +int(115) +-- Iteration 20 -- +int(%d) +-- Iteration 21 -- +int(0) +-- Iteration 22 -- +int(0) +===DONE=== diff --git a/ext/standard/tests/strings/print_basic.phpt b/ext/standard/tests/strings/print_basic.phpt new file mode 100644 index 000000000..a4bc8c239 --- /dev/null +++ b/ext/standard/tests/strings/print_basic.phpt @@ -0,0 +1,92 @@ +--TEST-- +Test print() function : basic functionality +--FILE-- + "foo"); + +echo "\n-- Iteration 7 --\n"; +print "this is {$bar['value']} !"; // this is foo ! + +// Using single quotes will print the variable name, not the value +echo "\n-- Iteration 8 --\n"; +print 'foo is $foo'; // foo is $foo + +// If you are not using any other characters, you can just print variables +echo "\n-- Iteration 9 --\n"; +print $foo; // foobar + +echo "\n-- Iteration 10 --\n"; +$variable = "VARIABLE"; +print << +===DONE=== +--EXPECT-- +*** Testing print() : basic functionality *** + +-- Iteration 1 -- +Hello World +-- Iteration 2 -- +print() also works without parentheses. +-- Iteration 3 -- +This spans +multiple lines. The newlines will be +output as well +-- Iteration 4 -- +This also spans +multiple lines. The newlines will be +output as well. +-- Iteration 5 -- +escaping characters is done "Like this". +-- Iteration 6 -- +foo is foobar +-- Iteration 7 -- +this is foo ! +-- Iteration 8 -- +foo is $foo +-- Iteration 9 -- +foobar +-- Iteration 10 -- +This uses the "here document" syntax to output +multiple lines with VARIABLE interpolation. Note +that the here document terminator must appear on a +line with just a semicolon no extra whitespace! +===DONE=== diff --git a/ext/standard/tests/strings/print_variation1.phpt b/ext/standard/tests/strings/print_variation1.phpt new file mode 100644 index 000000000..084f22f64 --- /dev/null +++ b/ext/standard/tests/strings/print_variation1.phpt @@ -0,0 +1,150 @@ +--TEST-- +Test print() function : usage variations +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing print() function: with unexpected inputs for 'arg' argument *** +-- Iteration 1 -- +0 +int(1) +-- Iteration 2 -- +1 +int(1) +-- Iteration 3 -- +-2 +int(1) +-- Iteration 4 -- +2147483647 +int(1) +-- Iteration 5 -- +-2147483648 +int(1) +-- Iteration 6 -- +10.5 +int(1) +-- Iteration 7 -- +-20.5 +int(1) +-- Iteration 8 -- +101234567000 +int(1) +-- Iteration 9 -- +Array +int(1) +-- Iteration 10 -- +Array +int(1) +-- Iteration 11 -- +Array +int(1) +-- Iteration 12 -- +1 +int(1) +-- Iteration 13 -- + +int(1) +-- Iteration 14 -- +1 +int(1) +-- Iteration 15 -- + +int(1) +-- Iteration 16 -- + +int(1) +-- Iteration 17 -- + +int(1) +-- Iteration 18 -- +sample object +int(1) +-- Iteration 19 -- +Resource id #%d +int(1) +-- Iteration 20 -- + +int(1) +-- Iteration 21 -- + +int(1) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/printf.phpt b/ext/standard/tests/strings/printf.phpt index 13a8ed071..9b0c2ee9e 100755 --- a/ext/standard/tests/strings/printf.phpt +++ b/ext/standard/tests/strings/printf.phpt @@ -645,10 +645,10 @@ Array -123456 123456 -123456 -120000 --120000 -+120000 --120000 +1.2e+5 +-1.2e+5 ++1.2e+5 +-1.2e+5 123456 -123456 1.0E+5 @@ -657,10 +657,10 @@ Array -123456 123456 -123456 -120000 --120000 -+120000 --120000 +1.2E+5 +-1.2E+5 ++1.2E+5 +-1.2E+5 *** Output for '%%%.2f' as the format parameter *** %12345678900.00 @@ -669,6 +669,8 @@ Array % *** Output for precision value more than maximum *** + +Notice: printf(): Requested precision of 988 digits was truncated to PHP maximum of 40 digits in %s on line %d 12345678900.0000000000000000000000000000000000000000 *** Output for invalid width(-15) specifier *** diff --git a/ext/standard/tests/strings/printf_64bit.phpt b/ext/standard/tests/strings/printf_64bit.phpt index 10ea360c0..81f6516e2 100755 --- a/ext/standard/tests/strings/printf_64bit.phpt +++ b/ext/standard/tests/strings/printf_64bit.phpt @@ -645,10 +645,10 @@ Array -123456 123456 -123456 -120000 --120000 -+120000 --120000 +1.2e+5 +-1.2e+5 ++1.2e+5 +-1.2e+5 123456 -123456 1.0E+5 @@ -657,10 +657,10 @@ Array -123456 123456 -123456 -120000 --120000 -+120000 --120000 +1.2E+5 +-1.2E+5 ++1.2E+5 +-1.2E+5 *** Output for '%%%.2f' as the format parameter *** %12345678900.00 @@ -669,6 +669,8 @@ Array % *** Output for precision value more than maximum *** + +Notice: printf(): Requested precision of 988 digits was truncated to PHP maximum of %d digits in %s on line %d 12345678900.0000000000000000000000000000000000000000 *** Output for invalid width(-15) specifier *** diff --git a/ext/standard/tests/strings/printf_basic1.phpt b/ext/standard/tests/strings/printf_basic1.phpt new file mode 100644 index 000000000..e6fd1d991 --- /dev/null +++ b/ext/standard/tests/strings/printf_basic1.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test printf() function : basic functionality - string format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using string format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments -- +arg1 argument +int(13) + +-- Calling printf() with two arguments -- +arg1 argument arg2 argument +int(27) + +-- Calling printf() with string three arguments -- +arg1 argument arg2 argument arg3 argument +int(41) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic2.phpt b/ext/standard/tests/strings/printf_basic2.phpt new file mode 100644 index 000000000..195f7cb58 --- /dev/null +++ b/ext/standard/tests/strings/printf_basic2.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test printf() function : basic functionality - integer format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using integer format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments-- +111 +int(3) + +-- Calling printf() with two arguments-- +111 222 +int(7) + +-- Calling printf() with three arguments-- +111 222 333 +int(11) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic3.phpt b/ext/standard/tests/strings/printf_basic3.phpt new file mode 100644 index 000000000..1e51d41fc --- /dev/null +++ b/ext/standard/tests/strings/printf_basic3.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test printf() function : basic functionality - float format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using float format *** + +-- Calling printf() with no arguments-- +format +int(6) + +-- Calling printf() with one arguments-- +11.110000 +int(9) +11.110000 +int(9) + +-- Calling printf() with two arguments-- +11.110000 22.220000 +int(19) +11.110000 22.220000 +int(19) + +-- Calling printf() with three arguments-- +11.110000 22.220000 33.330000 +int(29) +11.110000 22.220000 33.330000 +int(29) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/printf_basic4.phpt b/ext/standard/tests/strings/printf_basic4.phpt new file mode 100644 index 000000000..9de049767 --- /dev/null +++ b/ext/standard/tests/strings/printf_basic4.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test printf() function : basic functionality - bool format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using bool format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments-- +1 +int(1) + +-- Calling printf() with two arguments-- +1 0 +int(3) + +-- Calling printf() with three arguments-- +1 0 1 +int(5) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic5.phpt b/ext/standard/tests/strings/printf_basic5.phpt new file mode 100644 index 000000000..57b17d494 --- /dev/null +++ b/ext/standard/tests/strings/printf_basic5.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test printf() function : basic functionality - char format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using char format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments -- +A +int(1) + +-- Calling printf() with two arguments -- +A B +int(3) + +-- Calling printf() with three arguments -- +A B C +int(5) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/printf_basic6.phpt b/ext/standard/tests/strings/printf_basic6.phpt new file mode 100644 index 000000000..95b9d4a04 --- /dev/null +++ b/ext/standard/tests/strings/printf_basic6.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test printf() function : basic functionality - exponential format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using exponential format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one argument -- +1.000000e+3 +int(11) + +-- Calling printf() with two arguments -- +1.000000E+3 2.000000e+3 +int(23) + +-- Calling printf() with three arguments -- +1.000000e+3 2.000000E+3 3.000000e+3 +int(35) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic7.phpt b/ext/standard/tests/strings/printf_basic7.phpt new file mode 100644 index 000000000..a43fcf2da --- /dev/null +++ b/ext/standard/tests/strings/printf_basic7.phpt @@ -0,0 +1,68 @@ +--TEST-- +Test printf() function : basic functionality - unsigned format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using unsigned format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments -- +4294966185 +int(10) + +-- Calling printf() with two arguments -- +4294966185 4293732729 +int(21) + +-- Calling printf() with three arguments -- +4294966185 4293732729 2345432 +int(29) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic8.phpt b/ext/standard/tests/strings/printf_basic8.phpt new file mode 100644 index 000000000..0e028ea9d --- /dev/null +++ b/ext/standard/tests/strings/printf_basic8.phpt @@ -0,0 +1,67 @@ +--TEST-- +Test printf() function : basic functionality - octal format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using octal format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments -- +21 +int(2) + +-- Calling printf() with two arguments -- +21 37777777431 +int(14) + +-- Calling printf() with three arguments -- +21 37777777431 567 +int(18) +===DONE=== diff --git a/ext/standard/tests/strings/printf_basic9.phpt b/ext/standard/tests/strings/printf_basic9.phpt new file mode 100644 index 000000000..9b441b2cc --- /dev/null +++ b/ext/standard/tests/strings/printf_basic9.phpt @@ -0,0 +1,83 @@ +--TEST-- +Test printf() function : basic functionality - hexadecimal format +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : basic functionality - using hexadecimal format *** + +-- Calling printf() with no arguments -- +format +int(6) + +-- Calling printf() with one arguments -- +b +int(1) +B +int(1) + +-- Calling printf() with two arguments -- +b 84 +int(4) +B 84 +int(4) + +-- Calling printf() with three arguments -- +b 84 b1 +int(7) +B 84 B1 +int(7) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/printf_error.phpt b/ext/standard/tests/strings/printf_error.phpt new file mode 100644 index 000000000..a4a1076e6 --- /dev/null +++ b/ext/standard/tests/strings/printf_error.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test printf() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing printf() : error conditions *** + +-- Testing printf() function with Zero arguments -- + +Warning: Wrong parameter count for printf() in %s on line %d +bool(false) + +-- Testing printf() function with less than expected no. of arguments -- + +-- Call printf with one argument less than expected -- + +Warning: printf(): Too few arguments in %s on line %d +bool(false) + +Warning: printf(): Too few arguments in %s on line %d +bool(false) + +Warning: printf(): Too few arguments in %s on line %d +bool(false) + +-- Call printf with two argument less than expected -- + +Warning: printf(): Too few arguments in %s on line %d +bool(false) + +Warning: printf(): Too few arguments in %s on line %d +bool(false) + +-- Call printf with three argument less than expected -- + +Warning: printf(): Too few arguments in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/printf_variation1.phpt b/ext/standard/tests/strings/printf_variation1.phpt new file mode 100644 index 000000000..e71e564da --- /dev/null +++ b/ext/standard/tests/strings/printf_variation1.phpt @@ -0,0 +1,354 @@ +--TEST-- +Test printf() function : usage variations - unexpected values for format argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new sample(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource data +/*26*/ $file_handle +); + +// loop through each element of the array for format + +$count = 1; +foreach($values as $value) { + echo "\n-- Iteration $count --\n"; + + // with default argument + $result = printf($value); + echo "\n"; + var_dump($result); + + // with two arguments + $result = printf($value, $arg1); + echo "\n"; + var_dump($result); + + // with three arguments + $result = printf($value, $arg1, $arg2); + echo "\n"; + var_dump($result); + + $count++; +}; + +// close the resource +fclose($file_handle); + +?> +===DONE=== +--EXPECTF-- +*** Testing printf() : with unexpected values for format argument *** + +-- Iteration 1 -- +0 +int(1) +0 +int(1) +0 +int(1) + +-- Iteration 2 -- +1 +int(1) +1 +int(1) +1 +int(1) + +-- Iteration 3 -- +12345 +int(5) +12345 +int(5) +12345 +int(5) + +-- Iteration 4 -- +-2345 +int(5) +-2345 +int(5) +-2345 +int(5) + +-- Iteration 5 -- +10.5 +int(4) +10.5 +int(4) +10.5 +int(4) + +-- Iteration 6 -- +-10.5 +int(5) +-10.5 +int(5) +-10.5 +int(5) + +-- Iteration 7 -- +101234567000 +int(12) +101234567000 +int(12) +101234567000 +int(12) + +-- Iteration 8 -- +1.07654321E-9 +int(13) +1.07654321E-9 +int(13) +1.07654321E-9 +int(13) + +-- Iteration 9 -- +0.5 +int(3) +0.5 +int(3) +0.5 +int(3) + +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +Notice: Array to string conversion in %s on line %d +Array +int(5) + +-- Iteration 15 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 16 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 17 -- +1 +int(1) +1 +int(1) +1 +int(1) + +-- Iteration 18 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 19 -- +1 +int(1) +1 +int(1) +1 +int(1) + +-- Iteration 20 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 21 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 22 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 23 -- +Object +int(6) +Object +int(6) +Object +int(6) + +-- Iteration 24 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 25 -- + +int(0) + +int(0) + +int(0) + +-- Iteration 26 -- +Resource id #%d +int(%d) +Resource id #%d +int(%d) +Resource id #%d +int(%d) +===DONE=== diff --git a/ext/standard/tests/strings/printf_variation2.phpt b/ext/standard/tests/strings/printf_variation2.phpt new file mode 100644 index 000000000..be66ad8fc --- /dev/null +++ b/ext/standard/tests/strings/printf_variation2.phpt @@ -0,0 +1,281 @@ +--TEST-- +Test printf() function : usage variations - with all types of values for arg1 argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // string data +/*23*/ "string", + 'string', + + // object data +/*25*/ new sample(), + + // undefined data +/*26*/ @$undefined_var, + + // unset data +/*27*/ @$unset_var, + + // resource data +/*28*/ $file_handle +); + +// loop through each element of the array for arg1 + +$count = 1; +foreach($values as $value) { + echo "\n-- Iteration $count --\n"; + + // with two arguments + $result = printf($format, $value); + echo "\n"; + var_dump($result); + + // with three arguments + $result = printf($format, $value, $arg2); + echo "\n"; + var_dump($result); + + $count++; +}; + +// closing the resource +fclose($file_handle); + +?> +===DONE=== +--EXPECTF-- +*** Testing printf() : with different types of values passed for arg1 argument *** + +-- Iteration 1 -- +0 +int(1) +0 +int(1) + +-- Iteration 2 -- +1 +int(1) +1 +int(1) + +-- Iteration 3 -- +12345 +int(5) +12345 +int(5) + +-- Iteration 4 -- +-2345 +int(5) +-2345 +int(5) + +-- Iteration 5 -- +10.5 +int(4) +10.5 +int(4) + +-- Iteration 6 -- +-10.5 +int(5) +-10.5 +int(5) + +-- Iteration 7 -- +101234567000 +int(12) +101234567000 +int(12) + +-- Iteration 8 -- +1.07654321E-9 +int(13) +1.07654321E-9 +int(13) + +-- Iteration 9 -- +0.5 +int(3) +0.5 +int(3) + +-- Iteration 10 -- +Array +int(5) +Array +int(5) + +-- Iteration 11 -- +Array +int(5) +Array +int(5) + +-- Iteration 12 -- +Array +int(5) +Array +int(5) + +-- Iteration 13 -- +Array +int(5) +Array +int(5) + +-- Iteration 14 -- +Array +int(5) +Array +int(5) + +-- Iteration 15 -- + +int(0) + +int(0) + +-- Iteration 16 -- + +int(0) + +int(0) + +-- Iteration 17 -- +1 +int(1) +1 +int(1) + +-- Iteration 18 -- + +int(0) + +int(0) + +-- Iteration 19 -- +1 +int(1) +1 +int(1) + +-- Iteration 20 -- + +int(0) + +int(0) + +-- Iteration 21 -- + +int(0) + +int(0) + +-- Iteration 22 -- + +int(0) + +int(0) + +-- Iteration 23 -- +string +int(6) +string +int(6) + +-- Iteration 24 -- +string +int(6) +string +int(6) + +-- Iteration 25 -- +Object +int(6) +Object +int(6) + +-- Iteration 26 -- + +int(0) + +int(0) + +-- Iteration 27 -- + +int(0) + +int(0) + +-- Iteration 28 -- +Resource id #%d +int(%d) +Resource id #%d +int(%d) +===DONE=== diff --git a/ext/standard/tests/strings/quoted_printable_decode_basic.phpt b/ext/standard/tests/strings/quoted_printable_decode_basic.phpt new file mode 100644 index 000000000..5b15388d0 --- /dev/null +++ b/ext/standard/tests/strings/quoted_printable_decode_basic.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test quoted_printable_decode() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing quoted_printable_decode() : basic functionality *** +string(76) "fa776f772d666163746f72c1d0d5ddc5ceced9c50a20d4cfd2c7cfd7d9c520d0d2cfc5cbd4d9" +===DONE=== diff --git a/ext/standard/tests/strings/quoted_printable_decode_error.phpt b/ext/standard/tests/strings/quoted_printable_decode_error.phpt new file mode 100644 index 000000000..6eddfc79c --- /dev/null +++ b/ext/standard/tests/strings/quoted_printable_decode_error.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test quoted_printable_decode() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing quoted_printable_decode() : error conditions *** + +-- Testing quoted_printable_decode() function with no arguments -- + +Warning: Wrong parameter count for quoted_printable_decode() in %s on line %d +NULL + +-- Testing quoted_printable_decode() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for quoted_printable_decode() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/quoted_printable_decode_variation1.phpt b/ext/standard/tests/strings/quoted_printable_decode_variation1.phpt new file mode 100644 index 000000000..384dbcf9e --- /dev/null +++ b/ext/standard/tests/strings/quoted_printable_decode_variation1.phpt @@ -0,0 +1,189 @@ +--TEST-- +Test quoted_printable_decode() function : usage variations - unexpected values for 'str' argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new sample(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource data +/*26*/ $file_handle +); + +// loop through each element of the array for 'str' + +$count = 1; +foreach($values as $value) { + echo "\n-- Iteration $count --\n"; + var_dump(bin2hex(quoted_printable_decode($value))); + $count++; +}; + +// close the resource +fclose($file_handle); + +?> +===DONE=== +--EXPECTF-- +*** Testing quoted_printable_decode() : with unexpected values for 'str' argument *** + +-- Iteration 1 -- +string(2) "30" + +-- Iteration 2 -- +string(2) "31" + +-- Iteration 3 -- +string(10) "3132333435" + +-- Iteration 4 -- +string(10) "2d32333435" + +-- Iteration 5 -- +string(8) "31302e35" + +-- Iteration 6 -- +string(10) "2d31302e35" + +-- Iteration 7 -- +string(24) "313031323334353637303030" + +-- Iteration 8 -- +string(26) "312e3037363534333231452d39" + +-- Iteration 9 -- +string(6) "302e35" + +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" + +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" + +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" + +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" + +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +string(10) "4172726179" + +-- Iteration 15 -- +string(0) "" + +-- Iteration 16 -- +string(0) "" + +-- Iteration 17 -- +string(2) "31" + +-- Iteration 18 -- +string(0) "" + +-- Iteration 19 -- +string(2) "31" + +-- Iteration 20 -- +string(0) "" + +-- Iteration 21 -- +string(0) "" + +-- Iteration 22 -- +string(0) "" + +-- Iteration 23 -- +string(12) "4f626a656374" + +-- Iteration 24 -- +string(0) "" + +-- Iteration 25 -- +string(0) "" + +-- Iteration 26 -- +string(%d) "%s" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/quotemeta_basic.phpt b/ext/standard/tests/strings/quotemeta_basic.phpt new file mode 100644 index 000000000..9a2f23c46 --- /dev/null +++ b/ext/standard/tests/strings/quotemeta_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test quotemeta() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing quotemeta() : basic functionality *** +string(20) "Hello how are you \?" +string(19) "\(100 \+ 50\) \* 10" +string(20) "\\\+\*\?\[\^\]\(\$\)" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/quotemeta_error.phpt b/ext/standard/tests/strings/quotemeta_error.phpt new file mode 100644 index 000000000..f592225da --- /dev/null +++ b/ext/standard/tests/strings/quotemeta_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test quotemeta() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing quotemeta() : error conditions *** + +-- Testing quotemeta() function with no arguments -- + +Warning: Wrong parameter count for quotemeta() in %s on line %d +NULL + +-- Testing quotemeta() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for quotemeta() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/rtrim_basic.phpt b/ext/standard/tests/strings/rtrim_basic.phpt new file mode 100644 index 000000000..7193b5986 --- /dev/null +++ b/ext/standard/tests/strings/rtrim_basic.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test rtrim() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing rtrim() : basic functionality *** + +-- Trim string with all white space characters -- +string(27) "---These are a few words---" + +-- Trim non-whitespace from a string -- +string(15) "!===Hello World" + +-- Trim some non-white space characters from a string -- +string(10) "!===Hello " + +-- Trim some non-white space characters from a string using a character range -- +string(10) "0123456789" + +-- Trim the ASCII control characters at the beginning of a string -- +string(14) "Example string" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/rtrim_error.phpt b/ext/standard/tests/strings/rtrim_error.phpt new file mode 100644 index 000000000..9b1cc36b3 --- /dev/null +++ b/ext/standard/tests/strings/rtrim_error.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test rtrim() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing rtrim() : error conditions *** + +-- Testing rtrim() function with no arguments -- + +Warning: Wrong parameter count for rtrim() in %s on line %d +NULL + +-- Testing rtrim() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for rtrim() in %s on line %d +NULL + +-- Test rtrim function with various invalid charlists + +Warning: rtrim(): Invalid '..'-range, no character to the left of '..' in %s on line %d +string(14) " Hello World +" + +Warning: rtrim(): Invalid '..'-range, no character to the right of '..' in %s on line %d +string(14) " Hello World +" + +Warning: rtrim(): Invalid '..'-range, '..'-range needs to be incrementing in %s on line %d +string(14) " Hello World +" + +Warning: rtrim(): Invalid '..'-range in %s on line %d +string(14) " Hello World +" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/rtrim_variation1.phpt b/ext/standard/tests/strings/rtrim_variation1.phpt new file mode 100644 index 000000000..19090a03d --- /dev/null +++ b/ext/standard/tests/strings/rtrim_variation1.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test rtrim() function : usage variations - test values for $str argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing rtrim() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(11) "-2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(5) "-20.5" +-- Iteration 9 -- +string(12) "101234567000" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(19) " !---sample object" +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/rtrim_variation2.phpt b/ext/standard/tests/strings/rtrim_variation2.phpt new file mode 100644 index 000000000..6be2d76f5 --- /dev/null +++ b/ext/standard/tests/strings/rtrim_variation2.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test rtrim() function : usage variations - test values for $charlist argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing rtrim() function: with unexpected inputs for 'charlist' argument *** +-- Iteration 1 -- +string(19) "!---Hello World---!" +-- Iteration 2 -- +string(19) "!---Hello World---!" +-- Iteration 3 -- +string(19) "!---Hello World---!" +-- Iteration 4 -- +string(19) "!---Hello World---!" +-- Iteration 5 -- +string(19) "!---Hello World---!" +-- Iteration 6 -- +string(19) "!---Hello World---!" +-- Iteration 7 -- +string(19) "!---Hello World---!" +-- Iteration 8 -- +string(19) "!---Hello World---!" +-- Iteration 9 -- +string(19) "!---Hello World---!" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d3 +string(19) "!---Hello World---!" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d3 +string(19) "!---Hello World---!" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d3 +string(19) "!---Hello World---!" +-- Iteration 13 -- +string(19) "!---Hello World---!" +-- Iteration 14 -- +string(19) "!---Hello World---!" +-- Iteration 15 -- +string(19) "!---Hello World---!" +-- Iteration 16 -- +string(19) "!---Hello World---!" +-- Iteration 17 -- +string(19) "!---Hello World---!" +-- Iteration 18 -- +string(19) "!---Hello World---!" +-- Iteration 19 -- +string(19) "!---Hello World---!" +-- Iteration 20 -- +string(19) "!---Hello World---!" +-- Iteration 21 -- +string(19) "!---Hello World---!" +-- Iteration 22 -- +string(19) "!---Hello World---!" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/sha1_basic.phpt b/ext/standard/tests/strings/sha1_basic.phpt new file mode 100644 index 000000000..00b764f41 --- /dev/null +++ b/ext/standard/tests/strings/sha1_basic.phpt @@ -0,0 +1,70 @@ +--TEST-- +sha1() with ASCII output. +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sha1() : basic functionality *** + +-- Without raw argument -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +string(40) "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8" +string(40) "a9993e364706816aba3e25717850c26c9cd0d89d" +string(40) "c12252ceda8be8994d5fa0290a47231c1d16aae3" +string(40) "32d10c7b8cf96570ca04ce37f2a19d84240d3a89" +string(40) "761c457bf73b14d27e9e9265c46f4b4dda11f940" +string(40) "50abf5706a150990a08b2c5ea40fa0e585554732" + +-- With raw == false -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +string(40) "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8" +string(40) "a9993e364706816aba3e25717850c26c9cd0d89d" +string(40) "c12252ceda8be8994d5fa0290a47231c1d16aae3" +string(40) "32d10c7b8cf96570ca04ce37f2a19d84240d3a89" +string(40) "761c457bf73b14d27e9e9265c46f4b4dda11f940" +string(40) "50abf5706a150990a08b2c5ea40fa0e585554732" + +-- With raw == true -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +string(40) "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8" +string(40) "a9993e364706816aba3e25717850c26c9cd0d89d" +string(40) "c12252ceda8be8994d5fa0290a47231c1d16aae3" +string(40) "32d10c7b8cf96570ca04ce37f2a19d84240d3a89" +string(40) "761c457bf73b14d27e9e9265c46f4b4dda11f940" +string(40) "50abf5706a150990a08b2c5ea40fa0e585554732" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/sha1_error.phpt b/ext/standard/tests/strings/sha1_error.phpt new file mode 100644 index 000000000..bfc3e44fd --- /dev/null +++ b/ext/standard/tests/strings/sha1_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test sha1() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing sha1() : error conditions *** + +-- Testing sha1() function with no arguments -- + +Warning: sha1() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing sha1() function with more than expected no. of arguments -- + +Warning: sha1() expects at most 2 parameters, 3 given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/sha1_file.phpt b/ext/standard/tests/strings/sha1_file.phpt new file mode 100644 index 000000000..3013adc34 --- /dev/null +++ b/ext/standard/tests/strings/sha1_file.phpt @@ -0,0 +1,131 @@ +--TEST-- +Test sha1_file() function with ASCII output and raw binary output. Based on ext/standard/tests/strings/md5_file.phpt +--SKIPIF-- + +===DONE=== +--EXPECTF-- +*** Testing sha1_file() : basic functionality *** + +*** Testing for error conditions *** + +-- No filename -- + +Warning: sha1_file(): Filename cannot be empty in %s on line %d +bool(false) + +-- invalid filename -- + +Warning: sha1_file(a): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- Scalar value as filename -- + +Warning: sha1_file(12): failed to open stream: No such file or directory in %s on line %d +bool(false) + +-- NULL as filename -- + +Warning: sha1_file(): Filename cannot be empty in %s on line %d +bool(false) + +-- Zero arguments -- + +Warning: sha1_file() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- More than valid number of arguments ( valid is 2) -- + +Warning: sha1_file() expects at most 2 parameters, 3 given in %s on line %d +NULL + +-- Hexadecimal Output for Empty file as Argument -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" + +-- Raw Binary Output for Empty file as Argument -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" + +-- Hexadecimal Output for a valid file with some contents -- +string(40) "d16a568ab98233deff7ec8b1668eb4b3d9e53fee" + +-- Raw Binary Output for a valid file with some contents -- +string(40) "d16a568ab98233deff7ec8b1668eb4b3d9e53fee" +===DONE=== diff --git a/ext/standard/tests/strings/sha1_variation1.phpt b/ext/standard/tests/strings/sha1_variation1.phpt new file mode 100644 index 000000000..044be46d9 --- /dev/null +++ b/ext/standard/tests/strings/sha1_variation1.phpt @@ -0,0 +1,157 @@ +--TEST-- +Test sha1() function : usage variations - unexpected values for 'str' argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new MyClass(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + //resource data +/*26*/ $fp +); + +// loop through each element of $values for 'str' argument +for($count = 0; $count < count($values); $count++) { + echo "-- Iteration ".($count+1)." --\n"; + var_dump( sha1($values[$count], $raw) ); +} + +//closing resource +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing sha1() : unexpected values for 'str' *** +-- Iteration 1 -- +string(40) "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" +-- Iteration 2 -- +string(40) "356a192b7913b04c54574d18c28d46e6395428ab" +-- Iteration 3 -- +string(40) "8cb2237d0679ca88db6464eac60da96345513964" +-- Iteration 4 -- +string(40) "bc97c643aba3b6c6abe253222f439d4002a87528" +-- Iteration 5 -- +string(40) "1287384bc5ef3ab84a36a5ef1d888df2763567f4" +-- Iteration 6 -- +string(40) "c9d6e1b691f17c8ae6d458984a5f56f80e62a60b" +-- Iteration 7 -- +string(40) "39493e1e645578a655f532e1f9bcff67991f2c2f" +-- Iteration 8 -- +string(40) "681b45cae882ad795afd54ccc2a04ad58e056b83" +-- Iteration 9 -- +string(40) "1b390cd54a0c0d4f27fa7adf23e3c45536e9f37c" +-- Iteration 10 -- + +Warning: sha1() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: sha1() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: sha1() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 13 -- + +Warning: sha1() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 14 -- + +Warning: sha1() expects parameter 1 to be string, array given in %s on line %d +NULL +-- Iteration 15 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 16 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 17 -- +string(40) "356a192b7913b04c54574d18c28d46e6395428ab" +-- Iteration 18 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 19 -- +string(40) "356a192b7913b04c54574d18c28d46e6395428ab" +-- Iteration 20 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 21 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 22 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 23 -- +string(40) "1615307cc4523f183e777df67f168c86908e8007" +-- Iteration 24 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 25 -- +string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709" +-- Iteration 26 -- + +Warning: sha1() expects parameter 1 to be string, resource given in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/sha1_variation2.phpt b/ext/standard/tests/strings/sha1_variation2.phpt new file mode 100644 index 000000000..a5bf5f868 --- /dev/null +++ b/ext/standard/tests/strings/sha1_variation2.phpt @@ -0,0 +1,160 @@ +--TEST-- +Test sha1() function : usage variations - unexpected values for 'raw' argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // string data +/*17*/ "ABC", + 'abc', + "0abc", + "123abc", + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new MyClass(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + //resource data +/*26*/ $fp +); + +// loop through each element of $values for 'raw' argument +for($count = 0; $count < count($values); $count++) { + echo "-- Iteration ".($count+1)." --\n"; + // use bin2hex to catch those cases were raw is true + var_dump( bin2hex(sha1($string, $values[$count])) ); +} + +//closing resource +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing sha1() : unexpected values for 'raw' *** +-- Iteration 1 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 2 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 3 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 4 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 5 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 6 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 7 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 8 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 9 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 10 -- + +Warning: sha1() expects parameter 2 to be boolean, array given in %s on line %d +string(0) "" +-- Iteration 11 -- + +Warning: sha1() expects parameter 2 to be boolean, array given in %s on line %d +string(0) "" +-- Iteration 12 -- + +Warning: sha1() expects parameter 2 to be boolean, array given in %s on line %d +string(0) "" +-- Iteration 13 -- + +Warning: sha1() expects parameter 2 to be boolean, array given in %s on line %d +string(0) "" +-- Iteration 14 -- + +Warning: sha1() expects parameter 2 to be boolean, array given in %s on line %d +string(0) "" +-- Iteration 15 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 16 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 17 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 18 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 19 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 20 -- +string(40) "0a4d55a8d778e5022fab701977c5d840bbc486d0" +-- Iteration 21 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 22 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 23 -- + +Warning: sha1() expects parameter 2 to be boolean, object given in %s on line %d +string(0) "" +-- Iteration 24 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 25 -- +string(80) "30613464353561386437373865353032326661623730313937376335643834306262633438366430" +-- Iteration 26 -- + +Warning: sha1() expects parameter 2 to be boolean, resource given in %s on line %d +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/similar_text_basic.phpt b/ext/standard/tests/strings/similar_text_basic.phpt new file mode 100644 index 000000000..cf2044b4c --- /dev/null +++ b/ext/standard/tests/strings/similar_text_basic.phpt @@ -0,0 +1,44 @@ +--TEST-- +similar_text(), basic tests +--CREDITS-- +Mats Lindh +#Testfest php.no +--INI-- +precision=14 +--FILE-- + +===DONE=== +--EXPECTF-- +-- Basic calls with just two strings -- +int(3) +int(0) +int(1) +int(7) + +-- Same calls with precentage return variable specified -- +float(54.545454545455) +float(0) +float(18.181818181818) +float(51.851851851852) +===DONE=== diff --git a/ext/standard/tests/strings/similar_text_error.phpt b/ext/standard/tests/strings/similar_text_error.phpt new file mode 100644 index 000000000..a6e3a4674 --- /dev/null +++ b/ext/standard/tests/strings/similar_text_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +similar_text(), error tests for missing parameters +--CREDITS-- +Mats Lindh +#Testfest php.no +--FILE-- + +===DONE=== +--EXPECTF-- +-- Testing similar_text() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for similar_text() in %s on line %d + +-- Testing similar_text() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for similar_text() in %s on line %d +===DONE=== diff --git a/ext/standard/tests/strings/sprintf_variation23.phpt b/ext/standard/tests/strings/sprintf_variation23.phpt index bf88ba68c..09e5b9fbb 100644 --- a/ext/standard/tests/strings/sprintf_variation23.phpt +++ b/ext/standard/tests/strings/sprintf_variation23.phpt @@ -39,40 +39,40 @@ foreach($resource_values as $resource_value) { // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); -echo "Done"; ?> +===DONE=== --EXPECTF-- *** Testing sprintf() : char formats with resource values *** -- Iteration 1 -- -string(1) "" +string(1) "%a" string(1) "c" -string(1) "" +string(1) "%a" string(1) "c" -string(2) " " -string(2) " " -string(2) " " +string(2) " %a" +string(2) "%a " +string(2) " %a" string(2) " -" -string(1) "" -string(1) "" +%a" +string(1) "%a" +string(1) "%a" string(11) "a-bA-B@#$&]" string(1) "c" -- Iteration 2 -- -string(1) "" +string(1) "%a" +string(1) "%a" +string(1) "%a" string(1) "c" -string(1) "" -string(1) "c" -string(2) " " -string(2) " " -string(2) " " +string(2) " %a" +string(2) "%a " +string(2) " %a" string(2) " -" -string(1) "" -string(1) "" +%a" +string(1) "%a" +string(1) "%a" string(11) "a-bA-B@#$&]" string(1) "c" -Done \ No newline at end of file +===DONE=== diff --git a/ext/standard/tests/strings/sprintf_variation36.phpt b/ext/standard/tests/strings/sprintf_variation36.phpt index b7b16d7d9..d7d6999de 100644 --- a/ext/standard/tests/strings/sprintf_variation36.phpt +++ b/ext/standard/tests/strings/sprintf_variation36.phpt @@ -37,38 +37,42 @@ foreach($resource_values as $resource_value) { $count++; }; -echo "Done"; +// closing the resources +fclose($fp); +closedir($dfp); + ?> +===DONE=== --EXPECTF-- *** Testing sprintf() : hexa formats with resource values *** -- Iteration 1 -- -string(%d) "%d" -string(%d) "%dx" -string(%d) "%d" +string(%d) "%a" +string(%d) "%ax" +string(%d) "%a" string(1) "x" -string(%d) " %d" -string(%d) "%d " -string(%d) " %d" +string(%d) " %a" +string(%d) "%a " +string(%d) " %a" string(%d) " -%d" -string(%d) " %d" -string(%d) " %d" +%a" +string(4) "%a" +string(30) "%a" string(10) "0-9A-Fa-f]" string(1) "x" -- Iteration 2 -- -string(%d) "%d" -string(%d) "%dx" -string(%d) "%d" +string(%d) "%a" +string(%d) "%ax" +string(%d) "%a" string(1) "x" -string(%d) " %d" -string(%d) "%d " -string(%d) " %d" +string(%d) " %a" +string(%d) "%a " +string(%d) " %a" string(%d) " -%d" -string(%d) " %d" -string(%d) " %d" +%a" +string(4) "%a" +string(30) "%a" string(10) "0-9A-Fa-f]" string(1) "x" -Done +===DONE=== diff --git a/ext/standard/tests/strings/sprintf_variation48.phpt b/ext/standard/tests/strings/sprintf_variation48.phpt index ce7bdf8ae..758b705c0 100644 --- a/ext/standard/tests/strings/sprintf_variation48.phpt +++ b/ext/standard/tests/strings/sprintf_variation48.phpt @@ -41,9 +41,8 @@ foreach($resource_values as $resource_value) { fclose($fp); closedir($dfp); - -echo "Done"; ?> +===DONE=== --EXPECTF-- *** Testing sprintf() : scientific formats with resource values *** @@ -58,7 +57,7 @@ string(%d) " %f" string(%d) " %f" string(%d) "%f" -string(%d) "%s%f" +string(30) "%s%f" string(%d) "0-1]" string(1) "e" @@ -73,7 +72,7 @@ string(%d) " %f" string(%d) " %f" string(%d) "%f" -string(%d) "%s%f" +string(30) "%s%f" string(%d) "0-1]" string(1) "e" -Done +===DONE=== diff --git a/ext/standard/tests/strings/sprintf_variation52.phpt b/ext/standard/tests/strings/sprintf_variation52.phpt index 9ca598527..6155c9ec5 100644 --- a/ext/standard/tests/strings/sprintf_variation52.phpt +++ b/ext/standard/tests/strings/sprintf_variation52.phpt @@ -46,6 +46,8 @@ string(15) "%12345678900.00" string(1) "%" -- Testing for precision value more than maximum -- + +Notice: sprintf(): Requested precision of 988 digits was truncated to PHP maximum of %d digits in %s on line %d string(52) "12345678900.0000000000000000000000000000000000000000" -- Testing for invalid width(-15) specifier -- diff --git a/ext/standard/tests/strings/sscanf_basic1.phpt b/ext/standard/tests/strings/sscanf_basic1.phpt new file mode 100644 index 000000000..dadafbde2 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic1.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test sscanf() function : basic functionality - string format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - using string format *** + +-- Try sccanf() WITHOUT optional args -- +string(6) "Widget" +string(7) "1234789" +string(2) "25" + +-- Try sccanf() WITH optional args -- +int(3) +string(6) "Widget" +string(7) "1234789" +string(2) "25" +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic2.phpt b/ext/standard/tests/strings/sscanf_basic2.phpt new file mode 100644 index 000000000..693a307c0 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic2.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test sscanf() function : basic functionality - integer format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - using integer format *** + +-- Try sccanf() WITHOUT optional args -- +string(6) "Widget" +int(1234789) +int(25) + +-- Try sccanf() WITH optional args -- +int(3) +string(6) "Widget" +int(1234789) +int(25) +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic3.phpt b/ext/standard/tests/strings/sscanf_basic3.phpt new file mode 100644 index 000000000..de910ef4b --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic3.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test sscanf() function : basic functionality - float format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality -- using float format *** + +-- Try sccanf() WITHOUT optional args -- +string(6) "Widget" +float(111.53) +float(22.345) +float(12.4) + +-- Try sccanf() WITH optional args -- +int(4) +string(6) "Widget" +float(111.53) +float(22.345) +float(12.4) +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic4.phpt b/ext/standard/tests/strings/sscanf_basic4.phpt new file mode 100644 index 000000000..8ce44ff4c --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic4.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test sscanf() function : basic functionality - char format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - using char format *** + +-- Try sccanf() WITHOUT optional args -- +string(1) "X" +string(1) "A" +string(1) "B" +string(1) "C" + +-- Try sccanf() WITH optional args -- +int(4) +string(1) "X" +string(1) "A" +string(1) "B" +string(1) "C" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/sscanf_basic5.phpt b/ext/standard/tests/strings/sscanf_basic5.phpt new file mode 100644 index 000000000..5dbbf4481 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic5.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test sscanf() function : basic functionality - exponential format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality -using exponential format *** + +-- Try sccanf() WITHOUT optional args -- +float(10.12345) +float(10123.45) +float(10123.45) +float(-101234.5) +float(10.12345) +float(10123.45) +float(10123.45) +float(-101234.5) + +-- Try sccanf() WITH optional args -- +int(4) +float(10.12345) +float(10123.45) +float(10123.45) +float(-101234.5) +int(4) +float(10.12345) +float(10123.45) +float(10123.45) +float(-101234.5) +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic6.phpt b/ext/standard/tests/strings/sscanf_basic6.phpt new file mode 100644 index 000000000..4506c4ba9 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic6.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test sscanf() function : basic functionality - unsigned format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - using unsigned format *** + +-- Try sccanf() WITHOUT optional args -- +string(10) "4294967285" +int(11) +int(11) +string(10) "4294967285" +NULL +NULL + +-- Try sccanf() WITH optional args -- +int(4) +string(10) "4294967285" +int(11) +int(11) +string(10) "4294967285" +NULL +NULL +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic7.phpt b/ext/standard/tests/strings/sscanf_basic7.phpt new file mode 100644 index 000000000..1d54054d4 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic7.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test sscanf() function : basic functionality - octal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - using octal format *** + +-- Try sccanf() WITHOUT optional args -- +int(83) +int(-83) +int(83) +int(10) +NULL +NULL + +-- Try sccanf() WITH optional args -- +int(4) +int(83) +int(-83) +int(83) +int(10) +NULL +NULL +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_basic8.phpt b/ext/standard/tests/strings/sscanf_basic8.phpt new file mode 100644 index 000000000..4773f026a --- /dev/null +++ b/ext/standard/tests/strings/sscanf_basic8.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test sscanf() function : basic functionality - hexadecimal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing sscanf() : basic functionality - - using hexadecimal format *** + +-- Try sccanf() WITHOUT optional args -- +int(297) +int(303) +int(4667) +int(-4667) +int(6844) +int(1) +int(297) +int(303) +int(4667) +int(-4667) +int(6844) +int(1) + +-- Try sccanf() WITH optional args -- +int(6) +int(297) +int(303) +int(4667) +int(-4667) +int(6844) +int(1) +int(6) +int(297) +int(303) +int(4667) +int(-4667) +int(6844) +int(1) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/sscanf_error.phpt b/ext/standard/tests/strings/sscanf_error.phpt new file mode 100644 index 000000000..4bf72c25e --- /dev/null +++ b/ext/standard/tests/strings/sscanf_error.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test sscanf() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing sscanf() : error conditions *** + +-- Testing sscanf() function with no arguments -- + +Warning: Wrong parameter count for sscanf() in %s on line %d +NULL + +-- Testing sscanf() function with one argument -- + +Warning: Wrong parameter count for sscanf() in %s on line %d +NULL + +-- Testing sscanf() function with more than expected no. of arguments -- + +Warning: sscanf(): Variable is not assigned by any conversion specifiers in %s on line %d +int(-1) +===DONE=== diff --git a/ext/standard/tests/strings/sscanf_variation1.phpt b/ext/standard/tests/strings/sscanf_variation1.phpt new file mode 100644 index 000000000..3739c8820 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_variation1.phpt @@ -0,0 +1,179 @@ +--TEST-- +Test sscanf() function : usage variations - unexpected inputs for '$str' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing sscanf() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +array(1) { + [0]=> + string(1) "0" +} +-- Iteration 2 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 3 -- +array(1) { + [0]=> + string(2) "-2" +} +-- Iteration 4 -- +array(1) { + [0]=> + string(10) "2147483647" +} +-- Iteration 5 -- +array(1) { + [0]=> + string(11) "-2147483648" +} +-- Iteration 6 -- +array(1) { + [0]=> + string(4) "10.5" +} +-- Iteration 7 -- +array(1) { + [0]=> + string(5) "-20.5" +} +-- Iteration 8 -- +array(1) { + [0]=> + string(12) "101234567000" +} +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(1) { + [0]=> + string(5) "Array" +} +-- Iteration 12 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 13 -- +NULL +-- Iteration 14 -- +array(1) { + [0]=> + string(1) "1" +} +-- Iteration 15 -- +NULL +-- Iteration 16 -- +NULL +-- Iteration 17 -- +NULL +-- Iteration 18 -- +array(1) { + [0]=> + string(6) "sample" +} +-- Iteration 19 -- +array(1) { + [0]=> + string(8) "Resource" +} +-- Iteration 20 -- +NULL +-- Iteration 21 -- +NULL +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/sscanf_variation2.phpt b/ext/standard/tests/strings/sscanf_variation2.phpt new file mode 100644 index 000000000..0fd9296b9 --- /dev/null +++ b/ext/standard/tests/strings/sscanf_variation2.phpt @@ -0,0 +1,155 @@ +--TEST-- +Test sscanf() function : usage variations - unexpected inputs for '$format' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing sscanf() function: with unexpected inputs for 'format' argument *** +-- Iteration 1 -- +array(0) { +} +-- Iteration 2 -- +array(0) { +} +-- Iteration 3 -- +array(0) { +} +-- Iteration 4 -- +array(0) { +} +-- Iteration 5 -- +array(0) { +} +-- Iteration 6 -- +array(0) { +} +-- Iteration 7 -- +array(0) { +} +-- Iteration 8 -- +array(0) { +} +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +array(0) { +} +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +array(0) { +} +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +array(0) { +} +-- Iteration 12 -- +array(0) { +} +-- Iteration 13 -- +array(0) { +} +-- Iteration 14 -- +array(0) { +} +-- Iteration 15 -- +array(0) { +} +-- Iteration 16 -- +array(0) { +} +-- Iteration 17 -- +array(0) { +} +-- Iteration 18 -- +array(0) { +} +-- Iteration 19 -- +array(0) { +} +-- Iteration 20 -- +array(0) { +} +-- Iteration 21 -- +array(0) { +} +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/str_pad_variation1.phpt b/ext/standard/tests/strings/str_pad_variation1.phpt new file mode 100644 index 000000000..4320661e4 --- /dev/null +++ b/ext/standard/tests/strings/str_pad_variation1.phpt @@ -0,0 +1,138 @@ +--TEST-- +Test str_pad() function : usage variations - unexpected inputs for '$input' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_pad() function: with unexpected inputs for 'input' argument *** +-- Iteration 1 -- +string(20) "0 " +-- Iteration 2 -- +string(20) "1 " +-- Iteration 3 -- +string(20) "-2 " +-- Iteration 4 -- +string(20) "2147483647 " +-- Iteration 5 -- +string(20) "-2147483648 " +-- Iteration 6 -- +string(20) "10.5 " +-- Iteration 7 -- +string(20) "-20.5 " +-- Iteration 8 -- +string(20) "101234567000 " +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Array " +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Array " +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Array " +-- Iteration 12 -- +string(20) "1 " +-- Iteration 13 -- +string(20) " " +-- Iteration 14 -- +string(20) "1 " +-- Iteration 15 -- +string(20) " " +-- Iteration 16 -- +string(20) " " +-- Iteration 17 -- +string(20) " " +-- Iteration 18 -- +string(20) "sample object " +-- Iteration 19 -- +string(%d) "Resource id #%d%S" +-- Iteration 20 -- +string(20) " " +-- Iteration 21 -- +string(20) " " +===DONE=== diff --git a/ext/standard/tests/strings/str_pad_variation2.phpt b/ext/standard/tests/strings/str_pad_variation2.phpt new file mode 100644 index 000000000..d7d34954e --- /dev/null +++ b/ext/standard/tests/strings/str_pad_variation2.phpt @@ -0,0 +1,131 @@ +--TEST-- +Test str_pad() function : usage variations - unexpected inputs for '$pad_length' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_pad() function: with unexpected inputs for 'pad_length' argument *** +-- Iteration 1 -- +string(11) "Test string" +-- Iteration 2 -- +string(11) "Test string" +-- Iteration 3 -- +string(11) "Test string" +-- Iteration 4 -- +string(255) "Test string " +-- Iteration 5 -- +string(11) "Test string" +-- Iteration 6 -- +string(11) "Test string" +-- Iteration 7 -- +string(1012) "Test string " +-- Iteration 8 -- +string(11) "Test string" +-- Iteration 9 -- +string(11) "Test string" +-- Iteration 10 -- +string(11) "Test string" +-- Iteration 11 -- +string(11) "Test string" +-- Iteration 12 -- +string(11) "Test string" +-- Iteration 13 -- +string(11) "Test string" +-- Iteration 14 -- +string(11) "Test string" +-- Iteration 15 -- +string(11) "Test string" +-- Iteration 16 -- +string(11) "Test string" +-- Iteration 17 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +string(11) "Test string" +-- Iteration 18 -- +string(%d) "Test string%S" +-- Iteration 19 -- +string(11) "Test string" +-- Iteration 20 -- +string(11) "Test string" +===DONE=== diff --git a/ext/standard/tests/strings/str_pad_variation3.phpt b/ext/standard/tests/strings/str_pad_variation3.phpt new file mode 100644 index 000000000..9cf3d1ce6 --- /dev/null +++ b/ext/standard/tests/strings/str_pad_variation3.phpt @@ -0,0 +1,151 @@ +--TEST-- +Test str_pad() function : usage variations - unexpected inputs for '$pad_string' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_pad() function: with unexpected inputs for 'pad_string' argument *** +-- Iteration 1 -- +string(20) "Test string000000000" +-- Iteration 2 -- +string(20) "Test string111111111" +-- Iteration 3 -- +string(20) "Test string-2-2-2-2-" +-- Iteration 4 -- +string(20) "Test string214748364" +-- Iteration 5 -- +string(20) "Test string-21474836" +-- Iteration 6 -- +string(20) "Test string10.510.51" +-- Iteration 7 -- +string(20) "Test string-20.5-20." +-- Iteration 8 -- +string(20) "Test string101234567" +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Test stringArrayArra" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Test stringArrayArra" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(20) "Test stringArrayArra" +-- Iteration 12 -- +string(20) "Test string111111111" +-- Iteration 13 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +-- Iteration 14 -- +string(20) "Test string111111111" +-- Iteration 15 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +-- Iteration 16 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +-- Iteration 17 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +-- Iteration 18 -- +string(20) "Test stringsample ob" +-- Iteration 19 -- +string(20) "Test stringResource " +-- Iteration 20 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +-- Iteration 21 -- + +Warning: str_pad(): Padding string cannot be empty in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/str_pad_variation4.phpt b/ext/standard/tests/strings/str_pad_variation4.phpt new file mode 100644 index 000000000..949c615b2 --- /dev/null +++ b/ext/standard/tests/strings/str_pad_variation4.phpt @@ -0,0 +1,158 @@ +--TEST-- +Test str_pad() function : usage variations - unexpected inputs for '$pad_type' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_pad() function: with unexpected inputs for 'pad_type' argument *** +-- Iteration 1 -- +string(20) "*********Test string" +-- Iteration 2 -- +string(20) "Test string*********" +-- Iteration 3 -- +string(20) "****Test string*****" +-- Iteration 4 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 5 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 6 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 7 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 8 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 9 -- + +Warning: str_pad(): Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH in %s on line %d +NULL +-- Iteration 10 -- +string(20) "*********Test string" +-- Iteration 11 -- +string(20) "*********Test string" +-- Iteration 12 -- +string(20) "****Test string*****" +-- Iteration 13 -- +string(20) "*********Test string" +-- Iteration 14 -- +string(20) "****Test string*****" +-- Iteration 15 -- +string(20) "*********Test string" +-- Iteration 16 -- +string(20) "Test string*********" +-- Iteration 17 -- +string(20) "Test string*********" +-- Iteration 18 -- +string(20) "Test string*********" +-- Iteration 19 -- +string(20) "*********Test string" +-- Iteration 20 -- +string(20) "Test string*********" +-- Iteration 21 -- +string(20) "*********Test string" +-- Iteration 22 -- +string(20) "*********Test string" +-- Iteration 23 -- +string(20) "*********Test string" +-- Iteration 24 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +string(20) "Test string*********" +-- Iteration 25 -- +string(20) "*********Test string" +-- Iteration 26 -- +string(20) "*********Test string" +===DONE=== diff --git a/ext/standard/tests/strings/str_pad_variation5.phpt b/ext/standard/tests/strings/str_pad_variation5.phpt new file mode 100644 index 000000000..4b300c471 --- /dev/null +++ b/ext/standard/tests/strings/str_pad_variation5.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test str_pad() function : usage variations - unexpected large value for '$pad_length' argument +--INI-- +memory_limit=128M +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing str_pad() function: with large value for for 'pad_length' argument *** + +Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate 2147483648 bytes) in %s on line %d diff --git a/ext/standard/tests/strings/str_shuffle_basic.phpt b/ext/standard/tests/strings/str_shuffle_basic.phpt new file mode 100644 index 000000000..b60a35f56 --- /dev/null +++ b/ext/standard/tests/strings/str_shuffle_basic.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test str_shuffle() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_shuffle() : basic functionality *** +string(47) "%s" +TEST PASSED +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/str_shuffle_error.phpt b/ext/standard/tests/strings/str_shuffle_error.phpt new file mode 100644 index 000000000..f2feef9b5 --- /dev/null +++ b/ext/standard/tests/strings/str_shuffle_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test str_shuffle() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_shuffle() : error conditions *** + +-- Testing str_shuffle() function with no arguments -- + +Warning: Wrong parameter count for str_shuffle() in %s on line %d +NULL + +-- Testing str_shuffle() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for str_shuffle() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/str_shuffle_variation1.phpt b/ext/standard/tests/strings/str_shuffle_variation1.phpt new file mode 100644 index 000000000..a62eea010 --- /dev/null +++ b/ext/standard/tests/strings/str_shuffle_variation1.phpt @@ -0,0 +1,133 @@ +--TEST-- +Test str_shuffle() function : usage variations - test values for $haystack argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing str_shuffle() function: with unexpected inputs for 'string' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(2) "%s" +-- Iteration 4 -- +string(10) "%s" +-- Iteration 5 -- +string(11) "%s" +-- Iteration 6 -- +string(4) "%s" +-- Iteration 7 -- +string(5) "%s" +-- Iteration 8 -- +string(12) "%s" +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +string(5) "%s" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "%s" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "%s" +-- Iteration 12 -- +string(1) "1" +-- Iteration 13 -- +string(0) "" +-- Iteration 14 -- +string(1) "1" +-- Iteration 15 -- +string(0) "" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(13) "%s" +-- Iteration 19 -- +string(%d) "%s" +-- Iteration 20 -- +string(0) "" +-- Iteration 21 -- +string(0) "" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strip_tags_variation1.phpt b/ext/standard/tests/strings/strip_tags_variation1.phpt index b312fb24e..ba6581249 100644 --- a/ext/standard/tests/strings/strip_tags_variation1.phpt +++ b/ext/standard/tests/strings/strip_tags_variation1.phpt @@ -32,51 +32,51 @@ class classA{ //array of values to iterate over $values = array( - // int data - 0, - 1, - 12345, - -2345, - - // float data - 10.5, - -10.5, - 10.5e10, - 10.6E-10, - .5, - - // array data - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // null data - NULL, - null, - - // boolean data - true, - false, - TRUE, - FALSE, - - // empty data - "", - '', - - // object data - new classA(), - - // undefined data - @$undefined_var, - - // unset data - @$unset_var, - - // resource variable - $fp + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 10.1234567e10, + 10.7654321E-10, + .5, + + // array data +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new classA(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource variable +/*26*/ $fp ); @@ -88,8 +88,8 @@ foreach($values as $value) { $iterator++; }; -echo "Done"; ?> +===DONE=== --EXPECTF-- *** Testing strip_tags() : usage variations *** -- Iteration 1 -- @@ -105,9 +105,9 @@ string(4) "10.5" -- Iteration 6 -- string(5) "-10.5" -- Iteration 7 -- -string(12) "105000000000" +string(12) "101234567000" -- Iteration 8 -- -string(7) "1.06E-9" +string(13) "1.07654321E-9" -- Iteration 9 -- string(3) "0.5" -- Iteration 10 -- @@ -154,4 +154,4 @@ string(0) "" string(0) "" -- Iteration 26 -- string(%d) "Resource id #%d" -Done +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strip_tags_variation11.phpt b/ext/standard/tests/strings/strip_tags_variation11.phpt new file mode 100644 index 000000000..3b47b5c6b --- /dev/null +++ b/ext/standard/tests/strings/strip_tags_variation11.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test strip_tags() function : obscure values within attributes +--INI-- +short_open_tag = on +--FILE-- + world', + 'hello world', + 'hello world', + "hello world" +); + + +// Calling strip_tags() with default arguments +// loop through the $string_array to test strip_tags on various inputs +$iteration = 1; +foreach($string_array as $string) +{ + echo "-- Iteration $iteration --\n"; + var_dump( strip_tags($string) ); + $iteration++; +} + +echo "Done"; +?> +--EXPECTF-- +*** Testing strip_tags() : obscure functionality *** +-- Iteration 1 -- +string(12) "hello world" +-- Iteration 2 -- +string(12) "hello world" +-- Iteration 3 -- +string(12) "hello world" +-- Iteration 4 -- +string(12) "hello world" +Done diff --git a/ext/standard/tests/strings/strip_tags_variation3.phpt b/ext/standard/tests/strings/strip_tags_variation3.phpt index 1e1ed9efb..216aaac01 100644 --- a/ext/standard/tests/strings/strip_tags_variation3.phpt +++ b/ext/standard/tests/strings/strip_tags_variation3.phpt @@ -32,51 +32,51 @@ class classA{ //array of values to iterate over $values = array( - // int data - 0, - 1, - 12345, - -2345, - - // float data - 10.5, - -10.5, - 10.5e10, - 10.6E-10, - .5, - - // array data - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // null data - NULL, - null, - - // boolean data - true, - false, - TRUE, - FALSE, - - // empty data - "", - '', - - // object data - new classA(), - - // undefined data - @$undefined_var, - - // unset data - @$unset_var, - - // resource variable - $fp + // int data +/*1*/ 0, + 1, + 12345, + -2345, + + // float data +/*5*/ 10.5, + -10.5, + 10.1234567e10, + 10.7654321E-10, + .5, + + // array data +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new classA(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource variable +/*26*/ $fp ); @@ -88,8 +88,8 @@ foreach($values as $value) { $iterator++; }; -echo "Done"; ?> +===DONE=== --EXPECTF-- *** Testing strip_tags() : usage variations *** -- Iteration 1 -- @@ -105,9 +105,9 @@ string(4) "10.5" -- Iteration 6 -- string(5) "-10.5" -- Iteration 7 -- -string(12) "105000000000" +string(12) "101234567000" -- Iteration 8 -- -string(7) "1.06E-9" +string(13) "1.07654321E-9" -- Iteration 9 -- string(3) "0.5" -- Iteration 10 -- @@ -164,4 +164,4 @@ string(0) "" string(0) "" -- Iteration 26 -- string(%d) "Resource id #%d" -Done +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/stripcslashes_basic.phpt b/ext/standard/tests/strings/stripcslashes_basic.phpt new file mode 100644 index 000000000..b292ceede --- /dev/null +++ b/ext/standard/tests/strings/stripcslashes_basic.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test stripcslashes() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing stripcslashes() : basic functionality *** +string(11) "Hello World" +string(13) "Hello World +" +string(11) "Hello World" +string(11) "Hello World" +===DONE=== diff --git a/ext/standard/tests/strings/stripcslashes_error.phpt b/ext/standard/tests/strings/stripcslashes_error.phpt new file mode 100644 index 000000000..35dc82a67 --- /dev/null +++ b/ext/standard/tests/strings/stripcslashes_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test stripcslashes() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing stripcslashes() : unexpected number of arguments *** +-- Testing stripcslashes() function with no arguments -- + +Warning: Wrong parameter count for stripcslashes() in %s on line %d +NULL + +-- Testing stripcslashes() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for stripcslashes() in %s on line %d +NULL +===DONE=== + diff --git a/ext/standard/tests/strings/stripcslashes_variation1.phpt b/ext/standard/tests/strings/stripcslashes_variation1.phpt new file mode 100644 index 000000000..5251cab8d --- /dev/null +++ b/ext/standard/tests/strings/stripcslashes_variation1.phpt @@ -0,0 +1,172 @@ +--TEST-- +Test stripcslashes() function : usage variations - non-string type argument +--INI-- +--FILE-- + 'red', 'item' => 'pen'), + + // boolean values +/*15*/ true, + false, + TRUE, + FALSE, + + // empty string +/*19*/ "", + '', + + // undefined variable +/*21*/ $undefined_var, + + // unset variable +/*22*/ $unset_var, + + // objects +/*23*/ new sample(), + + // resource +/*24*/ $file_handle, + + // null values +/*25*/ NULL, + null +); + + +// loop through each element of the array and check the working of stripcslashes() +// when $str arugment is supplied with different values +echo "\n--- Testing stripcslashes() by supplying different values for 'str' argument ---\n"; +$counter = 1; +for($index = 0; $index < count($values); $index ++) { + echo "-- Iteration $counter --\n"; + $str = $values [$index]; + + var_dump( stripcslashes($str) ); + + $counter ++; +} + +// closing the file +fclose($file_handle); + +?> +===DONE=== +--EXPECTF-- +*** Testing stripcslashes() : with non-string type argument *** + +Notice: Undefined variable: undefined_var in %s on line %d + +Notice: Undefined variable: unset_var in %s on line %d + +--- Testing stripcslashes() by supplying different values for 'str' argument --- +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(5) "12345" +-- Iteration 4 -- +string(5) "-2345" +-- Iteration 5 -- +string(4) "10.5" +-- Iteration 6 -- +string(5) "-10.5" +-- Iteration 7 -- +string(12) "101234567000" +-- Iteration 8 -- +string(13) "1.07654321E-9" +-- Iteration 9 -- +string(3) "0.5" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(1) "1" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(0) "" +-- Iteration 20 -- +string(0) "" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +-- Iteration 23 -- +string(6) "obj'ct" +-- Iteration 24 -- +string(%d) "Resource id #%d" +-- Iteration 25 -- +string(0) "" +-- Iteration 26 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/stripslashes_variation1.phpt b/ext/standard/tests/strings/stripslashes_variation1.phpt index 4d58fd7a0..00a3f28f6 100644 --- a/ext/standard/tests/strings/stripslashes_variation1.phpt +++ b/ext/standard/tests/strings/stripslashes_variation1.phpt @@ -31,51 +31,51 @@ $file_handle = fopen(__FILE__, 'r'); // array with different values $values = array ( - // integer values - 0, - 1, - 12345, - -2345, - - // float values - 10.5, - -10.5, - 10.5e10, - 10.6E-10, - .5, - - // array values - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // boolean values - true, - false, - TRUE, - FALSE, - - // empty string - "", - '', - - // undefined variable - $undefined_var, - - // unset variable - $unset_var, - - // objects - new sample(), - - // resource - $file_handle, - - // NULL values - NULL, - null + // integer values +/*1*/ 0, + 1, + 12345, + -2345, + + // float values +/*5*/ 10.5, + -10.5, + 10.1234567e10, + 10.7654321E-10, + .5, + + // array values +/*10*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values +/*15*/ true, + false, + TRUE, + FALSE, + + // empty string +/*19*/ "", + '', + + // undefined variable +/*21*/ $undefined_var, + + // unset variable +/*22*/ $unset_var, + + // objects +/*23*/ new sample(), + + // resource +/*24*/ $file_handle, + + // null values +/*25*/ NULL, + null ); @@ -95,8 +95,8 @@ for($index = 0; $index < count($values); $index ++) { // closing the file fclose($file_handle); -echo "Done\n"; ?> +===DONE=== --EXPECTF-- *** Testing stripslashes() : with non-string type argument *** @@ -118,9 +118,9 @@ string(4) "10.5" -- Iteration 6 -- string(5) "-10.5" -- Iteration 7 -- -string(12) "105000000000" +string(12) "101234567000" -- Iteration 8 -- -string(7) "1.06E-9" +string(13) "1.07654321E-9" -- Iteration 9 -- string(3) "0.5" -- Iteration 10 -- @@ -167,4 +167,4 @@ string(%d) "Resource id #%d" string(0) "" -- Iteration 26 -- string(0) "" -Done +===DONE=== diff --git a/ext/standard/tests/strings/stripslashes_variation2.phpt b/ext/standard/tests/strings/stripslashes_variation2.phpt index d813d0b33..c86cd5890 100644 Binary files a/ext/standard/tests/strings/stripslashes_variation2.phpt and b/ext/standard/tests/strings/stripslashes_variation2.phpt differ diff --git a/ext/standard/tests/strings/stristr_basic.phpt b/ext/standard/tests/strings/stristr_basic.phpt new file mode 100644 index 000000000..b3705f323 --- /dev/null +++ b/ext/standard/tests/strings/stristr_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test stristr() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing stristr() : basic functionality *** +string(11) "Test string" +string(6) "stRIng" +string(6) "StrinG" +string(8) "T string" +string(1) "G" +string(6) "005374" +string(4) "tEst" +string(4) "teSt" +===DONE=== diff --git a/ext/standard/tests/strings/stristr_error.phpt b/ext/standard/tests/strings/stristr_error.phpt new file mode 100644 index 000000000..725670405 --- /dev/null +++ b/ext/standard/tests/strings/stristr_error.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test stristr() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing stristr() : error conditions *** + +-- Testing stristr() function with no arguments -- + +Warning: Wrong parameter count for stristr() in %s on line %d +NULL + +Warning: Wrong parameter count for stristr() in %s on line %d +NULL + +-- Testing stristr() function with no needle -- + +Warning: Wrong parameter count for stristr() in %s on line %d +NULL + +-- Testing stristr() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for stristr() in %s on line %d +NULL + +-- Testing stristr() function with empty haystack -- + +Warning: stristr(): Empty delimiter in %s on line %d +bool(false) + +-- Testing stristr() function with empty needle -- + +Warning: stristr(): Empty delimiter in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/stristr_variation1.phpt b/ext/standard/tests/strings/stristr_variation1.phpt new file mode 100644 index 000000000..b50c93726 --- /dev/null +++ b/ext/standard/tests/strings/stristr_variation1.phpt @@ -0,0 +1,131 @@ +--TEST-- +Test stristr() function : usage variations - test values for $haystack argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing stristr() function: with unexpected inputs for 'string' argument *** +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- +bool(false) +-- Iteration 4 -- +bool(false) +-- Iteration 5 -- +bool(false) +-- Iteration 6 -- +bool(false) +-- Iteration 7 -- +bool(false) +-- Iteration 8 -- + +Notice: Array to string conversion in %s on line %d2 +bool(false) +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d2 +bool(false) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d2 +bool(false) +-- Iteration 11 -- +bool(false) +-- Iteration 12 -- +bool(false) +-- Iteration 13 -- +bool(false) +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +string(7) " object" +-- Iteration 18 -- +string(%d) " id #%d" +-- Iteration 19 -- +bool(false) +-- Iteration 20 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/stristr_variation2.phpt b/ext/standard/tests/strings/stristr_variation2.phpt new file mode 100644 index 000000000..7d1d2feb2 --- /dev/null +++ b/ext/standard/tests/strings/stristr_variation2.phpt @@ -0,0 +1,127 @@ +--TEST-- +Test stristr() function : usage variations - test values for $needle argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing stristr() function: with unexpected inputs for 'needle' argument *** +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- +bool(false) +-- Iteration 4 -- +bool(false) +-- Iteration 5 -- +bool(false) +-- Iteration 6 -- +bool(false) +-- Iteration 7 -- +bool(false) +-- Iteration 8 -- +bool(false) +-- Iteration 9 -- +bool(false) +-- Iteration 10 -- +bool(false) +-- Iteration 11 -- +bool(false) +-- Iteration 12 -- +bool(false) +-- Iteration 13 -- +bool(false) +-- Iteration 14 -- +bool(false) +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) +-- Iteration 18 -- +%s +-- Iteration 19 -- +bool(false) +-- Iteration 20 -- +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/strlen_basic.phpt b/ext/standard/tests/strings/strlen_basic.phpt new file mode 100644 index 000000000..3ed2b97e5 --- /dev/null +++ b/ext/standard/tests/strings/strlen_basic.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test strlen() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strlen() : basic functionality *** +int(6) +int(7) +int(0) +int(18) +===DONE=== diff --git a/ext/standard/tests/strings/strlen_error.phpt b/ext/standard/tests/strings/strlen_error.phpt new file mode 100644 index 000000000..1e8b975f3 --- /dev/null +++ b/ext/standard/tests/strings/strlen_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test strlen() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strlen() : unexpected number of arguments *** +-- Testing strlen() function with no arguments -- + +Warning: Wrong parameter count for strlen() in %s on line %d +NULL + +-- Testing strlen() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for strlen() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/strlen_variation1.phpt b/ext/standard/tests/strings/strlen_variation1.phpt new file mode 100644 index 000000000..101cf6434 --- /dev/null +++ b/ext/standard/tests/strings/strlen_variation1.phpt @@ -0,0 +1,135 @@ +--TEST-- +Test strlen() function : usage variations - unexpected input for '$string' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strlen() : with unexpected input for 'string' argument *** +-- Iteration 1 -- +int(1) +-- Iteration 2 -- +int(1) +-- Iteration 3 -- +int(2) +-- Iteration 4 -- +int(10) +-- Iteration 5 -- +int(11) +-- Iteration 6 -- +int(4) +-- Iteration 7 -- +int(5) +-- Iteration 8 -- +int(12) +-- Iteration 9 -- + +Notice: Array to string conversion in %s on line %d +int(5) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +int(5) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +int(5) +-- Iteration 12 -- +int(1) +-- Iteration 13 -- +int(0) +-- Iteration 14 -- +int(1) +-- Iteration 15 -- +int(0) +-- Iteration 16 -- +int(0) +-- Iteration 17 -- +int(0) +-- Iteration 18 -- +int(13) +-- Iteration 19 -- +int(%d) +-- Iteration 20 -- +int(0) +-- Iteration 21 -- +int(0) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_basic1.phpt b/ext/standard/tests/strings/strripos_basic1.phpt new file mode 100644 index 000000000..759c23114 --- /dev/null +++ b/ext/standard/tests/strings/strripos_basic1.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test strripos() function : basic functionality - with default arguments +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing strripos() function: basic functionality *** + +-- regular string for haystack & needle -- +int(0) +int(0) +int(7) +int(7) +bool(false) + +-- single char for needle -- +int(8) +int(5) + +-- heredoc string for haystack & needle -- +int(0) +int(0) +int(0) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_basic2.phpt b/ext/standard/tests/strings/strripos_basic2.phpt new file mode 100644 index 000000000..d4a1a73f0 --- /dev/null +++ b/ext/standard/tests/strings/strripos_basic2.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test strripos() function : basic functionality - with all arguments +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing strripos() function: basic functionality *** + +-- regular string for haystack & needle, with various offsets -- +int(0) +bool(false) +int(7) +int(7) + +-- heredoc string for haystack & needle, with various offsets -- +int(0) +int(0) +bool(false) +int(0) +bool(false) + +-- various +ve offsets -- +int(8) +int(8) +bool(false) + +-- various -ve offsets -- +int(8) +int(4) +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_error.phpt b/ext/standard/tests/strings/strripos_error.phpt new file mode 100644 index 000000000..59d592681 --- /dev/null +++ b/ext/standard/tests/strings/strripos_error.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test strripos() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strripos() function: error conditions *** +-- With Zero arguments -- +Warning: strripos() expects at least 2 parameters, 0 given in %s on line %d +bool(false) + +-- With less than expected number of arguments -- +Warning: strripos() expects at least 2 parameters, 1 given in %s on line %d +bool(false) + +-- With more than expected number of arguments -- +Warning: strripos() expects at most 3 parameters, 4 given in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_offset.phpt b/ext/standard/tests/strings/strripos_offset.phpt index daa917e79..524699ad5 100644 --- a/ext/standard/tests/strings/strripos_offset.phpt +++ b/ext/standard/tests/strings/strripos_offset.phpt @@ -16,30 +16,30 @@ var_dump(strripos(1024, "te", -PHP_INT_MAX-1)); echo "Done\n"; ?> --EXPECTF-- -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) Warning: strripos() expects parameter 1 to be string, array given in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d bool(false) Done diff --git a/ext/standard/tests/strings/strripos_variation1.phpt b/ext/standard/tests/strings/strripos_variation1.phpt new file mode 100644 index 000000000..b8a8943d0 --- /dev/null +++ b/ext/standard/tests/strings/strripos_variation1.phpt @@ -0,0 +1,254 @@ +--TEST-- +Test strripos() function : usage variations - double quoted strings for 'haystack' & 'needle' arguments +--FILE-- +?@hello123456he \x234 \101 "; +$needles = array( + //regular strings +/*1*/ "l", + "L", + "HELLO", + "hEllo", + + //escape characters +/*5*/ "\t", + "\T", //invalid input + " ", + "\n", + "\N", //invalid input + " +", //new line + + //nulls +/*11*/ "\0", + NULL, + null, + + //boolean false +/*14*/ FALSE, + false, + + //empty string +/*16*/ "", + + //special chars +/*17*/ " ", + "$", + " $", + "&", + "!#", + "()", + "<=>", + ">", + "=>", + "?", + "@", + "@hEllo", + +/*29*/ "12345", //decimal numeric string + "\x23", //hexadecimal numeric string + "#", //respective ASCII char of \x23 + "\101", //octal numeric string + "A", //respective ASCII char of \101 + "456HEE", //numerics + chars + $haystack //haystack as needle +); + +/* loop through to get the position of the needle in haystack string */ +$count = 1; +foreach ($needles as $needle) { + echo "-- Iteration $count --\n"; + var_dump( strripos($haystack, $needle) ); + var_dump( strripos($haystack, $needle, 1) ); + var_dump( strripos($haystack, $needle, 20) ); + var_dump( strripos($haystack, $needle, -1) ); + $count++; +} +?> +===DONE=== +--EXPECTF-- +*** Testing strripos() function: with double quoted strings *** +-- Iteration 1 -- +int(28) +int(28) +int(28) +int(28) +-- Iteration 2 -- +int(28) +int(28) +int(28) +int(28) +-- Iteration 3 -- +int(25) +int(25) +int(25) +int(25) +-- Iteration 4 -- +int(25) +int(25) +int(25) +int(25) +-- Iteration 5 -- +int(6) +int(6) +bool(false) +int(6) +-- Iteration 6 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 7 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 8 -- +int(9) +int(9) +bool(false) +int(9) +-- Iteration 9 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 10 -- +int(9) +int(9) +bool(false) +int(9) +-- Iteration 11 -- +int(8) +int(8) +bool(false) +int(8) +-- Iteration 12 -- +int(8) +int(8) +bool(false) +int(8) +-- Iteration 13 -- +int(8) +int(8) +bool(false) +int(8) +-- Iteration 14 -- +int(8) +int(8) +bool(false) +int(8) +-- Iteration 15 -- +int(8) +int(8) +bool(false) +int(8) +-- Iteration 16 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 17 -- +int(43) +int(43) +int(43) +int(43) +-- Iteration 18 -- +int(12) +int(12) +bool(false) +int(12) +-- Iteration 19 -- +int(11) +int(11) +bool(false) +int(11) +-- Iteration 20 -- +int(13) +int(13) +bool(false) +int(13) +-- Iteration 21 -- +int(14) +int(14) +bool(false) +int(14) +-- Iteration 22 -- +int(17) +int(17) +bool(false) +int(17) +-- Iteration 23 -- +int(20) +int(20) +int(20) +int(20) +-- Iteration 24 -- +int(22) +int(22) +int(22) +int(22) +-- Iteration 25 -- +int(21) +int(21) +int(21) +int(21) +-- Iteration 26 -- +int(23) +int(23) +int(23) +int(23) +-- Iteration 27 -- +int(24) +int(24) +int(24) +int(24) +-- Iteration 28 -- +int(24) +int(24) +int(24) +int(24) +-- Iteration 29 -- +int(30) +int(30) +int(30) +int(30) +-- Iteration 30 -- +int(39) +int(39) +int(39) +int(39) +-- Iteration 31 -- +int(39) +int(39) +int(39) +int(39) +-- Iteration 32 -- +int(42) +int(42) +int(42) +int(42) +-- Iteration 33 -- +int(42) +int(42) +int(42) +int(42) +-- Iteration 34 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 35 -- +int(0) +bool(false) +bool(false) +int(0) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_variation2.phpt b/ext/standard/tests/strings/strripos_variation2.phpt new file mode 100644 index 000000000..d8caf7374 --- /dev/null +++ b/ext/standard/tests/strings/strripos_variation2.phpt @@ -0,0 +1,260 @@ +--TEST-- +Test strripos() function : usage variations - single quoted strings for 'haystack' & 'needle' arguments +--FILE-- +?@hello123456he \x234 \101 '; +$needles = array( + //regular strings +/*1*/ 'l', + 'L', + 'HELLO', + 'hEllo', + + //escape characters +/*5*/ '\t', + '\T', + ' ', + '\n', + '\N', + ' + ', //new line + + //nulls +/*11*/ '\0', + NULL, + null, + + //boolean false +/*14*/ FALSE, + false, + + //empty string +/*16*/ '', + + //special chars +/*17*/ ' ', + '$', + ' $', + '&', + '!#', + '()', + '<=>', + '>', + '=>', + '?', + '@', + '@hEllo', + +/*29*/ '12345', //decimal numeric string + '\x23', //hexadecimal numeric string + '#', //respective ASCII char of \x23 + '\101', //octal numeric string + 'A', // respective ASCII char for \101 + '456HEE', //numerics + chars + 42, //needle as int(ASCII value of '*') + $haystack //haystack as needle +); + +/* loop through to get the position of the needle in haystack string */ +$count = 1; +foreach ($needles as $needle) { + echo "-- Iteration $count --\n"; + var_dump( strripos($haystack, $needle) ); + var_dump( strripos($haystack, $needle, 1) ); + var_dump( strripos($haystack, $needle, 20) ); + var_dump( strripos($haystack, $needle, -1) ); + $count++; +} +?> +===DONE=== +--EXPECT-- +*** Testing strripos() function: with single quoted strings *** +-- Iteration 1 -- +int(32) +int(32) +int(32) +int(32) +-- Iteration 2 -- +int(32) +int(32) +int(32) +int(32) +-- Iteration 3 -- +int(29) +int(29) +int(29) +int(29) +-- Iteration 4 -- +int(29) +int(29) +int(29) +int(29) +-- Iteration 5 -- +int(6) +int(6) +bool(false) +int(6) +-- Iteration 6 -- +int(6) +int(6) +bool(false) +int(6) +-- Iteration 7 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 8 -- +int(12) +int(12) +bool(false) +int(12) +-- Iteration 9 -- +int(12) +int(12) +bool(false) +int(12) +-- Iteration 10 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 11 -- +int(10) +int(10) +bool(false) +int(10) +-- Iteration 12 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 13 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 14 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 15 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 16 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 17 -- +int(53) +int(53) +int(53) +int(53) +-- Iteration 18 -- +int(16) +int(16) +bool(false) +int(16) +-- Iteration 19 -- +int(15) +int(15) +bool(false) +int(15) +-- Iteration 20 -- +int(17) +int(17) +bool(false) +int(17) +-- Iteration 21 -- +int(18) +int(18) +bool(false) +int(18) +-- Iteration 22 -- +int(21) +int(21) +int(21) +int(21) +-- Iteration 23 -- +int(24) +int(24) +int(24) +int(24) +-- Iteration 24 -- +int(26) +int(26) +int(26) +int(26) +-- Iteration 25 -- +int(25) +int(25) +int(25) +int(25) +-- Iteration 26 -- +int(27) +int(27) +int(27) +int(27) +-- Iteration 27 -- +int(28) +int(28) +int(28) +int(28) +-- Iteration 28 -- +int(28) +int(28) +int(28) +int(28) +-- Iteration 29 -- +int(34) +int(34) +int(34) +int(34) +-- Iteration 30 -- +int(43) +int(43) +int(43) +int(43) +-- Iteration 31 -- +int(19) +int(19) +bool(false) +int(19) +-- Iteration 32 -- +int(49) +int(49) +int(49) +int(49) +-- Iteration 33 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 34 -- +bool(false) +bool(false) +bool(false) +bool(false) +-- Iteration 35 -- +int(23) +int(23) +int(23) +int(23) +-- Iteration 36 -- +int(0) +bool(false) +bool(false) +int(0) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_variation3.phpt b/ext/standard/tests/strings/strripos_variation3.phpt new file mode 100644 index 000000000..c38010634 --- /dev/null +++ b/ext/standard/tests/strings/strripos_variation3.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test strripos() function : usage variations - multi line heredoc string for 'haystack' argument +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing strripos() function: with heredoc strings *** +-- With heredoc string containing multi lines -- + +-- Multi line strings with +ve offsets -- +int(44) +int(44) +int(44) + +-- Multi line strings with +ve offsets -- +int(44) +int(44) +bool(false) + +-- Multi line strings with no offset -- +int(18) +int(31) +bool(false) +int(55) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_variation4.phpt b/ext/standard/tests/strings/strripos_variation4.phpt new file mode 100644 index 000000000..c355330ca --- /dev/null +++ b/ext/standard/tests/strings/strripos_variation4.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test strripos() function : usage variations - heredoc string containing special chars for 'haystack' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strripos() function: with heredoc strings *** +-- With heredoc string containing special chars -- +int(0) +bool(false) +int(41) +int(39) +int(55) +int(55) +int(57) +===DONE=== diff --git a/ext/standard/tests/strings/strripos_variation5.phpt b/ext/standard/tests/strings/strripos_variation5.phpt new file mode 100644 index 000000000..5f6df7990 --- /dev/null +++ b/ext/standard/tests/strings/strripos_variation5.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test strripos() function : usage variations - heredoc string containing escape chars for 'haystack' argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strripos() function: with heredoc strings *** +-- With heredoc string containing escape characters -- +int(13) +int(19) +int(13) +int(19) +===DONE=== diff --git a/ext/standard/tests/strings/strrpos_variation14.phpt b/ext/standard/tests/strings/strrpos_variation14.phpt index 617685325..53c123a3f 100644 --- a/ext/standard/tests/strings/strrpos_variation14.phpt +++ b/ext/standard/tests/strings/strrpos_variation14.phpt @@ -92,7 +92,7 @@ int(6) int(6) -- Iteration 3 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 4 -- int(6) diff --git a/ext/standard/tests/strings/strrpos_variation15.phpt b/ext/standard/tests/strings/strrpos_variation15.phpt index 23c7aef14..d958cdc48 100644 --- a/ext/standard/tests/strings/strrpos_variation15.phpt +++ b/ext/standard/tests/strings/strrpos_variation15.phpt @@ -94,23 +94,23 @@ bool(false) bool(false) -- Iteration 3 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 4 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 5 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 6 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 7 -- -Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d +Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d bool(false) -- Iteration 8 -- bool(false) diff --git a/ext/standard/tests/strings/strtolower-win32.phpt b/ext/standard/tests/strings/strtolower-win32.phpt index af1290f1b..18e32488c 100644 Binary files a/ext/standard/tests/strings/strtolower-win32.phpt and b/ext/standard/tests/strings/strtolower-win32.phpt differ diff --git a/ext/standard/tests/strings/strtoupper1-win32.phpt b/ext/standard/tests/strings/strtoupper1-win32.phpt index 283492d9d..0f023afeb 100644 Binary files a/ext/standard/tests/strings/strtoupper1-win32.phpt and b/ext/standard/tests/strings/strtoupper1-win32.phpt differ diff --git a/ext/standard/tests/strings/strtr_variation5.phpt b/ext/standard/tests/strings/strtr_variation5.phpt index 7bd170473..82c86eb29 100644 --- a/ext/standard/tests/strings/strtr_variation5.phpt +++ b/ext/standard/tests/strings/strtr_variation5.phpt @@ -31,42 +31,42 @@ $file_handle = fopen(__FILE__, "r"); // array with different values $strings = array ( - // integer values - 0, - 1, - -2, - - // float values - 10.5, - -20.5, - 10.5e10, - - // array values - array(), - array(0), - array(1, 2), - - // boolean values - true, - false, - TRUE, - FALSE, - - // null vlaues - NULL, - null, - - // objects - new sample(), - - // resource - $file_handle, - - // undefined variable - @$undefined_var, - - // unset variable - @$unset_var + // integer values +/*1*/ 0, + 1, + -2, + + // float values +/*4*/ 10.5, + -20.5, + 10.1234567e10, + + // array values +/*7*/ array(), + array(0), + array(1, 2), + + // boolean values +/*10*/ true, + false, + TRUE, + FALSE, + + // null vlaues +/*14*/ NULL, + null, + + // objects +/*16*/ new sample(), + + // resource +/*17*/ $file_handle, + + // undefined variable +/*18*/ @$undefined_var, + + // unset variable +/*19*/ @$unset_var ); //defining 'from' argument @@ -86,8 +86,8 @@ for($index = 0; $index < count($strings); $index++) { fclose($file_handle); //closing the file handle -echo "*** Done ***"; ?> +===Done=== --EXPECTF-- *** Testing strtr() function: with unexpected inputs for 'str' *** -- Iteration 1 -- @@ -101,7 +101,7 @@ string(4) "ta.5" -- Iteration 5 -- string(5) "-ma.5" -- Iteration 6 -- -string(12) "ta5aaaaaaaaa" +string(12) "tatm34567aaa" -- Iteration 7 -- Notice: Array to string conversion in %s on line %d @@ -129,9 +129,9 @@ string(0) "" -- Iteration 16 -- string(13) "s02ple objec1" -- Iteration 17 -- -string(%d) "Resource id #%d" +string(%d) "Resource id #%s" -- Iteration 18 -- string(0) "" -- Iteration 19 -- string(0) "" -*** Done *** +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strtr_variation6.phpt b/ext/standard/tests/strings/strtr_variation6.phpt index 2d8ab7183..9a4463e75 100644 --- a/ext/standard/tests/strings/strtr_variation6.phpt +++ b/ext/standard/tests/strings/strtr_variation6.phpt @@ -34,42 +34,42 @@ $str = "012atm"; // array of values for 'from' $from_arr = array ( - // integer values - 0, - 1, - -2, - - // float values - 10.5, - -20.5, - 10.5e10, - - // array values - array(), - array(0), - array(1, 2), - - // boolean values - true, - false, - TRUE, - FALSE, - - // null vlaues - NULL, - null, - - // objects - new sample(), - - // resource - $file_handle, - - // undefined variable - @$undefined_var, - - // unset variable - @$unset_var + // integer values +/*1*/ 0, + 1, + -2, + + // float values +/*4*/ 10.5, + -20.5, + 10.1234567e10, + + // array values +/*7*/ array(), + array(0), + array(1, 2), + + // boolean values +/*10*/ true, + false, + TRUE, + FALSE, + + // null vlaues +/*14*/ NULL, + null, + + // objects +/*16*/ new sample(), + + // resource +/*17*/ $file_handle, + + // undefined variable +/*18*/ @$undefined_var, + + // unset variable +/*19*/ @$unset_var ); //defining 'to' argument @@ -85,9 +85,8 @@ for($index = 0; $index < count($from_arr); $index++) { } fclose($file_handle); //closing the file handle - -echo "*** Done ***"; ?> +===Done=== --EXPECTF-- *** Testing strtr() function: with unexpected inputs for 'from' *** -- Iteration 1 -- @@ -101,7 +100,7 @@ string(6) "ta2atm" -- Iteration 5 -- string(6) "m1tatm" -- Iteration 6 -- -string(6) "2a2atm" +string(6) "tm0atm" -- Iteration 7 -- Notice: Array to string conversion in %s on line %d @@ -134,4 +133,4 @@ string(6) "012atm" string(6) "012atm" -- Iteration 19 -- string(6) "012atm" -*** Done *** +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strtr_variation7.phpt b/ext/standard/tests/strings/strtr_variation7.phpt index 04b742f31..5a8e9c9ff 100644 --- a/ext/standard/tests/strings/strtr_variation7.phpt +++ b/ext/standard/tests/strings/strtr_variation7.phpt @@ -37,42 +37,42 @@ $from = "atm012"; // array of values for 'to' argument $to_arr = array ( - // integer values - 0, - 1, - -2, - - // float values - 10.5, - -20.5, - 10.5e10, - - // array values - array(), - array(0), - array(1, 2), - - // boolean values - true, - false, - TRUE, - FALSE, - - // null vlaues - NULL, - null, - - // objects - new sample(), - - // resource - $file_handle, - - // undefined variable - @$undefined_var, - - // unset variable - @$unset_var + // integer values +/*1*/ 0, + 1, + -2, + + // float values +/*4*/ 10.5, + -20.5, + 10.12345675e10, + + // array values +/*7*/ array(), + array(0), + array(1, 2), + + // boolean values +/*10*/ true, + false, + TRUE, + FALSE, + + // null vlaues +/*14*/ NULL, + null, + + // objects +/*16*/ new sample(), + + // resource +/*17*/ $file_handle, + + // undefined variable +/*18*/ @$undefined_var, + + // unset variable +/*19*/ @$unset_var ); // loop through with each element of the $to array to test strtr() function @@ -86,8 +86,8 @@ for($index = 0; $index < count($to_arr); $index++) { fclose($file_handle); //closing the file handle -echo "*** Done ***"; ?> +===Done=== --EXPECTF-- *** Testing strtr() function: with unexpected inputs for 'to' *** @@ -107,7 +107,7 @@ string(6) "51210." string(6) ".52-20" -- Iteration 6 -- -string(6) "000105" +string(6) "234101" -- Iteration 7 -- @@ -153,4 +153,4 @@ string(6) "012atm" -- Iteration 19 -- string(6) "012atm" -*** Done *** +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strtr_variation9.phpt b/ext/standard/tests/strings/strtr_variation9.phpt index 0f5875c72..2d4f39f23 100644 --- a/ext/standard/tests/strings/strtr_variation9.phpt +++ b/ext/standard/tests/strings/strtr_variation9.phpt @@ -29,44 +29,44 @@ $file_handle = fopen(__FILE__, "r"); // array with different values $values = array ( - // integer values - 0, - 1, - -2, - - // float values - 10.5, - -20.5, - 10.5e10, - - // array values - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // boolean values - true, - false, - TRUE, - FALSE, - - // null vlaues - NULL, - null, - - // objects - new sample(), - - // resource - $file_handle, - - // undefined variable - @$undefined_var, - - // unset variable - @$unset_var + // integer values +/*1*/ 0, + 1, + -2, + + // float values +/*4*/ 10.5, + -20.5, + 10.1234567e10, + + // array values +/*7*/ array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values +/*12*/ true, + false, + TRUE, + FALSE, + + // null vlaues +/*16*/ NULL, + null, + + // objects +/*18*/ new sample(), + + // resource +/*19*/ $file_handle, + + // undefined variable +/*20*/ @$undefined_var, + + // unset variable +/*21*/ @$unset_var ); // loop through with each element of the $values array to test strtr() function @@ -80,8 +80,8 @@ for($index = 0; $index < count($values); $index++) { fclose($file_handle); //closing the file handle -echo "*** Done ***"; ?> +===Done=== --EXPECTF-- *** Testing strtr() function: with unexpected inputs for all arguments *** @@ -116,7 +116,7 @@ Warning: strtr(): The second argument is not an array in %s on line %d bool(false) -- Iteration 6 -- -string(12) "105000000000" +string(12) "101234567000" Warning: strtr(): The second argument is not an array in %s on line %d bool(false) @@ -240,4 +240,4 @@ string(0) "" Warning: strtr(): The second argument is not an array in %s on line %d bool(false) -*** Done *** +===Done=== diff --git a/ext/standard/tests/strings/strval_basic.phpt b/ext/standard/tests/strings/strval_basic.phpt new file mode 100644 index 000000000..c099058b9 --- /dev/null +++ b/ext/standard/tests/strings/strval_basic.phpt @@ -0,0 +1,77 @@ +--TEST-- +Test strval() function : basic functionality +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strval() : basic variations *** + +-- Iteration 1 -- +string(11) "Hello World" + +-- Iteration 2 -- +string(11) "Hello World" + +-- Iteration 3 -- +string(32) "String +with +control +characters +" + +-- Iteration 4 -- +string(20) "String with "quotes"" + +-- Iteration 5 -- +string(6) "123456" + +-- Iteration 6 -- +string(5) "0xABC" + +-- Iteration 7 -- +string(21) "Simple HEREDOC string" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strval_error.phpt b/ext/standard/tests/strings/strval_error.phpt new file mode 100644 index 000000000..ce57266b7 --- /dev/null +++ b/ext/standard/tests/strings/strval_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test strval() function : usage variations - error conditions +--FILE-- + +--EXPECTF-- +*** Testing strval() : error conditions *** + +-- Testing strval() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for strval() in %s on line %d +NULL + +-- Testing strval() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for strval() in %s on line %d +NULL + +-- Testing strval() function with object which has not toString() method -- + +Catchable fatal error: Object of class MyClass could not be converted to string in %s on line %d \ No newline at end of file diff --git a/ext/standard/tests/strings/strval_variation1.phpt b/ext/standard/tests/strings/strval_variation1.phpt new file mode 100644 index 000000000..430a4362b --- /dev/null +++ b/ext/standard/tests/strings/strval_variation1.phpt @@ -0,0 +1,190 @@ +--TEST-- +Test strval() function : usage variations - Pass different data types as strval +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*20*/ NULL, + null, + + // boolean data +/*22*/ true, + false, + TRUE, + FALSE, + + // empty data +/*26*/ "", + '', + + // object data +/*28*/ new MyClass(), + + // resource +/*29*/ $file_handle, + + // undefined data +/*30*/ @$undefined_var, + + // unset data +/*31*/ @$unset_var, +); + +// loop through each element of the array for strval +$iterator = 1; +foreach($values as $value) { + echo "\n-- Iteration $iterator --\n"; + var_dump( strval($value) ); + $iterator++; +}; +?> +===DONE=== +--EXPECTF-- +*** Testing strval() : usage variations *** + +-- Iteration 1 -- +string(1) "0" + +-- Iteration 2 -- +string(1) "1" + +-- Iteration 3 -- +string(5) "12345" + +-- Iteration 4 -- +string(6) "-12345" + +-- Iteration 5 -- +string(1) "2" + +-- Iteration 6 -- +string(1) "8" + +-- Iteration 7 -- +string(5) "12345" + +-- Iteration 8 -- +string(6) "-12345" + +-- Iteration 9 -- +string(1) "0" + +-- Iteration 10 -- +string(1) "1" + +-- Iteration 11 -- +string(5) "43981" + +-- Iteration 12 -- +string(6) "-43981" + +-- Iteration 13 -- +string(5) "100.5" + +-- Iteration 14 -- +string(6) "-100.5" + +-- Iteration 15 -- +string(13) "1001234567000" + +-- Iteration 16 -- +string(14) "1.007654321E-8" + +-- Iteration 17 -- +string(3) "0.5" + +-- Iteration 18 -- +string(5) "Array" + +-- Iteration 19 -- +string(5) "Array" + +-- Iteration 20 -- +string(0) "" + +-- Iteration 21 -- +string(0) "" + +-- Iteration 22 -- +string(1) "1" + +-- Iteration 23 -- +string(0) "" + +-- Iteration 24 -- +string(1) "1" + +-- Iteration 25 -- +string(0) "" + +-- Iteration 26 -- +string(0) "" + +-- Iteration 27 -- +string(0) "" + +-- Iteration 28 -- +string(7) "MyClass" + +-- Iteration 29 -- +string(%d) "Resource id #%d" + +-- Iteration 30 -- +string(0) "" + +-- Iteration 31 -- +string(0) "" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/strval_variation2.phpt b/ext/standard/tests/strings/strval_variation2.phpt new file mode 100644 index 000000000..da74973c5 --- /dev/null +++ b/ext/standard/tests/strings/strval_variation2.phpt @@ -0,0 +1,82 @@ +--TEST-- +Test strval() function : usage variations - Pass all valid char codes +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing strval() : usage variations - Pass all valid char codes *** +000102030405060708090a0b0c0d0e0f +101112131415161718191a1b1c1d1e1f +202122232425262728292a2b2c2d2e2f +303132333435363738393a3b3c3d3e3f +404142434445464748494a4b4c4d4e4f +505152535455565758595a5b5c5d5e5f +606162636465666768696a6b6c6d6e6f +707172737475767778797a7b7c7d7e7f +808182838485868788898a8b8c8d8e8f +909192939495969798999a9b9c9d9e9f +a0a1a2a3a4a5a6a7a8a9aaabacadaeaf +b0b1b2b3b4b5b6b7b8b9babbbcbdbebf +c0c1c2c3c4c5c6c7c8c9cacbcccdcecf +d0d1d2d3d4d5d6d7d8d9dadbdcdddedf +e0e1e2e3e4e5e6e7e8e9eaebecedeeef +f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/substr_replace_error.phpt b/ext/standard/tests/strings/substr_replace_error.phpt new file mode 100644 index 000000000..facea3468 --- /dev/null +++ b/ext/standard/tests/strings/substr_replace_error.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test substr_replace() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing substr_replace() : error conditions *** + +-- Testing substr_replace() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for substr_replace() in %s on line %d +NULL + +Warning: Wrong parameter count for substr_replace() in %s on line %d +NULL + +-- Testing substr_replace() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for substr_replace() in %s on line %d +NULL + +-- Testing substr_replace() function with start and length different types -- + +Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d +string(12) "Good morning" + +Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d +string(12) "Good morning" + +-- Testing substr_replace() function with start and length with a different number of elments -- + +Warning: substr_replace(): 'from' and 'len' should have the same number of elements in %s on line %d +string(12) "Good morning" + +-- Testing substr_replace() function with start and length as arrays but string not-- + +Warning: substr_replace(): Functionality of 'from' and 'len' as arrays is not implemented in %s on line %d +string(12) "Good morning" +===DONE=== diff --git a/ext/standard/tests/strings/trim_basic.phpt b/ext/standard/tests/strings/trim_basic.phpt new file mode 100644 index 000000000..501b47742 --- /dev/null +++ b/ext/standard/tests/strings/trim_basic.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test trim() function : basic functionality +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing trim() : basic functionality *** + +-- Trim string with all white space characters -- +string(27) "---These are a few words---" + +-- Trim non-whitespace from a string -- +string(11) "Hello World" + +-- Trim some non-white space characters from a string -- +string(19) "!===Hello World===!" + +-- Trim the ASCII control characters at the beginning of a string -- +string(14) "Example string" +===DONE=== diff --git a/ext/standard/tests/strings/trim_error.phpt b/ext/standard/tests/strings/trim_error.phpt new file mode 100644 index 000000000..010a45d16 --- /dev/null +++ b/ext/standard/tests/strings/trim_error.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test trim() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing trim() : error conditions *** + +-- Testing trim() function with no arguments -- + +Warning: Wrong parameter count for trim() in %s on line %d +NULL + +-- Testing trim() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for trim() in %s on line %d +NULL + +-- Test trim function with various invalid charlists -- + +Warning: trim(): Invalid '..'-range, no character to the left of '..' in %s on line %d +string(14) " Hello World +" + +Warning: trim(): Invalid '..'-range, no character to the right of '..' in %s on line %d +string(14) " Hello World +" + +Warning: trim(): Invalid '..'-range, '..'-range needs to be incrementing in %s on line %d +string(14) " Hello World +" + +Warning: trim(): Invalid '..'-range in %s on line %d +string(14) " Hello World +" +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/trim_variation1.phpt b/ext/standard/tests/strings/trim_variation1.phpt new file mode 100644 index 000000000..74362b814 --- /dev/null +++ b/ext/standard/tests/strings/trim_variation1.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test trim() function : usage variations - test values for $str argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing trim() function: with unexpected inputs for 'str' argument *** +-- Iteration 1 -- +string(1) "0" +-- Iteration 2 -- +string(1) "1" +-- Iteration 3 -- +string(3) "255" +-- Iteration 4 -- +string(3) "256" +-- Iteration 5 -- +string(10) "2147483647" +-- Iteration 6 -- +string(10) "2147483648" +-- Iteration 7 -- +string(4) "10.5" +-- Iteration 8 -- +string(4) "20.5" +-- Iteration 9 -- +string(12) "101234567000" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(5) "Array" +-- Iteration 13 -- +string(1) "1" +-- Iteration 14 -- +string(0) "" +-- Iteration 15 -- +string(1) "1" +-- Iteration 16 -- +string(0) "" +-- Iteration 17 -- +string(0) "" +-- Iteration 18 -- +string(0) "" +-- Iteration 19 -- +string(13) "sample object" +-- Iteration 20 -- +string(%d) "Resource id #%d" +-- Iteration 21 -- +string(0) "" +-- Iteration 22 -- +string(0) "" +===DONE=== diff --git a/ext/standard/tests/strings/trim_variation2.phpt b/ext/standard/tests/strings/trim_variation2.phpt new file mode 100644 index 000000000..9ba2af616 --- /dev/null +++ b/ext/standard/tests/strings/trim_variation2.phpt @@ -0,0 +1,136 @@ +--TEST-- +Test trim() function : usage variations - test values for $charlist argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing trim() function: with unexpected inputs for 'charlist' argument *** +-- Iteration 1 -- +string(19) "!---Hello World---!" +-- Iteration 2 -- +string(19) "!---Hello World---!" +-- Iteration 3 -- +string(19) "!---Hello World---!" +-- Iteration 4 -- +string(19) "!---Hello World---!" +-- Iteration 5 -- +string(19) "!---Hello World---!" +-- Iteration 6 -- +string(19) "!---Hello World---!" +-- Iteration 7 -- +string(19) "!---Hello World---!" +-- Iteration 8 -- +string(19) "!---Hello World---!" +-- Iteration 9 -- +string(19) "!---Hello World---!" +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +string(19) "!---Hello World---!" +-- Iteration 13 -- +string(19) "!---Hello World---!" +-- Iteration 14 -- +string(19) "!---Hello World---!" +-- Iteration 15 -- +string(19) "!---Hello World---!" +-- Iteration 16 -- +string(19) "!---Hello World---!" +-- Iteration 17 -- +string(19) "!---Hello World---!" +-- Iteration 18 -- +string(19) "!---Hello World---!" +-- Iteration 19 -- +string(19) "!---Hello World---!" +-- Iteration 20 -- +string(19) "!---Hello World---!" +-- Iteration 21 -- +string(19) "!---Hello World---!" +-- Iteration 22 -- +string(19) "!---Hello World---!" +===DONE=== diff --git a/ext/standard/tests/strings/unpack_error.phpt b/ext/standard/tests/strings/unpack_error.phpt new file mode 100644 index 000000000..32dd25dcb --- /dev/null +++ b/ext/standard/tests/strings/unpack_error.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test unpack() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing unpack() : error conditions *** + +-- Testing unpack() function with no arguments -- + +Warning: Wrong parameter count for unpack() in %s on line %d +NULL + +-- Testing unpack() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for unpack() in %s on line %d +NULL + +-- Testing unpack() function with invalid format character -- + +Warning: unpack(): Invalid format type Z in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic.phpt b/ext/standard/tests/strings/vfprintf_basic.phpt new file mode 100644 index 000000000..8189aaf0b --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test vfprintf() function : basic functionality +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing vfprintf() : basic functionality *** +string(17) "Foo is 30 and bar" +int(17) +string(11) "bar bar bar" +int(11) +string(8) "54 digit" +int(8) +string(3) "1 0" +int(3) +string(5) "A B C" +int(5) +string(35) "1.000000e+3 2.000000E+4 2.000000e+2" +int(35) +string(2) "50" +int(2) +string(35) "Testing 1001 6 2.550200 foobar f 41" +int(35) +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic1.phpt b/ext/standard/tests/strings/vfprintf_basic1.phpt new file mode 100644 index 000000000..3129d4fcc --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic1.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test vfprintf() function : basic functionality - string format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using string format *** +int(4) +int(8) +int(14) +one +one two +one two three +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic2.phpt b/ext/standard/tests/strings/vfprintf_basic2.phpt new file mode 100644 index 000000000..a7e0dbc63 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic2.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test vfprintf() function : basic functionality - integer format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using integer format *** +111 +111 222 +111 222 333 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic3.phpt b/ext/standard/tests/strings/vfprintf_basic3.phpt new file mode 100644 index 000000000..8c52e57f9 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic3.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test vfprintf() function : basic functionality - float format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using float format *** +11.110000 +11.110000 +11.110000 22.220000 +11.110000 22.220000 +11.110000 22.220000 33.330000 +11.110000 22.220000 33.330000 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic4.phpt b/ext/standard/tests/strings/vfprintf_basic4.phpt new file mode 100644 index 000000000..76b3a0421 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic4.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test vfprintf() function : basic functionality - bool format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using bool format *** +1 +1 0 +1 0 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic5.phpt b/ext/standard/tests/strings/vfprintf_basic5.phpt new file mode 100644 index 000000000..a080c9e6c --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic5.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test vfprintf() function : basic functionality - char format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using char format *** +A +A B +A B C +===DONE=== + + diff --git a/ext/standard/tests/strings/vfprintf_basic6.phpt b/ext/standard/tests/strings/vfprintf_basic6.phpt new file mode 100644 index 000000000..ed88a2832 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic6.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test vfprintf() function : basic functionality - exponential format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using exponential format *** +1.000000e+3 +1.000000e+3 2.000000e+3 +1.000000e+3 2.000000e+3 3.000000e+3 +===DONE=== + diff --git a/ext/standard/tests/strings/vfprintf_basic7.phpt b/ext/standard/tests/strings/vfprintf_basic7.phpt new file mode 100644 index 000000000..45544a39e --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic7.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test vfprintf() function : basic functionality - unsigned format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using unsigned format *** +4294966185 +4294966185 4293732729 +4294966185 4293732729 4292621864 +===DONE=== + + diff --git a/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt b/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt new file mode 100644 index 000000000..77fae2c09 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic7_64bit.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test vfprintf() function : basic functionality - unsigned format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using unsigned format *** +18446744073709550505 +18446744073709550505 18446744073708317049 +18446744073709550505 18446744073708317049 18446744073707206184 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic8.phpt b/ext/standard/tests/strings/vfprintf_basic8.phpt new file mode 100644 index 000000000..6fe215154 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic8.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test vfprintf() function : basic functionality - octal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : basic functionality - using octal format *** +21 +21 347 +21 347 567 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_basic9.phpt b/ext/standard/tests/strings/vfprintf_basic9.phpt new file mode 100644 index 000000000..8294c8482 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_basic9.phpt @@ -0,0 +1,60 @@ +--TEST-- +Test vfprintf) function : basic functionality - hexadecimal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf) : basic functionality - using hexadecimal format *** +b +B +b 84 +B 84 +b 84 b1 +B 84 B1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_error1.phpt b/ext/standard/tests/strings/vfprintf_error1.phpt new file mode 100644 index 000000000..b8cc17097 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_error1.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test vfprintf() function : error conditions (more than expected arguments) +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +-- Testing vfprintf() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for vfprintf() in %s on line %d +NULL + +Warning: Wrong parameter count for vfprintf() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_error2.phpt b/ext/standard/tests/strings/vfprintf_error2.phpt new file mode 100644 index 000000000..981b1a745 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_error2.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test vfprintf() function : error conditions (less than expected arguments) +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +-- Testing vfprintf() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for vfprintf() in %s on line %d +NULL + +Warning: Wrong parameter count for vfprintf() in %s on line %d +NULL + +Warning: Wrong parameter count for vfprintf() in %s on line %d +NULL +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_error3.phpt b/ext/standard/tests/strings/vfprintf_error3.phpt new file mode 100644 index 000000000..3edc06807 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_error3.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test vfprintf() function : error conditions (wrong argument types) +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +-- Testing vfprintf() function with wrong variable types as argument -- + +Notice: Array to string conversion in %s on line %d +int(5) +string(5) "Array" +int(9) +string(9) "Foo fake" +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_error4.phpt b/ext/standard/tests/strings/vfprintf_error4.phpt new file mode 100644 index 000000000..e23507a17 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_error4.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test vfprintf() function : error conditions (various conditions) +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +-- Testing vfprintf() function with other strangeties -- + +Warning: vfprintf(): supplied argument is not a valid stream resource in %s on line %d +bool(false) + +Warning: vfprintf(): Argument number must be greater than zero in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation1.phpt b/ext/standard/tests/strings/vfprintf_variation1.phpt new file mode 100644 index 000000000..316e55ce2 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation1.phpt @@ -0,0 +1,86 @@ +--TEST-- +Test vfprintf() function : variation functionality +--CREDITS-- +Felix De Vliegher +--INI-- +precision=14 +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +*** Testing vfprintf() : variation functionality *** +string(6) "format" +int(6) +string(17) "Foo is 30 and bar" +int(17) +string(14) "Foobar testing" +int(14) +string(11) "bar bar bar" +int(11) +string(2) "50" +int(2) +string(0) "" +int(0) +string(38) "Testing 1001 6 2.550200 30 foobar f 41" +int(38) +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation10.phpt b/ext/standard/tests/strings/vfprintf_variation10.phpt new file mode 100644 index 000000000..e2c066eff Binary files /dev/null and b/ext/standard/tests/strings/vfprintf_variation10.phpt differ diff --git a/ext/standard/tests/strings/vfprintf_variation11.phpt b/ext/standard/tests/strings/vfprintf_variation11.phpt new file mode 100644 index 000000000..45f1f61fa --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation11.phpt @@ -0,0 +1,88 @@ +--TEST-- +Test vfprintf() function : usage variations - octal formats with octal values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : octal formats with octal values *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +37777777777 1 +-- Iteration 3 -- +20000000000 o, 17777777777 20000000001 +-- Iteration 4 -- + 37776543211 0000 +-- Iteration 5 -- +111 2222 37777444445 37733333334 +-- Iteration 6 -- +11073 7653 123 12 +-- Iteration 7 -- +% %o o +-- Iteration 8 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt new file mode 100644 index 000000000..d6549846b --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation11_64bit.phpt @@ -0,0 +1,88 @@ +--TEST-- +Test vfprintf() function : usage variations - octal formats with octal values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : octal formats with octal values *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +1777777777777777777777 1 +-- Iteration 3 -- +1777777777760000000000 o, 17777777777 1777777777760000000001 +-- Iteration 4 -- + 1777777777777776543211 0000 +-- Iteration 5 -- +111 2222 1777777777777777444445 1777777777777733333334 +-- Iteration 6 -- +11073 7653 123 12 +-- Iteration 7 -- +% %o o +-- Iteration 8 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation12.phpt b/ext/standard/tests/strings/vfprintf_variation12.phpt new file mode 100644 index 000000000..e95fd5bb7 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation12.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vfprintf() function : usage variations - octal formats with non-octal values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different octal formats from the above $format array +// and with non-octal values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : octal formats and non-octal values *** + +-- Iteration 1 -- +2 0 12 + 361100 o 37777775456 2322 + + 30071 14 37777777764 37777416700 + 12 361100 2 0 +-- Iteration 2 -- +2 37777777776 2 + 361100 o 37720715133 57062645 + + 57060664 4475347 37721631371 37720717336 + 2 361100 2 37777777776 +-- Iteration 3 -- +0 0 0 + 173 o 37777777605 173 + + 2322 0 $0 _0 + 0 173 0 0 +-- Iteration 4 -- +1 1 1 + 1 o 1 1 + + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 5 -- +1 1 0 + 1 o 0 1 + + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt new file mode 100644 index 000000000..a1e57bc42 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation12_64bit.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vfprintf() function : usage variations - octal formats with non-octal values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different octal formats from the above $format array +// and with non-octal values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : octal formats and non-octal values *** + +-- Iteration 1 -- +2 0 12 + 361100 o 1777777777777777775456 2322 + + 30071 14 1777777777777777777764 1777777777777777416700 + 12 361100 2 0 +-- Iteration 2 -- +2 1777777777777777777776 2 + 361100 o 1777777777777720715133 57062645 + + 57060664 4475347 1777777777777721631371 1777777777777720717336 + 2 361100 2 1777777777777777777776 +-- Iteration 3 -- +0 0 0 + 173 o 1777777777777777777605 173 + + 2322 0 $0 _0 + 0 173 0 0 +-- Iteration 4 -- +1 1 1 + 1 o 1 1 + + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 5 -- +1 1 0 + 1 o 0 1 + + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation13.phpt b/ext/standard/tests/strings/vfprintf_variation13.phpt new file mode 100644 index 000000000..245feb5a2 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation13.phpt @@ -0,0 +1,88 @@ +--TEST-- +Test vfprintf() function : usage variations - hexa formats with hexa values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : hexa formats with hexa values *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +ffffffff 1 22 +-- Iteration 3 -- +7fffffff x, 7000000 80000000 +-- Iteration 4 -- + ffed2979 0000 +-- Iteration 5 -- +#1 2222 1b6db bbbbbbbc +-- Iteration 6 -- +123b fab 0 a +-- Iteration 7 -- +%34 x +-- Iteration 8 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt new file mode 100644 index 000000000..bf6fcb5ec --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation13_64bit.phpt @@ -0,0 +1,88 @@ +--TEST-- +Test vfprintf() function : usage variations - hexa formats with hexa values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : hexa formats with hexa values *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +ffffffffffffffff 1 22 +-- Iteration 3 -- +7fffffff x, 7000000 ffffffff80000000 +-- Iteration 4 -- + ffffffffffed2979 0000 +-- Iteration 5 -- +#1 2222 1b6db ffffffffbbbbbbbc +-- Iteration 6 -- +123b fab 0 a +-- Iteration 7 -- +%34 x +-- Iteration 8 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation14.phpt b/ext/standard/tests/strings/vfprintf_variation14.phpt new file mode 100644 index 000000000..c714d8975 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation14.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vfprintf() function : usage variations - hexa formats with non-hexa values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different hexa formats from the above $format array +// and with non-hexa values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : hexa formats and non-hexa values *** + +-- Iteration 1 -- +2 0 a + 1e240 x fffffb2e 4d2 + + 3039 c fffffff4 fffe1dc0 + a 1e240 2 0 +-- Iteration 2 -- +2 fffffffe 2 + 1e240 x ff439a5b bc65a5 + + bc61b4 127ae7 ff4732f9 ff439ede + 2 1e240 2 fffffffe +-- Iteration 3 -- +0 0 0 + 7b x ffffff85 7b + + 4d2 0 $0 _0 + 0 7b 0 0 +-- Iteration 4 -- +1 1 1 + 1 x 1 1 + + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 5 -- +1 1 0 + 1 x 0 1 + + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt new file mode 100644 index 000000000..930ee3d03 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation14_64bit.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vfprintf() function : usage variations - hexa formats with non-hexa values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different hexa formats from the above $format array +// and with non-hexa values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : hexa formats and non-hexa values *** + +-- Iteration 1 -- +2 0 a + 1e240 x fffffffffffffb2e 4d2 + + 3039 c fffffffffffffff4 fffffffffffe1dc0 + a 1e240 2 0 +-- Iteration 2 -- +2 fffffffffffffffe 2 + 1e240 x ffffffffff439a5b bc65a5 + + bc61b4 127ae7 ffffffffff4732f9 ffffffffff439ede + 2 1e240 2 fffffffffffffffe +-- Iteration 3 -- +0 0 0 + 7b x ffffffffffffff85 7b + + 4d2 0 $0 _0 + 0 7b 0 0 +-- Iteration 4 -- +1 1 1 + 1 x 1 1 + + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 5 -- +1 1 0 + 1 x 0 1 + + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation15.phpt b/ext/standard/tests/strings/vfprintf_variation15.phpt new file mode 100644 index 000000000..95667b5a8 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation15.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test vfprintf() function : usage variations - unsigned formats with unsigned values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : unsigned formats and unsigned values *** + +-- Iteration 1 -- +1234567 342391 0 +-- Iteration 2 -- +3755744308 u 1234 12345 +-- Iteration 3 -- + 1234000 2450319192 120 +-- Iteration 4 -- +#1 0 $0 10 +-- Iteration 5 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt new file mode 100644 index 000000000..d2e331c2d --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation15_64bit.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test vfprintf() function : usage variations - unsigned formats with unsigned values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : unsigned formats and unsigned values *** + +-- Iteration 1 -- +1234567 342391 0 +-- Iteration 2 -- +12345678900 u 1234 12345 +-- Iteration 3 -- + 1234000 101234567000 120 +-- Iteration 4 -- +#1 0 $0 10 +-- Iteration 5 -- +1 2 3 4 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation16.phpt b/ext/standard/tests/strings/vfprintf_variation16.phpt new file mode 100644 index 000000000..2f403948a --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation16.phpt @@ -0,0 +1,112 @@ +--TEST-- +Test vfprintf() function : usage variations - unsigned formats with signed and other types of values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different unsigned formats from the above $format array +// and with signed and other types of values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : unsigned formats and signed & other types of values *** + +-- Iteration 1 -- +2 0 10 + 123456 u 1234 2820130816 + 2840207360 1177509888 12345 + 12 4294967284 4294843840 _3 + 10 123456 2 0 +-- Iteration 2 -- +0 0 0 + 123 u 4294967173 123 + 0 0 0 + 1234 0 $0 _0 + 0 123 0 0 +-- Iteration 3 -- +1 1 1 + 1 u 1 1 + 1 1 1 + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 4 -- +1 1 0 + 1 u 0 1 + 1 1 0 + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt new file mode 100644 index 000000000..381e67c33 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation16_64bit.phpt @@ -0,0 +1,112 @@ +--TEST-- +Test vfprintf() function : usage variations - unsigned formats with signed and other types of values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different unsigned formats from the above $format array +// and with signed and other types of values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : unsigned formats and signed & other types of values *** + +-- Iteration 1 -- +2 0 10 + 123456 u 1234 20000000000 + 2000000000000 22000000000000 12345 + 12 18446744073709551604 18446744073709428160 _3 + 10 123456 2 0 +-- Iteration 2 -- +0 0 0 + 123 u 18446744073709551493 123 + 0 0 0 + 1234 0 $0 _0 + 0 123 0 0 +-- Iteration 3 -- +1 1 1 + 1 u 1 1 + 1 1 1 + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 4 -- +1 1 0 + 1 u 0 1 + 1 1 0 + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation17.phpt b/ext/standard/tests/strings/vfprintf_variation17.phpt new file mode 100644 index 000000000..871ae98d8 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation17.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test vfprintf() function : usage variations - scientific formats with scientific values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : scientific formats and scientific values *** + +-- Iteration 1 -- +0.000000e+0 +1.000000e+0 1.000000e+3 +-- Iteration 2 -- +2.200000e+2 e 1.000000e+1 1.000000e+10 +-- Iteration 3 -- +-2.2000e+13 1.0000e+21 1.2000e+2 +-- Iteration 4 -- +#########1.000000e+1 1.000000e+2 $$$$$$$$-1.000000e+3 _________1.000000e+2 +-- Iteration 5 -- +1.000000e+3 2.000000e+3 3.000000e+3 4.000000e+3 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation18.phpt b/ext/standard/tests/strings/vfprintf_variation18.phpt new file mode 100644 index 000000000..76168621c --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation18.phpt @@ -0,0 +1,107 @@ +--TEST-- +Test vfprintf() function : usage variations - scientific formats with non-scientific values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different scientific formats from the above $format array +// and with non-scientific values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : scientific formats and non-scientific values *** + +-- Iteration 1 -- +2.200000e+0 +2.000000e-1 1.020000e+1 + 1.234562e+5 e -1.234679e+3 1.234679e+3 + 2.0000e+1 2.1220e+2 -4.110000e+11 2.2120e+3 + 1.234578e+4 1.200000e+1 -1.200000e+1 -1.234562e+5 + 1.020000e+1 1.234562e+5 2.200000e+0 2.000000e-1 +-- Iteration 2 -- +0.000000e+0 +0.000000e+0 0.000000e+0 + 1.230000e+2 e -1.230000e+2 1.230000e+2 + 0.0000e+0 0.0000e+0 1.234560e+5 0.0000e+0 + 1.234000e+3 0.000000e+0 0.000000e+0 0.000000e+0 + 0.000000e+0 1.230000e+2 0.000000e+0 0.000000e+0 +-- Iteration 3 -- +1.000000e+0 +1.000000e+0 1.000000e+0 + 1.000000e+0 e 1.000000e+0 1.000000e+0 + 1.0000e+0 1.0000e+0 1.000000e+0 1.0000e+0 + 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 + 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 +-- Iteration 4 -- +1.000000e+0 +1.000000e+0 0.000000e+0 + 1.000000e+0 e 0.000000e+0 1.000000e+0 + 1.0000e+0 0.0000e+0 1.000000e+0 0.0000e+0 + 0.000000e+0 1.000000e+0 1.000000e+0 0.000000e+0 + 0.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation19.phpt b/ext/standard/tests/strings/vfprintf_variation19.phpt new file mode 100644 index 000000000..7ee01a97e --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation19.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vfprintf() function : usage variations - with whitespaces in format strings +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : with white spaces in format strings *** + +-- Iteration 1 -- +111 222 333 +-- Iteration 2 -- +1.100000 0.200000 -0.600000 +-- Iteration 3 -- +1.120000 -1.130000 0.230000 +-- Iteration 4 -- +1 10 11 +-- Iteration 5 -- +A B C +-- Iteration 6 -- +2.000000e+1 2.000000e-1 -2.000000e+1 +-- Iteration 7 -- +4294967285 22 33 +-- Iteration 8 -- +12 37777777755 23 +-- Iteration 9 -- +11 ffffffde 33 +-- Iteration 10 -- +11 FFFFFFDE 33 +-- Iteration 11 -- +2.000000E+1 2.000000E-1 -2.000000E+1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt new file mode 100644 index 000000000..58810a811 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation19_64bit.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vfprintf() function : usage variations - with whitespaces in format strings +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : with white spaces in format strings *** + +-- Iteration 1 -- +111 222 333 +-- Iteration 2 -- +1.100000 0.200000 -0.600000 +-- Iteration 3 -- +1.120000 -1.130000 0.230000 +-- Iteration 4 -- +1 10 11 +-- Iteration 5 -- +A B C +-- Iteration 6 -- +2.000000e+1 2.000000e-1 -2.000000e+1 +-- Iteration 7 -- +18446744073709551605 22 33 +-- Iteration 8 -- +12 1777777777777777777755 23 +-- Iteration 9 -- +11 ffffffffffffffde 33 +-- Iteration 10 -- +11 FFFFFFFFFFFFFFDE 33 +-- Iteration 11 -- +2.000000E+1 2.000000E-1 -2.000000E+1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation20.phpt b/ext/standard/tests/strings/vfprintf_variation20.phpt new file mode 100644 index 000000000..cd348d835 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation20.phpt @@ -0,0 +1,175 @@ +--TEST-- +Test vfprintf() function : usage variations - unexpected values for the format argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new sample(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource data +/*26*/ $file_handle +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +fprintf($fp, "\n*** Testing vprintf() with with unexpected values for format argument ***\n"); + +$counter = 1; +foreach( $values as $value ) { + fprintf( $fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $value, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECTF-- +*** Testing vfprintf() : with unexpected values for format argument *** + +Notice: Array to string conversion in %s on line %d + +Notice: Array to string conversion in %s on line %d + +Notice: Array to string conversion in %s on line %d + +Notice: Array to string conversion in %s on line %d + +Notice: Array to string conversion in %s on line %d + +*** Testing vprintf() with with unexpected values for format argument *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +1 +-- Iteration 3 -- +12345 +-- Iteration 4 -- +-2345 +-- Iteration 5 -- +10.5 +-- Iteration 6 -- +-10.5 +-- Iteration 7 -- +101234567000 +-- Iteration 8 -- +1.07654321E-9 +-- Iteration 9 -- +0.5 +-- Iteration 10 -- +Array +-- Iteration 11 -- +Array +-- Iteration 12 -- +Array +-- Iteration 13 -- +Array +-- Iteration 14 -- +Array +-- Iteration 15 -- + +-- Iteration 16 -- + +-- Iteration 17 -- +1 +-- Iteration 18 -- + +-- Iteration 19 -- +1 +-- Iteration 20 -- + +-- Iteration 21 -- + +-- Iteration 22 -- + +-- Iteration 23 -- +object +-- Iteration 24 -- + +-- Iteration 25 -- + +-- Iteration 26 -- +Resource id #%d +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation21.phpt b/ext/standard/tests/strings/vfprintf_variation21.phpt new file mode 100644 index 000000000..387a3b96f --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation21.phpt @@ -0,0 +1,167 @@ +--TEST-- +Test vfprintf() function : usage variations - unexpected values for args argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing vfprintf() : with unexpected values for args argument *** + +Warning: vfprintf(): Too few arguments in %s on line %d + +Warning: vfprintf(): Too few arguments in %s on line %d + +Warning: vfprintf(): Too few arguments in %s on line %d + +Warning: vfprintf(): Too few arguments in %s on line %d + +Warning: vfprintf(): Too few arguments in %s on line %d + +*** Testing vprintf() with unexpected values for args argument *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +1 +-- Iteration 3 -- +12345 +-- Iteration 4 -- +-2345 +-- Iteration 5 -- +10.5 +-- Iteration 6 -- +-10.5 +-- Iteration 7 -- +101234567000 +-- Iteration 8 -- +1.07654321E-9 +-- Iteration 9 -- +0.5 +-- Iteration 10 -- + +-- Iteration 11 -- + +-- Iteration 12 -- +1 +-- Iteration 13 -- + +-- Iteration 14 -- +1 +-- Iteration 15 -- + +-- Iteration 16 -- + +-- Iteration 17 -- + +-- Iteration 18 -- +string +-- Iteration 19 -- +string +-- Iteration 20 -- + +-- Iteration 21 -- + +-- Iteration 22 -- + +-- Iteration 23 -- +Resource id #%d +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation3.phpt b/ext/standard/tests/strings/vfprintf_variation3.phpt new file mode 100644 index 000000000..02535cefb --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation3.phpt @@ -0,0 +1,87 @@ +--TEST-- +Test vfprintf() function : usage variations - int formats with int values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : int formats with int values *** + +-- Iteration 1 -- +0 +-- Iteration 2 -- +-1 1 +-- Iteration 3 -- +2147483647 d, 2147483640 -2147483640 +-- Iteration 4 -- + 123456 12345678 -1234567 1234567 +-- Iteration 5 -- +111 2222 333333 44444444 +-- Iteration 6 -- +4667 4011 83 10 +-- Iteration 7 -- +%-5678 d +-- Iteration 8 -- +1 2 3 4 +===DONE=== + diff --git a/ext/standard/tests/strings/vfprintf_variation4.phpt b/ext/standard/tests/strings/vfprintf_variation4.phpt new file mode 100644 index 000000000..32382bd79 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation4.phpt @@ -0,0 +1,113 @@ +--TEST-- +Test vfprintf() function : usage variations - int formats with non-integer values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different int formats from the above $format array +// and with non-int values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : int formats and non-integer values *** + +-- Iteration 1 -- +2 +0 10 + 123456 d -1234 1234 + -1474836480 200000 4000 22000000 + 12345 12 -12 -123456 + 10 123456 2 0 +-- Iteration 2 -- +0 +0 0 + 123 d -123 123 + 0 0 123456 0000 + 1234 0 $0 _0 + 0 123 0 0 +-- Iteration 3 -- +1 +1 1 + 1 d 1 1 + 1 1 1 0001 + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 4 -- +1 +1 0 + 1 d 0 1 + 1 0 1 0000 + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt b/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt new file mode 100644 index 000000000..f7038ff76 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation4_64bit.phpt @@ -0,0 +1,113 @@ +--TEST-- +Test vfprintf() function : usage variations - int formats with non-integer values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different int formats from the above $format array +// and with non-int values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : int formats and non-integer values *** + +-- Iteration 1 -- +2 +0 10 + 123456 d -1234 1234 + 20000000000 200000 4000 22000000 + 12345 12 -12 -123456 + 10 123456 2 0 +-- Iteration 2 -- +0 +0 0 + 123 d -123 123 + 0 0 123456 0000 + 1234 0 $0 _0 + 0 123 0 0 +-- Iteration 3 -- +1 +1 1 + 1 d 1 1 + 1 1 1 0001 + #1 1 $1 _1 + 1 1 1 1 +-- Iteration 4 -- +1 +1 0 + 1 d 0 1 + 1 0 1 0000 + #0 1 $1 _0 + 0 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation5.phpt b/ext/standard/tests/strings/vfprintf_variation5.phpt new file mode 100644 index 000000000..8a27eea31 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation5.phpt @@ -0,0 +1,85 @@ +--TEST-- +Test vfprintf() function : usage variations - float formats with float values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vfprintf() : int formats with float values *** + +-- Iteration 1 -- +0.000000 +-- Iteration 2 -- +-0.100000 0.100000 10.000001 +-- Iteration 3 -- +2147483649.000000 f, 2147483640.000000 -2147483640.000000 +-- Iteration 4 -- +200000.0000 0.0000 -200000.000000 -0.0000 +-- Iteration 5 -- +20000.000000 -1999999999999999879418332743206357172224.000000 0.000000 20000000000000000000.000000 +-- Iteration 6 -- +4667.000000 4011.000000 83.000000 10.000000 +-- Iteration 7 -- +%-5678.567800 f +-- Iteration 8 -- +1.110000 2.220000 3.330000 4.440000 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation6.phpt b/ext/standard/tests/strings/vfprintf_variation6.phpt new file mode 100644 index 000000000..6b5425d5c --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation6.phpt @@ -0,0 +1,108 @@ +--TEST-- +Test vfprintf() function : usage variations - float formats with non-float values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different float formats from the above $format array +// and with non-float values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : float formats and non-float values *** + +-- Iteration 1 -- +2.000000 -2.000000 2.000000 + 123456.000000 f -12346789.000000 12346789.000000 + 123200.0000 20000.0000 -40000.000000 22212.0000 + 12345780.000000 1211111.000000 -12111111.000000 -12345634.000000 + 2.000000 123456.000000 2.000000 -2.000000 +-- Iteration 2 -- +0.000000 +0.000000 0.000000 + 123.000000 f -123.000000 123.000000 + 0.0000 0.0000 123456.000000 0.0000 + 1234.000000 0.000000 0.000000 0.000000 + 0.000000 123.000000 0.000000 0.000000 +-- Iteration 3 -- +1.000000 +1.000000 1.000000 + 1.000000 f 1.000000 1.000000 + 1.0000 1.0000 1.000000 1.0000 + 1.000000 1.000000 1.000000 1.000000 + 1.000000 1.000000 1.000000 1.000000 +-- Iteration 4 -- +1.000000 +1.000000 0.000000 + 1.000000 f 0.000000 1.000000 + 1.0000 0.0000 1.000000 0.0000 + 0.000000 1.000000 1.000000 0.000000 + 0.000000 1.000000 1.000000 1.000000 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation7.phpt b/ext/standard/tests/strings/vfprintf_variation7.phpt new file mode 100644 index 000000000..a206fd869 Binary files /dev/null and b/ext/standard/tests/strings/vfprintf_variation7.phpt differ diff --git a/ext/standard/tests/strings/vfprintf_variation8.phpt b/ext/standard/tests/strings/vfprintf_variation8.phpt new file mode 100644 index 000000000..cda05c4d7 --- /dev/null +++ b/ext/standard/tests/strings/vfprintf_variation8.phpt @@ -0,0 +1,111 @@ +--TEST-- +Test vfprintf() function : usage variations - string formats with non-string values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +/* creating dumping file */ +$data_file = dirname(__FILE__) . '/dump.txt'; +if (!($fp = fopen($data_file, 'wt'))) + return; + +// looping to test vfprintf() with different string formats from the above $format array +// and with non-string values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + fprintf($fp, "\n-- Iteration %d --\n",$counter); + vfprintf($fp, $formats, $args); + $counter++; +} + +fclose($fp); +print_r(file_get_contents($data_file)); +echo "\n"; + +unlink($data_file); + +?> +===DONE=== +--EXPECT-- +*** Testing vfprintf() : string formats and non-string values *** + +-- Iteration 1 -- +2.2 0.2 10.2 + 123456.234 s -1234.6789 1234.6789 + 2123 2765 -27654321000 1234 + 12.000000011111 -12.00000111111 -123456.234 3.33 + 10.2 123456.234 2.2 0.2 +-- Iteration 2 -- +2 -2 2 + 123456 s -12346789 12346789 + 1232 2000 -40000 2221 + 12345780 1211111 -12111111 -12345634 + 2 123456 2 -2 +-- Iteration 3 -- +Array Array Array + Array s Array Array + Arra Arra Array Arra + Array Array Array Array + Array Array Array Array +-- Iteration 4 -- +1 1 + 1 s 1 + 1 0001 0000 + #0 1 $1 _0 + 1 1 1 +===DONE=== diff --git a/ext/standard/tests/strings/vfprintf_variation9.phpt b/ext/standard/tests/strings/vfprintf_variation9.phpt new file mode 100644 index 000000000..d10c8aed5 Binary files /dev/null and b/ext/standard/tests/strings/vfprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vprintf_basic1.phpt b/ext/standard/tests/strings/vprintf_basic1.phpt new file mode 100644 index 000000000..7f31f783e --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic1.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test vprintf() function : basic functionality - string format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using string format *** +one +int(3) +one two +int(7) +one two three +int(13) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic2.phpt b/ext/standard/tests/strings/vprintf_basic2.phpt new file mode 100644 index 000000000..cdf6c2d83 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic2.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test vprintf() function : basic functionality - integer format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using integer format *** +111 +int(3) +111 222 +int(7) +111 222 333 +int(11) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic3.phpt b/ext/standard/tests/strings/vprintf_basic3.phpt new file mode 100644 index 000000000..966ea56f7 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic3.phpt @@ -0,0 +1,66 @@ +--TEST-- +Test vprintf() function : basic functionality - float format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using float format *** +11.110000 +int(9) +11.110000 +int(9) +11.110000 22.220000 +int(19) +11.110000 22.220000 +int(19) +11.110000 22.220000 33.330000 +int(29) +11.110000 22.220000 33.330000 +int(29) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic4.phpt b/ext/standard/tests/strings/vprintf_basic4.phpt new file mode 100644 index 000000000..89494e121 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic4.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test vprintf() function : basic functionality - bool format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using bool format *** +1 +int(1) +1 0 +int(3) +1 0 1 +int(5) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic5.phpt b/ext/standard/tests/strings/vprintf_basic5.phpt new file mode 100644 index 000000000..e999417bf --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic5.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test vprintf() function : basic functionality - char format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using char format *** +A +int(1) +A B +int(3) +A B C +int(5) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic6.phpt b/ext/standard/tests/strings/vprintf_basic6.phpt new file mode 100644 index 000000000..7f1bbd1dd --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic6.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test vprintf() function : basic functionality - exponential format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using exponential format *** +1.000000e+3 +int(11) +1.000000e+3 2.000000e+3 +int(23) +1.000000e+3 2.000000e+3 3.000000e+3 +int(35) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic7.phpt b/ext/standard/tests/strings/vprintf_basic7.phpt new file mode 100644 index 000000000..fdf90fd47 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic7.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test vprintf() function : basic functionality - unsigned format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using unsigned format *** +4294966185 +int(10) +4294966185 4293732729 +int(21) +4294966185 4293732729 4292621864 +int(32) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic7_64bit.phpt b/ext/standard/tests/strings/vprintf_basic7_64bit.phpt new file mode 100644 index 000000000..32aa33889 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic7_64bit.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test vprintf() function : basic functionality - unsigned format +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing vprintf() : basic functionality - using unsigned format *** +18446744073709550505 +int(20) +18446744073709550505 18446744073708317049 +int(41) +18446744073709550505 18446744073708317049 18446744073707206184 +int(62) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic8.phpt b/ext/standard/tests/strings/vprintf_basic8.phpt new file mode 100644 index 000000000..91c6dd782 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic8.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test vprintf() function : basic functionality - octal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using octal format *** +21 +int(2) +21 347 +int(6) +21 347 567 +int(10) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_basic9.phpt b/ext/standard/tests/strings/vprintf_basic9.phpt new file mode 100644 index 000000000..4aa12a080 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_basic9.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test vprintf() function : basic functionality - hexadecimal format +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : basic functionality - using hexadecimal format *** +b +int(1) +B +int(1) +b 84 +int(4) +B 84 +int(4) +b 84 b1 +int(7) +B 84 B1 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_error.phpt b/ext/standard/tests/strings/vprintf_error.phpt new file mode 100644 index 000000000..1be1613e1 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test vprintf() function : error conditions +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing vprintf() : error conditions *** + +-- Testing vprintf() function with Zero arguments -- + +Warning: Wrong parameter count for vprintf() in %s on line %d +bool(false) + +-- Testing vprintf() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for vprintf() in %s on line %d +bool(false) + +-- testing vprintf() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for vprintf() in %s on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation1.phpt b/ext/standard/tests/strings/vprintf_variation1.phpt new file mode 100644 index 000000000..18f314f28 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation1.phpt @@ -0,0 +1,219 @@ +--TEST-- +Test vprintf() function : usage variations - unexpected values for the format argument +--FILE-- + 'red', 'item' => 'pen'), + + // null data +/*15*/ NULL, + null, + + // boolean data +/*17*/ true, + false, + TRUE, + FALSE, + + // empty data +/*21*/ "", + '', + + // object data +/*23*/ new sample(), + + // undefined data +/*24*/ @$undefined_var, + + // unset data +/*25*/ @$unset_var, + + // resource data +/*26*/ $file_handle +); + +// loop through each element of the array for format + +$counter = 1; +foreach($values as $value) { + echo "\n -- Iteration $counter --\n"; + $result = vprintf($value,$args); + echo "\n"; + var_dump($result); + $counter++; + +}; + +// closing the resource +fclose($file_handle); + +?> +===DONE=== +--EXPECTF-- +*** Testing vprintf() : with unexpected values for format argument *** + + -- Iteration 1 -- +0 +int(1) + + -- Iteration 2 -- +1 +int(1) + + -- Iteration 3 -- +12345 +int(5) + + -- Iteration 4 -- +-2345 +int(5) + + -- Iteration 5 -- +10.5 +int(4) + + -- Iteration 6 -- +-10.5 +int(5) + + -- Iteration 7 -- +101234567000 +int(12) + + -- Iteration 8 -- +1.07654321E-9 +int(13) + + -- Iteration 9 -- +0.5 +int(3) + + -- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + + -- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + + -- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + + -- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + + -- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +Array +int(5) + + -- Iteration 15 -- + +int(0) + + -- Iteration 16 -- + +int(0) + + -- Iteration 17 -- +1 +int(1) + + -- Iteration 18 -- + +int(0) + + -- Iteration 19 -- +1 +int(1) + + -- Iteration 20 -- + +int(0) + + -- Iteration 21 -- + +int(0) + + -- Iteration 22 -- + +int(0) + + -- Iteration 23 -- +object +int(6) + + -- Iteration 24 -- + +int(0) + + -- Iteration 25 -- + +int(0) + + -- Iteration 26 -- +Resource id #%d +int(%d) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation10.phpt b/ext/standard/tests/strings/vprintf_variation10.phpt new file mode 100644 index 000000000..d63738e72 Binary files /dev/null and b/ext/standard/tests/strings/vprintf_variation10.phpt differ diff --git a/ext/standard/tests/strings/vprintf_variation11.phpt b/ext/standard/tests/strings/vprintf_variation11.phpt new file mode 100644 index 000000000..f803e96c8 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation11.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vprintf() function : usage variations - octal formats with octal values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : octal formats with octal values *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +37777777777 1 +int(14) + +-- Iteration 3 -- +20000000000 o, 17777777777 20000000001 +int(38) + +-- Iteration 4 -- + 37776543211 0000 +int(38) + +-- Iteration 5 -- +111 2222 37777444445 37733333334 +int(32) + +-- Iteration 6 -- +11073 7653 123 12 +int(17) + +-- Iteration 7 -- +% %o o +int(6) + +-- Iteration 8 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt new file mode 100644 index 000000000..c92ef088f --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vprintf() function : usage variations - octal formats with octal values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : octal formats with octal values *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +1777777777777777777777 1 +int(25) + +-- Iteration 3 -- +1777777777760000000000 o, 17777777777 1777777777760000000001 +int(60) + +-- Iteration 4 -- + 1777777777777776543211 0000 +int(49) + +-- Iteration 5 -- +111 2222 1777777777777777444445 1777777777777733333334 +int(54) + +-- Iteration 6 -- +11073 7653 123 12 +int(17) + +-- Iteration 7 -- +% %o o +int(6) + +-- Iteration 8 -- +1 2 3 4 +int(7) +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/strings/vprintf_variation12.phpt b/ext/standard/tests/strings/vprintf_variation12.phpt new file mode 100644 index 000000000..99938502d --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation12.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vprintf() function : usage variations - octal formats with non-octal values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different octal formats from the above $format array +// and with non-octal values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : octal formats and non-octal values *** + +-- Iteration 1 -- +2 0 12 + 361100 o 37777775456 2322 + + 30071 14 37777777764 37777416700 + 12 361100 2 0 +int(116) + +-- Iteration 2 -- +2 37777777776 2 + 361100 o 37720715133 57062645 + + 57060664 4475347 37721631371 37720717336 + 2 361100 2 37777777776 +int(146) + +-- Iteration 3 -- +0 0 0 + 173 o 37777777605 173 + + 2322 0 $0 _0 + 0 173 0 0 +int(88) + +-- Iteration 4 -- +1 1 1 + 1 o 1 1 + + #1 1 $1 _1 + 1 1 1 1 +int(75) + +-- Iteration 5 -- +1 1 0 + 1 o 0 1 + + #0 1 $1 _0 + 0 1 1 1 +int(75) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation12_64bit.phpt b/ext/standard/tests/strings/vprintf_variation12_64bit.phpt new file mode 100644 index 000000000..32dc01bfc --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation12_64bit.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test vprintf() function : usage variations - octal formats with non-octal values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different octal formats from the above $format array +// and with non-octal values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECTF-- +*** Testing vprintf() : octal formats and non-octal values *** + +-- Iteration 1 -- +2 0 12 + 361100 o 1777777777777777775456 2322 + + 30071 14 1777777777777777777764 1777777777777777416700 + 12 361100 2 0 +int(149) + +-- Iteration 2 -- +2 1777777777777777777776 2 + 361100 o 1777777777777720715133 57062645 + + 57060664 4475347 1777777777777721631371 1777777777777720717336 + 2 361100 2 1777777777777777777776 +int(201) + +-- Iteration 3 -- +0 0 0 + 173 o 1777777777777777777605 173 + + 2322 0 $0 _0 + 0 173 0 0 +int(99) + +-- Iteration 4 -- +1 1 1 + 1 o 1 1 + + #1 1 $1 _1 + 1 1 1 1 +int(75) + +-- Iteration 5 -- +1 1 0 + 1 o 0 1 + + #0 1 $1 _0 + 0 1 1 1 +int(75) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation13.phpt b/ext/standard/tests/strings/vprintf_variation13.phpt new file mode 100644 index 000000000..6b629c851 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation13.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vprintf() function : usage variations - hexa formats with hexa values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : hexa formats with hexa values *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +ffffffff 1 22 +int(13) + +-- Iteration 3 -- +7fffffff x, 7000000 80000000 +int(28) + +-- Iteration 4 -- + ffed2979 0000 +int(35) + +-- Iteration 5 -- +#1 2222 1b6db bbbbbbbc +int(22) + +-- Iteration 6 -- +123b fab 0 a +int(12) + +-- Iteration 7 -- +%34 x +int(5) + +-- Iteration 8 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt new file mode 100644 index 000000000..8cf768b77 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt @@ -0,0 +1,94 @@ +--TEST-- +Test vprintf() function : usage variations - hexa formats with hexa values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : hexa formats with hexa values *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +ffffffffffffffff 1 22 +int(21) + +-- Iteration 3 -- +7fffffff x, 7000000 ffffffff80000000 +int(36) + +-- Iteration 4 -- + ffffffffffed2979 0000 +int(43) + +-- Iteration 5 -- +#1 2222 1b6db ffffffffbbbbbbbc +int(30) + +-- Iteration 6 -- +123b fab 0 a +int(12) + +-- Iteration 7 -- +%34 x +int(5) + +-- Iteration 8 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation14.phpt b/ext/standard/tests/strings/vprintf_variation14.phpt new file mode 100644 index 000000000..bbb15e149 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation14.phpt @@ -0,0 +1,126 @@ +--TEST-- +Test vprintf() function : usage variations - hexa formats with non-hexa values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different hexa formats from the above $format array +// and with non-hexa values from the above $args_array array + +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : hexa formats and non-hexa values *** + +-- Iteration 1 -- +2 0 a + 1e240 x fffffb2e 4d2 + + 3039 c fffffff4 fffe1dc0 + a 1e240 2 0 +int(101) + +-- Iteration 2 -- +2 fffffffe 2 + 1e240 x ff439a5b bc65a5 + + bc61b4 127ae7 ff4732f9 ff439ede + 2 1e240 2 fffffffe +int(124) + +-- Iteration 3 -- +0 0 0 + 7b x ffffff85 7b + + 4d2 0 $0 _0 + 0 7b 0 0 +int(82) + +-- Iteration 4 -- +1 1 1 + 1 x 1 1 + + #1 1 $1 _1 + 1 1 1 1 +int(75) + +-- Iteration 5 -- +1 1 0 + 1 x 0 1 + + #0 1 $1 _0 + 0 1 1 1 +int(75) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation14_64bit.phpt b/ext/standard/tests/strings/vprintf_variation14_64bit.phpt new file mode 100644 index 000000000..51b2f477b --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation14_64bit.phpt @@ -0,0 +1,126 @@ +--TEST-- +Test vprintf() function : usage variations - hexa formats with non-hexa values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different hexa formats from the above $format array +// and with non-hexa values from the above $args_array array + +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : hexa formats and non-hexa values *** + +-- Iteration 1 -- +2 0 a + 1e240 x fffffffffffffb2e 4d2 + + 3039 c fffffffffffffff4 fffffffffffe1dc0 + a 1e240 2 0 +int(125) + +-- Iteration 2 -- +2 fffffffffffffffe 2 + 1e240 x ffffffffff439a5b bc65a5 + + bc61b4 127ae7 ffffffffff4732f9 ffffffffff439ede + 2 1e240 2 fffffffffffffffe +int(164) + +-- Iteration 3 -- +0 0 0 + 7b x ffffffffffffff85 7b + + 4d2 0 $0 _0 + 0 7b 0 0 +int(90) + +-- Iteration 4 -- +1 1 1 + 1 x 1 1 + + #1 1 $1 _1 + 1 1 1 1 +int(75) + +-- Iteration 5 -- +1 1 0 + 1 x 0 1 + + #0 1 $1 _0 + 0 1 1 1 +int(75) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation15.phpt b/ext/standard/tests/strings/vprintf_variation15.phpt new file mode 100644 index 000000000..97b1bc5c6 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation15.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test vprintf() function : usage variations - unsigned formats with unsigned values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : unsigned formats and unsigned values *** + +-- Iteration 1 -- +1234567 342391 0 +int(16) + +-- Iteration 2 -- +3755744308 u 1234 12345 +int(23) + +-- Iteration 3 -- + 1234000 2450319192 120 +int(25) + +-- Iteration 4 -- +#1 0 $0 10 +int(10) + +-- Iteration 5 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation15_64bit.phpt b/ext/standard/tests/strings/vprintf_variation15_64bit.phpt new file mode 100644 index 000000000..226f17572 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation15_64bit.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test vprintf() function : usage variations - unsigned formats with unsigned values +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing vprintf() : unsigned formats and unsigned values *** + +-- Iteration 1 -- +1234567 342391 0 +int(16) + +-- Iteration 2 -- +12345678900 u 1234 12345 +int(24) + +-- Iteration 3 -- + 1234000 0 120 +int(25) + +-- Iteration 4 -- +#1 0 $0 10 +int(10) + +-- Iteration 5 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation16.phpt b/ext/standard/tests/strings/vprintf_variation16.phpt new file mode 100644 index 000000000..8c3d66d02 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation16.phpt @@ -0,0 +1,109 @@ +--TEST-- +Test vprintf() function : usage variations - unsigned formats with signed and other types of values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different unsigned formats from the above $format array +// and with signed and other types of values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : unsigned formats and signed & other types of values *** + +-- Iteration 1 -- +2 0 10 + 123456 u 1234 2820130816 + 2840207360 1177509888 12345 + 12 4294967284 4294843840 _3 + 10 123456 2 0 +int(115) + +-- Iteration 2 -- +0 0 0 + 123 u 4294967173 123 + 0 0 0 + 1234 0 $0 _0 + 0 123 0 0 +int(88) + +-- Iteration 3 -- +1 1 1 + 1 u 1 1 + 1 1 1 + #1 1 $1 _1 + 1 1 1 1 +int(76) + +-- Iteration 4 -- +1 1 0 + 1 u 0 1 + 1 1 0 + #0 1 $1 _0 + 0 1 1 1 +int(76) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation16_64bit.phpt b/ext/standard/tests/strings/vprintf_variation16_64bit.phpt new file mode 100644 index 000000000..dab90d1e4 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation16_64bit.phpt @@ -0,0 +1,110 @@ +--TEST-- +Test vprintf() function : usage variations - unsigned formats with signed and other types of values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different unsigned formats from the above $format array +// and with signed and other types of values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : unsigned formats and signed & other types of values *** + +-- Iteration 1 -- +2 0 10 + 123456 u 1234 20000000000 + 2000000000000 22000000000000 12345 + 12 18446744073709551604 18446744073709428160 _3 + 10 123456 2 0 +int(143) + +-- Iteration 2 -- +0 0 0 + 123 u 18446744073709551493 123 + 0 0 0 + 1234 0 $0 _0 + 0 123 0 0 +int(98) + +-- Iteration 3 -- +1 1 1 + 1 u 1 1 + 1 1 1 + #1 1 $1 _1 + 1 1 1 1 +int(76) + +-- Iteration 4 -- +1 1 0 + 1 u 0 1 + 1 1 0 + #0 1 $1 _0 + 0 1 1 1 +int(76) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation17.phpt b/ext/standard/tests/strings/vprintf_variation17.phpt new file mode 100644 index 000000000..e2e853015 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation17.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test vsprintf() function : usage variations - scientific formats with scientific values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : scientific formats and scientific values *** + +-- Iteration 1 -- +0.000000e+0 +1.000000e+0 1.000000e+3 +int(36) + +-- Iteration 2 -- +2.200000e+2 e 1.000000e+1 1.000000e+10 +int(38) + +-- Iteration 3 -- +-2.2000e+13 1.0000e+21 1.2000e+2 +int(32) + +-- Iteration 4 -- +#########1.000000e+1 1.000000e+2 $$$$$$$$-1.000000e+3 _________1.000000e+2 +int(74) + +-- Iteration 5 -- +1.000000e+3 2.000000e+3 3.000000e+3 4.000000e+3 +int(47) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation18.phpt b/ext/standard/tests/strings/vprintf_variation18.phpt new file mode 100644 index 000000000..8b30ae78d --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation18.phpt @@ -0,0 +1,106 @@ +--TEST-- +Test vprintf() function : usage variations - scientific formats with non-scientific values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different scientific formats from the above $format array +// and with non-scientific values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : scientific formats and non-scientific values *** + +-- Iteration 1 -- +2.200000e+0 +2.000000e-1 1.020000e+1 + 1.234562e+5 e -1.234679e+3 1.234679e+3 + 2.0000e+1 2.1220e+2 -4.110000e+11 2.2120e+3 + 1.234578e+4 1.200000e+1 -1.200000e+1 -1.234562e+5 + 1.020000e+1 1.234562e+5 2.200000e+0 2.000000e-1 +int(232) + +-- Iteration 2 -- +0.000000e+0 +0.000000e+0 0.000000e+0 + 1.230000e+2 e -1.230000e+2 1.230000e+2 + 0.0000e+0 0.0000e+0 1.234560e+5 0.0000e+0 + 1.234000e+3 0.000000e+0 0.000000e+0 0.000000e+0 + 0.000000e+0 1.230000e+2 0.000000e+0 0.000000e+0 +int(228) + +-- Iteration 3 -- +1.000000e+0 +1.000000e+0 1.000000e+0 + 1.000000e+0 e 1.000000e+0 1.000000e+0 + 1.0000e+0 1.0000e+0 1.000000e+0 1.0000e+0 + 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 + 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 +int(227) + +-- Iteration 4 -- +1.000000e+0 +1.000000e+0 0.000000e+0 + 1.000000e+0 e 0.000000e+0 1.000000e+0 + 1.0000e+0 0.0000e+0 1.000000e+0 0.0000e+0 + 0.000000e+0 1.000000e+0 1.000000e+0 0.000000e+0 + 0.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0 +int(227) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation19.phpt b/ext/standard/tests/strings/vprintf_variation19.phpt new file mode 100644 index 000000000..a9288a163 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation19.phpt @@ -0,0 +1,104 @@ +--TEST-- +Test vprintf() function : usage variations - with whitespaces in format strings +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : with white spaces in format strings *** + +-- Iteration 1 -- +111 222 333 +int(13) + +-- Iteration 2 -- +1.100000 0.200000 -0.600000 +int(29) + +-- Iteration 3 -- +1.120000 -1.130000 0.230000 +int(29) + +-- Iteration 4 -- +1 10 11 +int(9) + +-- Iteration 5 -- +A B C +int(7) + +-- Iteration 6 -- +2.000000e+1 2.000000e-1 -2.000000e+1 +int(38) + +-- Iteration 7 -- +4294967285 22 33 +int(18) + +-- Iteration 8 -- +12 37777777755 23 +int(19) + +-- Iteration 9 -- +11 ffffffde 33 +int(16) + +-- Iteration 10 -- +11 FFFFFFDE 33 +int(16) + +-- Iteration 11 -- +2.000000E+1 2.000000E-1 -2.000000E+1 +int(38) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt new file mode 100644 index 000000000..d98199624 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt @@ -0,0 +1,104 @@ +--TEST-- +Test vprintf() function : usage variations - with whitespaces in format strings +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : with white spaces in format strings *** + +-- Iteration 1 -- +111 222 333 +int(13) + +-- Iteration 2 -- +1.100000 0.200000 -0.600000 +int(29) + +-- Iteration 3 -- +1.120000 -1.130000 0.230000 +int(29) + +-- Iteration 4 -- +1 10 11 +int(9) + +-- Iteration 5 -- +A B C +int(7) + +-- Iteration 6 -- +2.000000e+1 2.000000e-1 -2.000000e+1 +int(38) + +-- Iteration 7 -- +18446744073709551605 22 33 +int(28) + +-- Iteration 8 -- +12 1777777777777777777755 23 +int(30) + +-- Iteration 9 -- +11 ffffffffffffffde 33 +int(24) + +-- Iteration 10 -- +11 FFFFFFFFFFFFFFDE 33 +int(24) + +-- Iteration 11 -- +2.000000E+1 2.000000E-1 -2.000000E+1 +int(38) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation2.phpt b/ext/standard/tests/strings/vprintf_variation2.phpt new file mode 100644 index 000000000..63c3dfe39 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation2.phpt @@ -0,0 +1,202 @@ +--TEST-- +Test vprintf() function : usage variations - unexpected values for args argument +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing vprintf() : with unexpected values for args argument *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +1 +int(1) + +-- Iteration 3 -- +12345 +int(5) + +-- Iteration 4 -- +-2345 +int(5) + +-- Iteration 5 -- +10.5 +int(4) + +-- Iteration 6 -- +-10.5 +int(5) + +-- Iteration 7 -- +101234567000 +int(12) + +-- Iteration 8 -- +1.07654321E-9 +int(13) + +-- Iteration 9 -- +0.5 +int(3) + +-- Iteration 10 -- + +Warning: vprintf(): Too few arguments in %s on line %d + +bool(false) + +-- Iteration 11 -- + +Warning: vprintf(): Too few arguments in %s on line %d + +bool(false) + +-- Iteration 12 -- +1 +int(1) + +-- Iteration 13 -- + +int(0) + +-- Iteration 14 -- +1 +int(1) + +-- Iteration 15 -- + +int(0) + +-- Iteration 16 -- + +int(0) + +-- Iteration 17 -- + +int(0) + +-- Iteration 18 -- +string +int(6) + +-- Iteration 19 -- +string +int(6) + +-- Iteration 20 -- + +Warning: vprintf(): Too few arguments in %s on line %d + +bool(false) + +-- Iteration 21 -- + +Warning: vprintf(): Too few arguments in %s on line %d + +bool(false) + +-- Iteration 22 -- + +Warning: vprintf(): Too few arguments in %s on line %d + +bool(false) + +-- Iteration 23 -- +Resource id #%d +int(%d) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation3.phpt b/ext/standard/tests/strings/vprintf_variation3.phpt new file mode 100644 index 000000000..41c76487c --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation3.phpt @@ -0,0 +1,91 @@ +--TEST-- +Test vprintf() function : usage variations - int formats with int values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : int formats with int values *** + +-- Iteration 1 -- +0 +int(1) + +-- Iteration 2 -- +-1 1 +int(5) + +-- Iteration 3 -- +2147483647 d, 2147483640 -2147483640 +int(36) + +-- Iteration 4 -- + 123456 12345678 -1234567 1234567 +int(38) + +-- Iteration 5 -- +111 2222 333333 44444444 +int(24) + +-- Iteration 6 -- +4667 4011 83 10 +int(15) + +-- Iteration 7 -- +%-5678 d +int(8) + +-- Iteration 8 -- +1 2 3 4 +int(7) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation4.phpt b/ext/standard/tests/strings/vprintf_variation4.phpt new file mode 100644 index 000000000..8d56fc9cb --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation4.phpt @@ -0,0 +1,110 @@ +--TEST-- +Test vprintf() function : usage variations - int formats with non-integer values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different int formats from the above $format array +// and with non-int values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : int formats and non-integer values *** + +-- Iteration 1 -- +2 +0 10 + 123456 d -1234 1234 + -1474836480 200000 4000 22000000 + 12345 12 -12 -123456 + 10 123456 2 0 +int(112) + +-- Iteration 2 -- +0 +0 0 + 123 d -123 123 + 0 0 123456 0000 + 1234 0 $0 _0 + 0 123 0 0 +int(92) + +-- Iteration 3 -- +1 +1 1 + 1 d 1 1 + 1 1 1 0001 + #1 1 $1 _1 + 1 1 1 1 +int(81) + +-- Iteration 4 -- +1 +1 0 + 1 d 0 1 + 1 0 1 0000 + #0 1 $1 _0 + 0 1 1 1 +int(81) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation4_64bit.phpt b/ext/standard/tests/strings/vprintf_variation4_64bit.phpt new file mode 100644 index 000000000..f81dba32a --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation4_64bit.phpt @@ -0,0 +1,110 @@ +--TEST-- +Test vprintf() function : usage variations - int formats with non-integer values +--SKIPIF-- + +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different int formats from the above $format array +// and with non-int values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : int formats and non-integer values *** + +-- Iteration 1 -- +2 +0 10 + 123456 d -1234 1234 + 20000000000 200000 4000 22000000 + 12345 12 -12 -123456 + 10 123456 2 0 +int(112) + +-- Iteration 2 -- +0 +0 0 + 123 d -123 123 + 0 0 123456 0000 + 1234 0 $0 _0 + 0 123 0 0 +int(92) + +-- Iteration 3 -- +1 +1 1 + 1 d 1 1 + 1 1 1 0001 + #1 1 $1 _1 + 1 1 1 1 +int(81) + +-- Iteration 4 -- +1 +1 0 + 1 d 0 1 + 1 0 1 0000 + #0 1 $1 _0 + 0 1 1 1 +int(81) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation5.phpt b/ext/standard/tests/strings/vprintf_variation5.phpt new file mode 100644 index 000000000..6388f284c --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation5.phpt @@ -0,0 +1,91 @@ +--TEST-- +Test vprintf() function : usage variations - float formats with float values +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing vprintf() : int formats with float values *** + +-- Iteration 1 -- +0.000000 +int(8) + +-- Iteration 2 -- +-0.100000 0.100000 10.000001 +int(28) + +-- Iteration 3 -- +2147483649.000000 f, 2147483640.000000 -2147483640.000000 +int(57) + +-- Iteration 4 -- +200000.0000 0.0000 -200000.000000 -0.0000 +int(45) + +-- Iteration 5 -- +20000.000000 -1999999999999999879418332743206357172224.000000 0.000000 20000000000000000000.000000 +int(98) + +-- Iteration 6 -- +4667.000000 4011.000000 83.000000 10.000000 +int(43) + +-- Iteration 7 -- +%-5678.567800 f +int(15) + +-- Iteration 8 -- +1.110000 2.220000 3.330000 4.440000 +int(35) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation6.phpt b/ext/standard/tests/strings/vprintf_variation6.phpt new file mode 100644 index 000000000..265948b56 --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation6.phpt @@ -0,0 +1,106 @@ +--TEST-- +Test vprintf() function : usage variations - float formats with non-float values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different float formats from the above $format array +// and with non-float values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : float formats and non-float values *** + +-- Iteration 1 -- +2.000000 -2.000000 2.000000 + 123456.000000 f -12346789.000000 12346789.000000 + 123200.0000 20000.0000 -40000.000000 22212.0000 + 12345780.000000 1211111.000000 -12111111.000000 -12345634.000000 + 2.000000 123456.000000 2.000000 -2.000000 +int(244) + +-- Iteration 2 -- +0.000000 +0.000000 0.000000 + 123.000000 f -123.000000 123.000000 + 0.0000 0.0000 123456.000000 0.0000 + 1234.000000 0.000000 0.000000 0.000000 + 0.000000 123.000000 0.000000 0.000000 +int(196) + +-- Iteration 3 -- +1.000000 +1.000000 1.000000 + 1.000000 f 1.000000 1.000000 + 1.0000 1.0000 1.000000 1.0000 + 1.000000 1.000000 1.000000 1.000000 + 1.000000 1.000000 1.000000 1.000000 +int(179) + +-- Iteration 4 -- +1.000000 +1.000000 0.000000 + 1.000000 f 0.000000 1.000000 + 1.0000 0.0000 1.000000 0.0000 + 0.000000 1.000000 1.000000 0.000000 + 0.000000 1.000000 1.000000 1.000000 +int(179) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation7.phpt b/ext/standard/tests/strings/vprintf_variation7.phpt new file mode 100644 index 000000000..ef2bfecdf Binary files /dev/null and b/ext/standard/tests/strings/vprintf_variation7.phpt differ diff --git a/ext/standard/tests/strings/vprintf_variation8.phpt b/ext/standard/tests/strings/vprintf_variation8.phpt new file mode 100644 index 000000000..c0558ff6b --- /dev/null +++ b/ext/standard/tests/strings/vprintf_variation8.phpt @@ -0,0 +1,109 @@ +--TEST-- +Test vprintf() function : usage variations - string formats with non-string values +--FILE-- +"12twelve"), + array("3"), array("4"), array("1"), array("2") ), + + // array of boolean data + array( true, TRUE, false, + TRUE, 0, FALSE, 1, + true, false, TRUE, FALSE, + 0, 1, 1, 0, + 1, TRUE, 0, FALSE), + +); + +// looping to test vprintf() with different string formats from the above $format array +// and with non-string values from the above $args_array array +$counter = 1; +foreach($args_array as $args) { + echo "\n-- Iteration $counter --\n"; + $result = vprintf($formats, $args); + echo "\n"; + var_dump($result); + $counter++; +} + +?> +===DONE=== +--EXPECT-- +*** Testing vprintf() : string formats and non-string values *** + +-- Iteration 1 -- +2.2 0.2 10.2 + 123456.234 s -1234.6789 1234.6789 + 2123 2765 -27654321000 1234 + 12.000000011111 -12.00000111111 -123456.234 3.33 + 10.2 123456.234 2.2 0.2 +int(172) + +-- Iteration 2 -- +2 -2 2 + 123456 s -12346789 12346789 + 1232 2000 -40000 2221 + 12345780 1211111 -12111111 -12345634 + 2 123456 2 -2 +int(132) + +-- Iteration 3 -- +Array Array Array + Array s Array Array + Arra Arra Array Arra + Array Array Array Array + Array Array Array Array +int(131) + +-- Iteration 4 -- +1 1 + 1 s 1 + 1 0001 0000 + #0 1 $1 _0 + 1 1 1 +int(81) +===DONE=== diff --git a/ext/standard/tests/strings/vprintf_variation9.phpt b/ext/standard/tests/strings/vprintf_variation9.phpt new file mode 100644 index 000000000..a7b513f63 Binary files /dev/null and b/ext/standard/tests/strings/vprintf_variation9.phpt differ diff --git a/ext/standard/tests/strings/vsprintf_variation15.phpt b/ext/standard/tests/strings/vsprintf_variation15.phpt index cedfe3f0e..bc1d78692 100644 --- a/ext/standard/tests/strings/vsprintf_variation15.phpt +++ b/ext/standard/tests/strings/vsprintf_variation15.phpt @@ -32,7 +32,7 @@ $formats = array( $args_array = array( array(1234567, 01234567, 0 ), array(12345678900, 12345678900, 1234, 12345), - array("1234000", 10e20, 1.2e2), + array("1234000", 10.1234567e5, 1.2e2), array(1, 0, 00, "10_"), array(3, 4, 1, 2) ); @@ -46,9 +46,9 @@ foreach($formats as $format) { $counter++; } -echo "Done"; ?> ---EXPECTF-- +===Done=== +--EXPECT-- *** Testing vsprintf() : unsigned formats and unsigned values *** -- Iteration 1 -- @@ -58,11 +58,11 @@ string(16) "1234567 342391 0" string(23) "3755744308 u 1234 12345" -- Iteration 3 -- -string(25) " 1234000 0 120" +string(25) " 1234000 1012345 120" -- Iteration 4 -- string(10) "#1 0 $0 10" -- Iteration 5 -- string(7) "1 2 3 4" -Done +===Done=== diff --git a/ext/standard/tests/strings/vsprintf_variation8.phpt b/ext/standard/tests/strings/vsprintf_variation8.phpt index 08f218486..f44eae2db 100644 --- a/ext/standard/tests/strings/vsprintf_variation8.phpt +++ b/ext/standard/tests/strings/vsprintf_variation8.phpt @@ -12,12 +12,14 @@ Test vsprintf() function : usage variations - string formats with non-string val * the '$format' and '$args' arguments of the function */ +error_reporting(E_ALL & ~E_NOTICE); + echo "*** Testing vsprintf() : string formats and non-string values ***\n"; // defining array of string formats $formats = '%s %+s %-s - %ls %Ls %4s %-4s + %ls %4s %-4s %10.4s %-10.4s %04s %04.4s %\'#2s %\'2s %\'$2s %\'_2s %3$s %4$s %1$s %2$s'; @@ -28,14 +30,14 @@ $args_array = array( // array of float values array(2.2, .2, 10.2, - 123456.234, 123456.234, -1234.6789, +1234.6789, - 2e10, +2e12, -4e11, 22e+12, + 123456.234, -1234.6789, +1234.6789, + 2.1234567e10, +2.7654321e10, -2.7654321e10, 2.1234567e10, 12345.780, 12.000000011111, -12.00000111111, -123456.234, 3.33, +4.44, 1.11,-2.22 ), - + // array of int values array(2, -2, +2, - 123456, 123456234, -12346789, +12346789, + 123456, -12346789, +12346789, 123200, +20000, -40000, 22212, 12345780, 1211111, -12111111, -12345634, 3, +4, 1,-2 ), @@ -43,14 +45,14 @@ $args_array = array( // different arrays array( array(0), array(1, 2), array(-1, -1), - array("123"), array('123'), array('-123'), array("-123"), + array("123"), array('-123'), array("-123"), array(true), array(false), array(TRUE), array(FALSE), array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"), array("3"), array("4"), array("1"), array("2") ), // array of boolean data array( true, TRUE, false, - TRUE, 0, FALSE, 1, + TRUE, FALSE, 1, true, false, TRUE, FALSE, 0, 1, 1, 0, 1, TRUE, 0, FALSE), @@ -66,36 +68,36 @@ foreach($args_array as $args) { $counter++; } -echo "Done"; ?> ---EXPECTF-- +===DONE=== +--EXPECT-- *** Testing vsprintf() : string formats and non-string values *** -- Iteration 1 -- -string(177) "2.2 0.2 10.2 - 123456.234 s -1234.6789 1234.6789 - 2000 2000 -400000000000 2200 +string(174) "2.2 0.2 10.2 + 123456.234 -1234.6789 1234.6789 + 2123 2765 -27654321000 2123 12345.78 12.000000011111 -12.00000111111 -123456.234 10.2 123456.234 2.2 0.2" -- Iteration 2 -- -string(132) "2 -2 2 - 123456 s -12346789 12346789 +string(130) "2 -2 2 + 123456 -12346789 12346789 1232 2000 -40000 2221 12345780 1211111 -12111111 -12345634 2 123456 2 -2" -- Iteration 3 -- -string(131) "Array Array Array - Array s Array Array +string(129) "Array Array Array + Array Array Array Arra Arra Array Arra Array Array Array Array Array Array Array Array" -- Iteration 4 -- -string(81) "1 1 - 1 s 1 +string(79) "1 1 + 1 1 1 0001 0000 #0 1 $1 _0 1 1 1" -Done +===DONE=== \ No newline at end of file diff --git a/ext/standard/tests/url/base64_decode_variation_001.phpt b/ext/standard/tests/url/base64_decode_variation_001.phpt index b01cd23e5..8734a96e0 100644 --- a/ext/standard/tests/url/base64_decode_variation_001.phpt +++ b/ext/standard/tests/url/base64_decode_variation_001.phpt @@ -18,150 +18,164 @@ echo "*** Testing base64_decode() : usage variations ***\n"; // Initialise function arguments not being substituted (if any) $strict = true; +//getting the resource +$file_handle = fopen(__FILE__, "r"); + //get an unset variable $unset_var = 10; unset ($unset_var); //array of values to iterate over -$values = array( - - // int data - 0, - 1, - 12345, - -2345, - - // float data - 10.5, - -10.5, - 10.1234567e10, - 10.7654321E-10, - .5, - - // array data - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // null data - NULL, - null, - - // boolean data - true, - false, - TRUE, - FALSE, - - // empty data - "", - '', - - // object data - new stdclass(), - - // undefined data - $undefined_var, - - // unset data - $unset_var, +$values = array ( + // int data + "0" => 0, + "1" => 1, + "12345" => 12345, + "-2345" => -2345, + + // float data + "10.5" => 10.5, + "-10.5" => -10.5, + "10.1234567e10" => 10.1234567e10, + "10.7654321E-10" => 10.7654321E-10, + ".5" => .5, + + // array data + "array()" => array(), + "array(0)" => array(0), + "array(1)" => array(1), + "array(1, 2)" => array(1, 2), + "array('color' => 'red', 'item' => 'pen'" => array('color' => 'red', 'item' => 'pen'), + + // null data + "NULL" => NULL, + "null" => null, + + // boolean data + "true" => true, + "false" => false, + "TRUE" => TRUE, + "FALSE" => FALSE, + + // empty data + "\"\"" => "", + "''" => '', + + // object data + "stdClass object" => new stdclass(), + + // undefined data + "undefined variable" => $undefined_var, + + // unset data + "unset variable" => $unset_var, + + // resource data + "resource" => $file_handle ); -// loop through each element of the array for str - -foreach($values as $value) { - echo "\nArg value $value \n"; - var_dump( base64_decode($value, $strict) ); +// loop through each element of the array for str argument + +foreach($values as $key=>$value) { + echo "\n-- Arg value $key --\n"; + $output = base64_decode($value, $strict); + + if (is_string($output)) { + var_dump(bin2hex($output)); + } else { + var_dump($output); + } }; -echo "Done"; ?> +===Done=== --EXPECTF-- *** Testing base64_decode() : usage variations *** -Error: 8 - Undefined variable: undefined_var, %s(63) -Error: 8 - Undefined variable: unset_var, %s(66) +Error: 8 - Undefined variable: undefined_var, %s(%d) +Error: 8 - Undefined variable: unset_var, %s(%d) -Arg value 0 +-- Arg value 0 -- string(0) "" -Arg value 1 +-- Arg value 1 -- string(0) "" -Arg value 12345 -string(3) "×mø" +-- Arg value 12345 -- +string(6) "d76df8" -Arg value -2345 +-- Arg value -2345 -- bool(false) -Arg value 10.5 +-- Arg value 10.5 -- bool(false) -Arg value -10.5 +-- Arg value -10.5 -- bool(false) -Arg value 101234567000 -string(9) "×MvߎzïM4" +-- Arg value 10.1234567e10 -- +string(18) "d74d76df8e7aef4d34" -Arg value 1.07654321E-9 +-- Arg value 10.7654321E-10 -- bool(false) -Arg value 0.5 +-- Arg value .5 -- bool(false) -Arg value Array -Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(73) +-- Arg value array() -- +Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(73) +-- Arg value array(0) -- +Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(73) +-- Arg value array(1) -- +Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(73) +-- Arg value array(1, 2) -- +Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(73) +-- Arg value array('color' => 'red', 'item' => 'pen' -- +Error: 2 - base64_decode() expects parameter 1 to be string, array given, %s(%d) NULL -Arg value +-- Arg value NULL -- string(0) "" -Arg value +-- Arg value null -- string(0) "" -Arg value 1 +-- Arg value true -- string(0) "" -Arg value +-- Arg value false -- string(0) "" -Arg value 1 +-- Arg value TRUE -- string(0) "" -Arg value +-- Arg value FALSE -- string(0) "" -Arg value +-- Arg value "" -- string(0) "" -Arg value +-- Arg value '' -- string(0) "" -Error: 4096 - Object of class stdClass could not be converted to string, %s(72) -Arg value -Error: 2 - base64_decode() expects parameter 1 to be string, object given, %s(73) +-- Arg value stdClass object -- +Error: 2 - base64_decode() expects parameter 1 to be string, object given, %s(%d) NULL -Arg value +-- Arg value undefined variable -- string(0) "" -Arg value +-- Arg value unset variable -- string(0) "" -Done + +-- Arg value resource -- +Error: 2 - base64_decode() expects parameter 1 to be string, resource given, %s(%d) +NULL +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/url/base64_decode_variation_002.phpt b/ext/standard/tests/url/base64_decode_variation_002.phpt index 145784a4e..20bf35746 100644 --- a/ext/standard/tests/url/base64_decode_variation_002.phpt +++ b/ext/standard/tests/url/base64_decode_variation_002.phpt @@ -18,160 +18,158 @@ echo "*** Testing base64_decode() : usage variations ***\n"; // Initialise function arguments not being substituted (if any) $str = 'aGVsbG8gd29ybGQh!'; +//getting the resource +$file_handle = fopen(__FILE__, "r"); + //get an unset variable $unset_var = 10; unset ($unset_var); //array of values to iterate over -$values = array( - - // int data - 0, - 1, - 12345, - -2345, - - // float data - 10.5, - -10.5, - 10.1234567e10, - 10.7654321E-10, - .5, - - // array data - array(), - array(0), - array(1), - array(1, 2), - array('color' => 'red', 'item' => 'pen'), - - // null data - NULL, - null, - - // boolean data - true, - false, - TRUE, - FALSE, - - // empty data - "", - '', - - // string data - "string", - 'string', - - // object data - new stdclass(), - - // undefined data - $undefined_var, - - // unset data - $unset_var, +$values = array ( + // int data + "0" => 0, + "1" => 1, + "12345" => 12345, + "-2345" => -2345, + + // float data + "10.5" => 10.5, + "-10.5" => -10.5, + "10.1234567e10" => 10.1234567e10, + "10.7654321E-10" => 10.7654321E-10, + ".5" => .5, + + // array data + "array()" => array(), + "array(0)" => array(0), + "array(1)" => array(1), + "array(1, 2)" => array(1, 2), + "array('color' => 'red', 'item' => 'pen'" => array('color' => 'red', 'item' => 'pen'), + + // null data + "NULL" => NULL, + "null" => null, + + // boolean data + "true" => true, + "false" => false, + "TRUE" => TRUE, + "FALSE" => FALSE, + + // empty data + "\"\"" => "", + "''" => '', + + // object data + "stdClass object" => new stdclass(), + + // undefined data + "undefined variable" => $undefined_var, + + // unset data + "unset variable" => $unset_var, + + // resource data + "resource" => $file_handle ); -// loop through each element of the array for strict +// loop through each element of the array for strict argument -foreach($values as $value) { - echo "\nArg value $value \n"; - var_dump( base64_decode($str, $value) ); +foreach($values as $key=>$value) { + echo "\n-- Arg value $key --\n"; + var_dump(base64_decode($str, $value)); }; -echo "Done"; ?> +===Done=== --EXPECTF-- *** Testing base64_decode() : usage variations *** -Error: 8 - Undefined variable: undefined_var, %s(67) -Error: 8 - Undefined variable: unset_var, %s(70) +Error: 8 - Undefined variable: undefined_var, %s(%d) +Error: 8 - Undefined variable: unset_var, %s(%d) -Arg value 0 +-- Arg value 0 -- string(12) "hello world!" -Arg value 1 +-- Arg value 1 -- bool(false) -Arg value 12345 +-- Arg value 12345 -- bool(false) -Arg value -2345 +-- Arg value -2345 -- bool(false) -Arg value 10.5 +-- Arg value 10.5 -- bool(false) -Arg value -10.5 +-- Arg value -10.5 -- bool(false) -Arg value 101234567000 +-- Arg value 10.1234567e10 -- bool(false) -Arg value 1.07654321E-9 +-- Arg value 10.7654321E-10 -- bool(false) -Arg value 0.5 +-- Arg value .5 -- bool(false) -Arg value Array -Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(77) +-- Arg value array() -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(77) +-- Arg value array(0) -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(77) +-- Arg value array(1) -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(77) +-- Arg value array(1, 2) -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(%d) NULL -Arg value Array -Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(77) +-- Arg value array('color' => 'red', 'item' => 'pen' -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, array given, %s(%d) NULL -Arg value +-- Arg value NULL -- string(12) "hello world!" -Arg value +-- Arg value null -- string(12) "hello world!" -Arg value 1 +-- Arg value true -- bool(false) -Arg value +-- Arg value false -- string(12) "hello world!" -Arg value 1 +-- Arg value TRUE -- bool(false) -Arg value +-- Arg value FALSE -- string(12) "hello world!" -Arg value +-- Arg value "" -- string(12) "hello world!" -Arg value +-- Arg value '' -- string(12) "hello world!" -Arg value string -bool(false) - -Arg value string -bool(false) -Error: 4096 - Object of class stdClass could not be converted to string, %s(76) - -Arg value -Error: 2 - base64_decode() expects parameter 2 to be boolean, object given, %s(77) +-- Arg value stdClass object -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, object given, %s(%d) NULL -Arg value +-- Arg value undefined variable -- string(12) "hello world!" -Arg value +-- Arg value unset variable -- string(12) "hello world!" -Done \ No newline at end of file + +-- Arg value resource -- +Error: 2 - base64_decode() expects parameter 2 to be boolean, resource given, %s(%d) +NULL +===Done=== \ No newline at end of file diff --git a/ext/standard/tests/url/base64_encode_basic_002.phpt b/ext/standard/tests/url/base64_encode_basic_002.phpt new file mode 100644 index 000000000..cff8f4142 --- /dev/null +++ b/ext/standard/tests/url/base64_encode_basic_002.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test base64_encode() function : basic functionality - check algorithm round trips +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing base64_encode() : basic functionality *** + +--- Testing base64_encode() with binary string input --- +-- Iteration 1 -- +TEST PASSED +-- Iteration 2 -- +TEST PASSED +-- Iteration 3 -- +TEST PASSED +-- Iteration 4 -- +TEST PASSED +-- Iteration 5 -- +TEST PASSED +===Done=== diff --git a/ext/standard/tests/url/bug47174.phpt b/ext/standard/tests/url/bug47174.phpt new file mode 100644 index 000000000..6d0806325 --- /dev/null +++ b/ext/standard/tests/url/bug47174.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #47174 (base64_decode() interprets pad char in mid string as terminator) +--FILE-- + +--EXPECT-- +Invalid Signature +string(10) "Zm9v==YmFy" +string(6) "foobar" diff --git a/ext/standard/type.c b/ext/standard/type.c index 9ee4fd18b..e1adc994c 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: type.c,v 1.30.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: type.c,v 1.30.2.2.2.5 2008/12/31 11:17:46 sebastian Exp $ */ #include "php.h" #include "php_incomplete_class.h" diff --git a/ext/standard/uniqid.c b/ext/standard/uniqid.c index 2e72ba3d5..da7f4c35f 100644 --- a/ext/standard/uniqid.c +++ b/ext/standard/uniqid.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: uniqid.c,v 1.41.2.2.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: uniqid.c,v 1.41.2.2.2.6 2008/12/31 11:17:46 sebastian Exp $ */ #include "php.h" @@ -38,7 +38,7 @@ #include "php_lcg.h" #include "uniqid.h" -/* {{{ proto string uniqid([string prefix , bool more_entropy]) +/* {{{ proto string uniqid([string prefix [, bool more_entropy]]) Generates a unique ID */ #ifdef HAVE_GETTIMEOFDAY PHP_FUNCTION(uniqid) diff --git a/ext/standard/uniqid.h b/ext/standard/uniqid.h index bbba9a1b0..633f63e83 100644 --- a/ext/standard/uniqid.h +++ b/ext/standard/uniqid.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: uniqid.h,v 1.13.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: uniqid.h,v 1.13.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef UNIQID_H #define UNIQID_H diff --git a/ext/standard/url.c b/ext/standard/url.c index ae95a785f..ffa5bd298 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Jim Winstead | +----------------------------------------------------------------------+ */ -/* $Id: url.c,v 1.86.2.5.2.9 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: url.c,v 1.86.2.5.2.10 2008/12/31 11:17:46 sebastian Exp $ */ #include #include diff --git a/ext/standard/url.h b/ext/standard/url.h index 4bb00f7c7..9c4382523 100644 --- a/ext/standard/url.h +++ b/ext/standard/url.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Jim Winstead | +----------------------------------------------------------------------+ */ -/* $Id: url.h,v 1.20.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: url.h,v 1.20.2.2.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef URL_H #define URL_H diff --git a/ext/standard/url_scanner.c b/ext/standard/url_scanner.c index da712b5ae..7cf5b0e81 100644 --- a/ext/standard/url_scanner.c +++ b/ext/standard/url_scanner.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Hartmut Holzgraefe | +----------------------------------------------------------------------+ */ -/* $Id: url_scanner.c,v 1.44.2.1.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: url_scanner.c,v 1.44.2.1.2.5 2008/12/31 11:17:46 sebastian Exp $ */ #include "php.h" diff --git a/ext/standard/url_scanner.h b/ext/standard/url_scanner.h index fc7baa01a..45a9bac12 100644 --- a/ext/standard/url_scanner.h +++ b/ext/standard/url_scanner.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -15,7 +15,7 @@ | Author: Sascha Schumann | +----------------------------------------------------------------------+ */ -/* $Id: url_scanner.h,v 1.16.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: url_scanner.h,v 1.16.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef URI_SCANNER_H #define URI_SCANNER_H diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c index 9edf4c2f9..80a5725d0 100644 --- a/ext/standard/url_scanner_ex.c +++ b/ext/standard/url_scanner_ex.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Wed Oct 10 12:28:46 2007 */ +/* Generated by re2c 0.13.5 on Wed Jul 2 12:48:53 2008 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.c,v 1.95.2.4.2.6 2008/03/12 11:27:42 felipe Exp $ */ +/* $Id: url_scanner_ex.c,v 1.95.2.4.2.7 2008/07/16 14:10:50 jani Exp $ */ #include "php.h" @@ -107,7 +107,9 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st q = (p = url->c) + url->len; scan: + { + YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, @@ -143,33 +145,29 @@ scan: 128, 128, 128, 128, 128, 128, 128, 128, }; - { - YYCTYPE yych; - - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy8; - } - if(yych <= '9') goto yy6; - if(yych >= ';') goto yy4; - ++YYCURSOR; - { smart_str_append(dest, url); return; } + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy8; + } + if (yych <= '9') goto yy6; + if (yych >= ';') goto yy4; + ++YYCURSOR; + { smart_str_append(dest, url); return; } yy4: - ++YYCURSOR; - { sep = separator; goto scan; } + ++YYCURSOR; + { sep = separator; goto scan; } yy6: - ++YYCURSOR; - { bash = p - 1; goto done; } + ++YYCURSOR; + { bash = p - 1; goto done; } yy8: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy8; - } - { goto scan; } + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy8; } + { goto scan; } } done: @@ -349,7 +347,9 @@ state_plain_begin: state_plain: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, @@ -384,31 +384,29 @@ state_plain: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - - { - YYCTYPE yych; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy15; - } - ++YYCURSOR; - { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy15; + } + ++YYCURSOR; + { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } yy15: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy15; - } - { passthru(STD_ARGS); goto state_plain; } + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy15; } + { passthru(STD_ARGS); goto state_plain; } } state_tag: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -443,37 +441,33 @@ state_tag: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - - { - YYCTYPE yych; - 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; - } + 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; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy25; yy21: - { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } + { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } yy22: - ++YYCURSOR; - { passthru(STD_ARGS); goto state_plain_begin; } + ++YYCURSOR; + { passthru(STD_ARGS); goto state_plain_begin; } yy24: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy25: - if(yybm[0+yych] & 128) { - goto yy24; - } - goto yy21; + if (yybm[0+yych] & 128) { + goto yy24; } + goto yy21; } @@ -482,7 +476,9 @@ state_next_arg_begin: state_next_arg: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 128, 0, 0, @@ -517,61 +513,59 @@ state_next_arg: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy34; - if(yych <= 0x0B) goto yy30; - goto yy34; - } else { - if(yych <= 0x0D) goto yy30; - if(yych <= 0x1F) goto yy34; - goto yy30; - } + 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 <= '@') { - if(yych != '>') goto yy34; - } else { - if(yych <= 'Z') goto yy32; - if(yych <= '`') goto yy34; - if(yych <= 'z') goto yy32; - goto yy34; - } + if (yych <= '\r') goto yy30; + if (yych <= 0x1F) goto yy34; + goto yy30; } - ++YYCURSOR; - { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } + } 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; + { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } yy30: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy37; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy37; yy31: - { passthru(STD_ARGS); goto state_next_arg; } + { passthru(STD_ARGS); goto state_next_arg; } yy32: - ++YYCURSOR; - { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } + ++YYCURSOR; + { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } yy34: - ++YYCURSOR; - { passthru(STD_ARGS); goto state_plain_begin; } + ++YYCURSOR; + { passthru(STD_ARGS); goto state_plain_begin; } yy36: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy37: - if(yybm[0+yych] & 128) { - goto yy36; - } - goto yy31; + if (yybm[0+yych] & 128) { + goto yy36; } + goto yy31; } state_arg: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -606,40 +600,38 @@ state_arg: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - - { - YYCTYPE yych; - 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; + 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; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy45; yy41: - { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } + { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } yy42: - ++YYCURSOR; - { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } + ++YYCURSOR; + { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } yy44: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy45: - if(yybm[0+yych] & 128) { - goto yy44; - } - goto yy41; + if (yybm[0+yych] & 128) { + goto yy44; } + goto yy41; } state_before_val: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -674,54 +666,52 @@ state_before_val: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych == ' ') goto yy48; - if(yych == '=') goto yy50; - goto yy52; + 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; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ' ') goto yy55; + if (yych == '=') goto yy53; yy49: - { --YYCURSOR; goto state_next_arg_begin; } + { --YYCURSOR; goto state_next_arg_begin; } yy50: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy54; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy54; yy51: - { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } + { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } yy52: - yych = *++YYCURSOR; - goto yy49; + yych = *++YYCURSOR; + goto yy49; yy53: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++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; + 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; } state_val: start = YYCURSOR; + { + YYCTYPE yych; static const unsigned char yybm[] = { 248, 248, 248, 248, 248, 248, 248, 248, 248, 160, 160, 248, 248, 160, 248, 248, @@ -756,110 +746,106 @@ state_val: 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, }; - - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy63; - if(yych <= 0x0A) goto yy64; - goto yy63; - } else { - if(yych <= 0x0D) goto yy64; - if(yych <= 0x1F) goto yy63; - goto yy64; - } + 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 <= '&') { - if(yych != '"') goto yy63; - } else { - if(yych <= '\'') goto yy62; - if(yych == '>') goto yy64; - goto yy63; - } + if (yych <= '\'') goto yy62; + if (yych == '>') goto yy64; + goto yy63; } - yych = *(YYMARKER = ++YYCURSOR); - goto yy77; + } + yych = *(YYMARKER = ++YYCURSOR); + goto yy77; yy61: - { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } + { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } yy62: - yych = *(YYMARKER = ++YYCURSOR); - goto yy69; + yych = *(YYMARKER = ++YYCURSOR); + goto yy69; yy63: - yych = *++YYCURSOR; - goto yy67; + yych = *++YYCURSOR; + goto yy67; yy64: - ++YYCURSOR; - { passthru(STD_ARGS); goto state_next_arg_begin; } + ++YYCURSOR; + { passthru(STD_ARGS); goto state_next_arg_begin; } yy66: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy67: - if(yybm[0+yych] & 8) { - goto yy66; - } - goto yy61; + if (yybm[0+yych] & 8) { + goto yy66; + } + goto yy61; yy68: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + 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; - } + 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: - { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } + { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } yy72: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 32) { - goto yy72; - } - if(yych <= '=') goto yy75; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 32) { + goto yy72; + } + if (yych <= '=') goto yy75; yy74: - YYCURSOR = YYMARKER; - goto yy61; + YYCURSOR = YYMARKER; + goto yy61; yy75: - yych = *++YYCURSOR; - goto yy71; + yych = *++YYCURSOR; + goto yy71; yy76: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + 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; - } + 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: - { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } + { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy80; } + if (yych >= '>') goto yy74; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy79; } diff --git a/ext/standard/url_scanner_ex.c.orig b/ext/standard/url_scanner_ex.c.orig index 4d337d74f..cee1c4bb9 100644 --- a/ext/standard/url_scanner_ex.c.orig +++ b/ext/standard/url_scanner_ex.c.orig @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Wed Oct 10 12:28:46 2007 */ +/* Generated by re2c 0.13.5 on Wed Jul 2 12:48:53 2008 */ #line 1 "ext/standard/url_scanner_ex.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.c,v 1.95.2.4.2.6 2008/03/12 11:27:42 felipe Exp $ */ +/* $Id: url_scanner_ex.c,v 1.95.2.4.2.7 2008/07/16 14:10:50 jani Exp $ */ #include "php.h" @@ -109,7 +109,10 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st 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, @@ -145,42 +148,37 @@ scan: 128, 128, 128, 128, 128, 128, 128, 128, }; -#line 149 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy8; - } - if(yych <= '9') goto yy6; - if(yych >= ';') goto yy4; - ++YYCURSOR; + 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 163 "ext/standard/url_scanner_ex.c" + { smart_str_append(dest, url); return; } +#line 162 "ext/standard/url_scanner_ex.c" yy4: - ++YYCURSOR; + ++YYCURSOR; #line 117 "ext/standard/url_scanner_ex.re" - { sep = separator; goto scan; } -#line 168 "ext/standard/url_scanner_ex.c" + { sep = separator; goto scan; } +#line 167 "ext/standard/url_scanner_ex.c" yy6: - ++YYCURSOR; + ++YYCURSOR; #line 118 "ext/standard/url_scanner_ex.re" - { bash = p - 1; goto done; } -#line 173 "ext/standard/url_scanner_ex.c" + { 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 183 "ext/standard/url_scanner_ex.c" + ++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" @@ -361,7 +359,10 @@ state_plain_begin: 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, @@ -396,37 +397,35 @@ state_plain: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - -#line 401 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy15; - } - ++YYCURSOR; + 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 412 "ext/standard/url_scanner_ex.c" + { 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 422 "ext/standard/url_scanner_ex.c" + ++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, @@ -461,42 +460,37 @@ state_tag: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -#line 466 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - 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; - } + 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; + ++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 485 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; #line 307 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 490 "ext/standard/url_scanner_ex.c" + { passthru(STD_ARGS); goto state_plain_begin; } +#line 485 "ext/standard/url_scanner_ex.c" yy24: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy25: - if(yybm[0+yych] & 128) { - goto yy24; - } - goto yy21; + if (yybm[0+yych] & 128) { + goto yy24; } + goto yy21; } #line 308 "ext/standard/url_scanner_ex.re" @@ -506,7 +500,10 @@ state_next_arg_begin: 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, @@ -541,71 +538,69 @@ state_next_arg: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -#line 546 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy34; - if(yych <= 0x0B) goto yy30; - goto yy34; - } else { - if(yych <= 0x0D) goto yy30; - if(yych <= 0x1F) goto yy34; - goto yy30; - } + 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 <= '@') { - if(yych != '>') goto yy34; - } else { - if(yych <= 'Z') goto yy32; - if(yych <= '`') goto yy34; - if(yych <= 'z') goto yy32; - goto yy34; - } + if (yych <= '\r') goto yy30; + if (yych <= 0x1F) goto yy34; + goto yy30; } - ++YYCURSOR; + } 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 574 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy37; yy31: #line 317 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg; } -#line 582 "ext/standard/url_scanner_ex.c" + { passthru(STD_ARGS); goto state_next_arg; } +#line 575 "ext/standard/url_scanner_ex.c" yy32: - ++YYCURSOR; + ++YYCURSOR; #line 318 "ext/standard/url_scanner_ex.re" - { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } -#line 587 "ext/standard/url_scanner_ex.c" + { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } +#line 580 "ext/standard/url_scanner_ex.c" yy34: - ++YYCURSOR; + ++YYCURSOR; #line 319 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 592 "ext/standard/url_scanner_ex.c" + { passthru(STD_ARGS); goto state_plain_begin; } +#line 585 "ext/standard/url_scanner_ex.c" yy36: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy37: - if(yybm[0+yych] & 128) { - goto yy36; - } - goto yy31; + 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, @@ -640,46 +635,44 @@ state_arg: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -#line 645 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - 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; + 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; + ++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 661 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; #line 326 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } -#line 666 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy45: - if(yybm[0+yych] & 128) { - goto yy44; - } - goto yy41; + 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, @@ -714,52 +707,47 @@ state_before_val: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - -#line 719 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych == ' ') goto yy48; - if(yych == '=') goto yy50; - goto yy52; + 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; + 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 734 "ext/standard/url_scanner_ex.c" + { --YYCURSOR; goto state_next_arg_begin; } +#line 723 "ext/standard/url_scanner_ex.c" yy50: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy54; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy54; yy51: #line 332 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } -#line 742 "ext/standard/url_scanner_ex.c" + { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } +#line 731 "ext/standard/url_scanner_ex.c" yy52: - yych = *++YYCURSOR; - goto yy49; + yych = *++YYCURSOR; + goto yy49; yy53: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++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; + 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" @@ -767,7 +755,10 @@ yy55: 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, @@ -802,119 +793,114 @@ state_val: 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, }; - -#line 807 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy63; - if(yych <= 0x0A) goto yy64; - goto yy63; - } else { - if(yych <= 0x0D) goto yy64; - if(yych <= 0x1F) goto yy63; - goto yy64; - } + 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 <= '&') { - if(yych != '"') goto yy63; - } else { - if(yych <= '\'') goto yy62; - if(yych == '>') goto yy64; - goto yy63; - } + if (yych <= '\'') goto yy62; + if (yych == '>') goto yy64; + goto yy63; } - yych = *(YYMARKER = ++YYCURSOR); - goto yy77; + } + 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 836 "ext/standard/url_scanner_ex.c" + { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } +#line 823 "ext/standard/url_scanner_ex.c" yy62: - yych = *(YYMARKER = ++YYCURSOR); - goto yy69; + yych = *(YYMARKER = ++YYCURSOR); + goto yy69; yy63: - yych = *++YYCURSOR; - goto yy67; + yych = *++YYCURSOR; + goto yy67; yy64: - ++YYCURSOR; + ++YYCURSOR; #line 343 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg_begin; } -#line 847 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy67: - if(yybm[0+yych] & 8) { - goto yy66; - } - goto yy61; + if (yybm[0+yych] & 8) { + goto yy66; + } + goto yy61; yy68: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + 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; - } + 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 874 "ext/standard/url_scanner_ex.c" + { 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 32) { + goto yy72; + } + if (yych <= '=') goto yy75; yy74: - YYCURSOR = YYMARKER; - goto yy61; + YYCURSOR = YYMARKER; + goto yy61; yy75: - yych = *++YYCURSOR; - goto yy71; + yych = *++YYCURSOR; + goto yy71; yy76: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + 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; - } + 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 906 "ext/standard/url_scanner_ex.c" + { 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; + ++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" diff --git a/ext/standard/url_scanner_ex.h b/ext/standard/url_scanner_ex.h index 9f17558e3..dacd4d77b 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.h,v 1.26.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: url_scanner_ex.h,v 1.26.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #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 70e479450..e04671b1f 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: user_filters.c,v 1.31.2.4.2.10 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: user_filters.c,v 1.31.2.4.2.13 2009/01/08 18:40:56 lbarnaud Exp $ */ #include "php.h" #include "php_globals.h" @@ -180,12 +180,14 @@ php_stream_filter_status_t userfilter_filter( zval *retval = NULL; zval **args[4]; zval *zclosing, *zconsumed, *zin, *zout, *zstream; + zval zpropname; int call_result; if (FAILURE == zend_hash_find(Z_OBJPROP_P(obj), "stream", sizeof("stream"), (void**)&zstream)) { /* Give the userfilter class a hook back to the stream */ ALLOC_INIT_ZVAL(zstream); php_stream_to_zval(stream, zstream); + zval_copy_ctor(zstream); add_property_zval(obj, "stream", zstream); /* add_property_zval increments the refcount which is unwanted here */ zval_ptr_dtor(&zstream); @@ -246,6 +248,21 @@ php_stream_filter_status_t userfilter_filter( php_stream_bucket_delref(bucket TSRMLS_CC); } } + if (ret != PSFS_PASS_ON) { + php_stream_bucket *bucket = buckets_out->head; + while (bucket != NULL) { + php_stream_bucket_unlink(bucket TSRMLS_CC); + php_stream_bucket_delref(bucket TSRMLS_CC); + bucket = buckets_out->head; + } + } + + /* filter resources are cleaned up by the stream destructor, + * keeping a reference to the stream resource here would prevent it + * from being destroyed properly */ + INIT_ZVAL(zpropname); + ZVAL_STRINGL(&zpropname, "stream", sizeof("stream")-1, 0); + Z_OBJ_HANDLER_P(obj, unset_property)(obj, &zpropname TSRMLS_CC); zval_ptr_dtor(&zclosing); zval_ptr_dtor(&zconsumed); diff --git a/ext/standard/uuencode.c b/ext/standard/uuencode.c index c0df1e0d9..7b200b8e2 100644 --- a/ext/standard/uuencode.c +++ b/ext/standard/uuencode.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: uuencode.c,v 1.5.2.1.2.6 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: uuencode.c,v 1.5.2.1.2.7 2008/12/31 11:17:46 sebastian Exp $ */ /* * Portions of this code are based on Berkeley's uuencode/uudecode diff --git a/ext/standard/var.c b/ext/standard/var.c index efbc887f6..9abe33b11 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var.c,v 1.203.2.7.2.22 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: var.c,v 1.203.2.7.2.25 2009/01/07 14:36:49 derick Exp $ */ @@ -378,13 +378,15 @@ static int php_object_element_export(zval **zv, int num_args, va_list args, zend level = va_arg(args, int); + php_printf("%*c", level + 1, ' '); if (hash_key->nKeyLength != 0) { - php_printf("%*c", level + 1, ' '); - zend_unmangle_property_name(hash_key->arKey, hash_key->nKeyLength-1, &class_name, &prop_name); + zend_unmangle_property_name(hash_key->arKey, hash_key->nKeyLength - 1, &class_name, &prop_name); php_printf(" '%s' => ", prop_name); - php_var_export(zv, level + 2 TSRMLS_CC); - PUTS (",\n"); + } else { + php_printf(" %ld => ", hash_key->h); } + php_var_export(zv, level + 2 TSRMLS_CC); + PUTS (",\n"); return 0; } @@ -424,7 +426,7 @@ PHPAPI void php_var_export(zval **struc, int level TSRMLS_DC) php_printf("\n%*c", level - 1, ' '); } PUTS ("array (\n"); - zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_array_element_export, 1, level, (Z_TYPE_PP(struc) == IS_ARRAY ? 0 : 1)); + zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_array_element_export, 1, level, 0); if (level > 1) { php_printf("%*c", level - 1, ' '); } diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 89181b8ce..4917799db 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Mon Aug 6 21:32:14 2007 */ +/* Generated by re2c 0.13.5 on Sat Oct 4 10:07:18 2008 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.c,v 1.70.2.4.2.8 2008/03/19 03:00:40 felipe Exp $ */ +/* $Id: var_unserializer.c,v 1.70.2.4.2.10 2008/10/04 13:11:36 felipe Exp $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -332,7 +332,7 @@ static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) (*p) += 2; if (datalen < 0 || (*p) + datalen >= max) { - zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, max - (*p)); + zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p))); return 0; } @@ -395,7 +395,9 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) + { + YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -431,109 +433,106 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) 0, 0, 0, 0, 0, 0, 0, 0, }; - { - YYCTYPE yych; - - 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; - } + 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; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy95; yy3: - { return 0; } + { return 0; } yy4: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy89; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy89; + goto yy3; yy5: - yych = *++YYCURSOR; - if(yych == ';') goto yy87; - goto yy3; + yych = *++YYCURSOR; + if (yych == ';') goto yy87; + goto yy3; yy6: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy83; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy83; + goto yy3; yy7: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy77; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy77; + goto yy3; yy8: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy53; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy53; + goto yy3; yy9: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy46; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy46; + goto yy3; yy10: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy39; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy39; + goto yy3; yy11: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy32; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy32; + goto yy3; yy12: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy25; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy25; + goto yy3; yy13: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy17; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy17; + goto yy3; yy14: - ++YYCURSOR; - { + ++YYCURSOR; + { /* 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? */ } yy16: - yych = *++YYCURSOR; - goto yy3; + yych = *++YYCURSOR; + goto yy3; yy17: - yych = *++YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy20; - } - if(yych == '+') goto yy19; + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy20; + } + if (yych == '+') goto yy19; yy18: - YYCURSOR = YYMARKER; - goto yy3; + YYCURSOR = YYMARKER; + goto yy3; yy19: - yych = *++YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy20; - } - goto yy18; + 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; - { + ++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; + { size_t len, len2, len3, maxlen; long elements; char *class_name; @@ -645,30 +644,30 @@ yy20: return object_common2(UNSERIALIZE_PASSTHRU, elements); } 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; - } + 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; + 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; - { + ++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; + { INIT_PZVAL(*rval); @@ -676,26 +675,26 @@ yy27: object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } yy32: - yych = *++YYCURSOR; - if(yych == '+') goto yy33; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy34; - goto yy18; + 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; + 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; - { + ++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; + { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; @@ -717,26 +716,26 @@ yy34: return finish_nested_data(UNSERIALIZE_PASSTHRU); } yy39: - yych = *++YYCURSOR; - if(yych == '+') goto yy40; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy41; - goto yy18; + 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; + 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; - { + ++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; + { size_t len, maxlen; char *str; @@ -765,26 +764,26 @@ yy41: return 1; } yy46: - yych = *++YYCURSOR; - if(yych == '+') goto yy47; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy48; - goto yy18; + 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; + 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; - { + ++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; + { size_t len, maxlen; char *str; @@ -812,157 +811,157 @@ yy48: return 1; } yy53: - yych = *++YYCURSOR; - if(yych <= '/') { - if(yych <= ',') { - if(yych == '+') goto yy57; - goto yy18; - } else { - if(yych <= '-') goto yy55; - if(yych <= '.') goto yy60; - goto yy18; - } + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych <= ',') { + if (yych == '+') goto yy57; + 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; + 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 <= '9') goto yy58; - if(yych != 'I') goto yy18; + if (yych != 'N') goto yy18; } -yy56: - yych = *++YYCURSOR; - if(yych == 'N') goto yy72; + } + 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; + 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; - } + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ':') { + if (yych <= '.') { + if (yych <= '-') goto yy18; + goto yy70; } else { - if(yych <= 'E') { - if(yych <= ';') goto yy63; - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + 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; + 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; + ++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') { - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + if (yych == 'e') goto yy65; + goto yy18; } + } yy63: - ++YYCURSOR; - { + ++YYCURSOR; + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); return 1; } 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; - } + 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; + 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; + 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; + ++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') { - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + if (yych == 'e') goto yy65; + goto yy18; } + } yy72: - yych = *++YYCURSOR; - if(yych != 'F') goto yy18; + yych = *++YYCURSOR; + if (yych != 'F') goto yy18; yy73: - yych = *++YYCURSOR; - if(yych != ';') goto yy18; - ++YYCURSOR; - { + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; + { *p = YYCURSOR; INIT_PZVAL(*rval); @@ -977,81 +976,81 @@ yy73: return 1; } yy76: - yych = *++YYCURSOR; - if(yych == 'N') goto yy73; - goto yy18; + 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; - } + 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; + 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; - { + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + if (yych != ';') goto yy18; + ++YYCURSOR; + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_LONG(*rval, parse_iv(start + 2)); return 1; } yy83: - yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= '2') goto yy18; - yych = *++YYCURSOR; - if(yych != ';') goto yy18; - ++YYCURSOR; - { + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= '2') goto yy18; + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_BOOL(*rval, parse_iv(start + 2)); return 1; } yy87: - ++YYCURSOR; - { + ++YYCURSOR; + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_NULL(*rval); return 1; } 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; - } + 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; + 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; - { + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + if (yych != ';') goto yy18; + ++YYCURSOR; + { long id; *p = YYCURSOR; @@ -1074,28 +1073,28 @@ yy91: return 1; } 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; - } + 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; + 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; - { + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + if (yych != ';') goto yy18; + ++YYCURSOR; + { long id; *p = YYCURSOR; @@ -1115,7 +1114,6 @@ yy97: return 1; } - } } diff --git a/ext/standard/var_unserializer.c.orig b/ext/standard/var_unserializer.c.orig index 3d4fcb77d..10af38f27 100644 --- a/ext/standard/var_unserializer.c.orig +++ b/ext/standard/var_unserializer.c.orig @@ -1,4 +1,4 @@ -/* Generated by re2c 0.12.1 on Mon Aug 6 21:32:14 2007 */ +/* Generated by re2c 0.13.5 on Sat Oct 4 10:07:18 2008 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.c,v 1.70.2.4.2.8 2008/03/19 03:00:40 felipe Exp $ */ +/* $Id: var_unserializer.c,v 1.70.2.4.2.10 2008/10/04 13:11:36 felipe Exp $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -334,7 +334,7 @@ static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) (*p) += 2; if (datalen < 0 || (*p) + datalen >= max) { - zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, max - (*p)); + zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p))); return 0; } @@ -397,7 +397,10 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) + +#line 402 "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, @@ -433,115 +436,111 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) 0, 0, 0, 0, 0, 0, 0, 0, }; -#line 437 "ext/standard/var_unserializer.c" - { - YYCTYPE yych; - - 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; - } + 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; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy95; yy3: #line 698 "ext/standard/var_unserializer.re" - { return 0; } -#line 465 "ext/standard/var_unserializer.c" + { return 0; } +#line 464 "ext/standard/var_unserializer.c" yy4: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy89; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy89; + goto yy3; yy5: - yych = *++YYCURSOR; - if(yych == ';') goto yy87; - goto yy3; + yych = *++YYCURSOR; + if (yych == ';') goto yy87; + goto yy3; yy6: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy83; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy83; + goto yy3; yy7: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy77; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy77; + goto yy3; yy8: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy53; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy53; + goto yy3; yy9: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy46; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy46; + goto yy3; yy10: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy39; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy39; + goto yy3; yy11: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy32; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy32; + goto yy3; yy12: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy25; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy25; + goto yy3; yy13: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ':') goto yy17; - goto yy3; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy17; + goto yy3; yy14: - ++YYCURSOR; + ++YYCURSOR; #line 692 "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 514 "ext/standard/var_unserializer.c" +#line 513 "ext/standard/var_unserializer.c" yy16: - yych = *++YYCURSOR; - goto yy3; + yych = *++YYCURSOR; + goto yy3; yy17: - yych = *++YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy20; - } - if(yych == '+') goto yy19; + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy20; + } + if (yych == '+') goto yy19; yy18: - YYCURSOR = YYMARKER; - goto yy3; + YYCURSOR = YYMARKER; + goto yy3; yy19: - yych = *++YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy20; - } - goto yy18; + 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; + ++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 580 "ext/standard/var_unserializer.re" - { + { size_t len, len2, len3, maxlen; long elements; char *class_name; @@ -652,62 +651,62 @@ yy20: return object_common2(UNSERIALIZE_PASSTHRU, elements); } -#line 656 "ext/standard/var_unserializer.c" +#line 655 "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; - } + 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; + 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; + ++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 572 "ext/standard/var_unserializer.re" - { + { INIT_PZVAL(*rval); return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } -#line 689 "ext/standard/var_unserializer.c" +#line 688 "ext/standard/var_unserializer.c" yy32: - yych = *++YYCURSOR; - if(yych == '+') goto yy33; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy34; - goto yy18; + 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; + 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; + ++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 550 "ext/standard/var_unserializer.re" - { + { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; @@ -728,29 +727,29 @@ yy34: return finish_nested_data(UNSERIALIZE_PASSTHRU); } -#line 732 "ext/standard/var_unserializer.c" +#line 731 "ext/standard/var_unserializer.c" yy39: - yych = *++YYCURSOR; - if(yych == '+') goto yy40; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy41; - goto yy18; + 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; + 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; + ++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 521 "ext/standard/var_unserializer.re" - { + { size_t len, maxlen; char *str; @@ -778,29 +777,29 @@ yy41: ZVAL_STRINGL(*rval, str, len, 0); return 1; } -#line 782 "ext/standard/var_unserializer.c" +#line 781 "ext/standard/var_unserializer.c" yy46: - yych = *++YYCURSOR; - if(yych == '+') goto yy47; - if(yych <= '/') goto yy18; - if(yych <= '9') goto yy48; - goto yy18; + 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; + 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; + ++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 493 "ext/standard/var_unserializer.re" - { + { size_t len, maxlen; char *str; @@ -827,162 +826,162 @@ yy48: ZVAL_STRINGL(*rval, str, len, 1); return 1; } -#line 831 "ext/standard/var_unserializer.c" +#line 830 "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; - } + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych <= ',') { + if (yych == '+') goto yy57; + 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; + 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 <= '9') goto yy58; - if(yych != 'I') goto yy18; + if (yych != 'N') goto yy18; } -yy56: - yych = *++YYCURSOR; - if(yych == 'N') goto yy72; + } + 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; + 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; - } + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ':') { + if (yych <= '.') { + if (yych <= '-') goto yy18; + goto yy70; } else { - if(yych <= 'E') { - if(yych <= ';') goto yy63; - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + 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; + 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; + ++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') { - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + if (yych == 'e') goto yy65; + goto yy18; } + } yy63: - ++YYCURSOR; + ++YYCURSOR; #line 486 "ext/standard/var_unserializer.re" - { + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); return 1; } -#line 926 "ext/standard/var_unserializer.c" +#line 925 "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; - } + 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; + 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; + 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; + ++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') { - if(yych <= 'D') goto yy18; - goto yy65; - } else { - if(yych == 'e') goto yy65; - goto yy18; - } + if (yych == 'e') goto yy65; + goto yy18; } + } yy72: - yych = *++YYCURSOR; - if(yych != 'F') goto yy18; + yych = *++YYCURSOR; + if (yych != 'F') goto yy18; yy73: - yych = *++YYCURSOR; - if(yych != ';') goto yy18; - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; #line 471 "ext/standard/var_unserializer.re" - { + { *p = YYCURSOR; INIT_PZVAL(*rval); @@ -996,90 +995,90 @@ yy73: return 1; } -#line 1000 "ext/standard/var_unserializer.c" +#line 999 "ext/standard/var_unserializer.c" yy76: - yych = *++YYCURSOR; - if(yych == 'N') goto yy73; - goto yy18; + 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; - } + 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; + 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + if (yych != ';') goto yy18; + ++YYCURSOR; #line 464 "ext/standard/var_unserializer.re" - { + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_LONG(*rval, parse_iv(start + 2)); return 1; } -#line 1034 "ext/standard/var_unserializer.c" +#line 1033 "ext/standard/var_unserializer.c" yy83: - yych = *++YYCURSOR; - if(yych <= '/') goto yy18; - if(yych >= '2') goto yy18; - yych = *++YYCURSOR; - if(yych != ';') goto yy18; - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= '2') goto yy18; + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; #line 457 "ext/standard/var_unserializer.re" - { + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_BOOL(*rval, parse_iv(start + 2)); return 1; } -#line 1049 "ext/standard/var_unserializer.c" +#line 1048 "ext/standard/var_unserializer.c" yy87: - ++YYCURSOR; + ++YYCURSOR; #line 450 "ext/standard/var_unserializer.re" - { + { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_NULL(*rval); return 1; } -#line 1059 "ext/standard/var_unserializer.c" +#line 1058 "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; - } + 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; + 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + if (yych != ';') goto yy18; + ++YYCURSOR; #line 427 "ext/standard/var_unserializer.re" - { + { long id; *p = YYCURSOR; @@ -1101,31 +1100,31 @@ yy91: return 1; } -#line 1105 "ext/standard/var_unserializer.c" +#line 1104 "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; - } + 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; + 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; + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + if (yych != ';') goto yy18; + ++YYCURSOR; #line 406 "ext/standard/var_unserializer.re" - { + { long id; *p = YYCURSOR; @@ -1145,8 +1144,7 @@ yy97: return 1; } -#line 1149 "ext/standard/var_unserializer.c" - } +#line 1148 "ext/standard/var_unserializer.c" } #line 700 "ext/standard/var_unserializer.re" diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index ea8ce20d3..f478fa48d 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.re,v 1.52.2.2.2.7 2008/03/19 03:00:40 felipe Exp $ */ +/* $Id: var_unserializer.re,v 1.52.2.2.2.8 2008/10/04 13:11:36 felipe Exp $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -338,7 +338,7 @@ static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) (*p) += 2; if (datalen < 0 || (*p) + datalen >= max) { - zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, max - (*p)); + zend_error(E_WARNING, "Insufficient data for unserializing - %ld required, %ld present", datalen, (long)(max - (*p))); return 0; } diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c index 7775e0249..59958f5fd 100644 --- a/ext/standard/versioning.c +++ b/ext/standard/versioning.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: versioning.c,v 1.19.2.1.2.4 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: versioning.c,v 1.19.2.1.2.5 2008/12/31 11:17:46 sebastian Exp $ */ #include #include diff --git a/ext/sybase/php_sybase_db.c b/ext/sybase/php_sybase_db.c index 83711dd24..bd2335728 100644 --- a/ext/sybase/php_sybase_db.c +++ b/ext/sybase/php_sybase_db.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_db.c,v 1.66.2.5.2.9 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sybase_db.c,v 1.66.2.5.2.10 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H diff --git a/ext/sybase/php_sybase_db.h b/ext/sybase/php_sybase_db.h index f7ba114ce..d3a770fd6 100644 --- a/ext/sybase/php_sybase_db.h +++ b/ext/sybase/php_sybase_db.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_db.h,v 1.12.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sybase_db.h,v 1.12.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_SYBASE_DB_H #define PHP_SYBASE_DB_H diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c index 820170db7..645b6f44d 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_ct.c,v 1.103.2.5.2.14 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sybase_ct.c,v 1.103.2.5.2.17 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H @@ -138,6 +138,21 @@ static int _clean_invalid_results(zend_rsrc_list_entry *le TSRMLS_DC) #define efree_n(x) { efree(x); x = NULL; } #define efree_if(x) if (x) efree_n(x) +#ifdef PHP_SYBASE_DEBUG +#define FREE_SYBASE_RESULT(result) \ + if (result) { \ + fprintf(stderr, "_free_sybase_result(%p) called from line #%d\n", result, __LINE__); \ + fflush(stderr); \ + _free_sybase_result(result); \ + result = NULL; \ + } +#else +#define FREE_SYBASE_RESULT(result) \ + if (result) { \ + _free_sybase_result(result); \ + result = NULL; \ + } +#endif static void _free_sybase_result(sybase_result *result) { int i, j; @@ -191,7 +206,7 @@ static void php_free_sybase_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) php_sybase_finish_results(result TSRMLS_CC); } - _free_sybase_result(result); + FREE_SYBASE_RESULT(result); } static void _close_sybase_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) @@ -1109,8 +1124,6 @@ static int php_sybase_finish_results(sybase_result *result TSRMLS_DC) case CS_CANCELED: default: - _free_sybase_result(result); - result = NULL; retcode = CS_FAIL; break; } @@ -1143,7 +1156,7 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows) } if (numrows!=-1) numrows+= result->num_rows; - while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, NULL))==CS_SUCCEED) { + while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, NULL))==CS_SUCCEED || retcode == CS_ROW_FAIL) { result->num_rows++; i= result->store ? result->num_rows- 1 : 0; if (i >= result->blocks_initialized*SYBASE_ROWS_BLOCK) { @@ -1216,7 +1229,7 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows) break; default: - _free_sybase_result(result); + FREE_SYBASE_RESULT(result); result = NULL; retcode = CS_FAIL; /* Just to be sure */ break; @@ -1425,17 +1438,9 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered) INIT_PZVAL(tmp); ZEND_FETCH_RESOURCE(result, sybase_result *, &tmp, -1, "Sybase result", le_result); - /* Causes the following segfault: - Program received signal SIGSEGV, Segmentation fault. - 0x8144380 in _efree (ptr=0x81fe024, __zend_filename=0x81841a0 "php4/ext/sybase_ct/php_sybase_ct.c", - __zend_lineno=946, __zend_orig_filename=0x0, __zend_orig_lineno=0) at php4/Zend/zend_alloc.c:229 - php4/Zend/zend_alloc.c:229:7284:beg:0x8144380 - */ - #if O_TIMM if (result) { php_sybase_finish_results(result TSRMLS_CC); } - #endif zval_ptr_dtor(&tmp); zend_list_delete(sybase_ptr->active_result_index); @@ -1590,9 +1595,7 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered) /* Retry deadlocks up until deadlock_retry_count times */ if (sybase_ptr->deadlock && SybCtG(deadlock_retry_count) != -1 && ++deadlock_count > SybCtG(deadlock_retry_count)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Retried deadlock %d times [max: %ld], giving up", deadlock_count- 1, SybCtG(deadlock_retry_count)); - if (result != NULL) { - _free_sybase_result(result); - } + FREE_SYBASE_RESULT(result); break; } @@ -1611,9 +1614,7 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered) * optimization, we could try not to fetch results in known * deadlock conditions, but deadlock is (should be) rare. */ - if (result != NULL) { - _free_sybase_result(result); - } + FREE_SYBASE_RESULT(result); } if (status == Q_SUCCESS) { @@ -1621,9 +1622,7 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered) } if (status == Q_FAILURE) { - if (result != NULL) { - _free_sybase_result(result); - } + FREE_SYBASE_RESULT(result); RETURN_FALSE; } diff --git a/ext/sybase_ct/php_sybase_ct.h b/ext/sybase_ct/php_sybase_ct.h index 8260ce5fc..3fe22a132 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sybase_ct.h,v 1.19.2.2.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sybase_ct.h,v 1.19.2.2.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_SYBASE_CT_H #define PHP_SYBASE_CT_H diff --git a/ext/sybase_ct/tests/bug29064.phpt b/ext/sybase_ct/tests/bug29064.phpt index 97596fff2..a96d88288 100644 --- a/ext/sybase_ct/tests/bug29064.phpt +++ b/ext/sybase_ct/tests/bug29064.phpt @@ -6,7 +6,7 @@ Sybase-CT bug #29064 (Exact numeric/decimal/money datatypes lose precision) int(123) ["test_real"]=> - string(16) "123456789.123457" + string(18) "123456789.12345679" ["test_double"]=> - string(16) "123456789.123457" + string(18) "123456789.12345679" } [1]=> array(10) { @@ -135,9 +135,9 @@ array(2) { ["test_tinyint"]=> int(255) ["test_real"]=> - string(17) "-123456789.123457" + string(19) "-123456789.12345679" ["test_double"]=> - string(17) "-123456789.123457" + string(19) "-123456789.12345679" } } bool(true) diff --git a/ext/sybase_ct/tests/bug30312.phpt b/ext/sybase_ct/tests/bug30312.phpt index c71a39e86..19dda3dbe 100644 --- a/ext/sybase_ct/tests/bug30312.phpt +++ b/ext/sybase_ct/tests/bug30312.phpt @@ -6,7 +6,7 @@ Sybase-CT bug #30312 (sybase_unbuffered_query calls) --EXPECTF-- -string(%d) "%s %d %d %d:%d%s" -string(%d) "%s %d %d %d:%d%s" +int(%d) +int(%d) diff --git a/ext/sybase_ct/tests/skipif.inc b/ext/sybase_ct/tests/skipif.inc index ac5fa2fe5..a2fb163f9 100644 --- a/ext/sybase_ct/tests/skipif.inc +++ b/ext/sybase_ct/tests/skipif.inc @@ -1,8 +1,13 @@ diff --git a/ext/sybase_ct/tests/test.inc b/ext/sybase_ct/tests/test.inc index f5e4465a6..ca99b5e8b 100644 --- a/ext/sybase_ct/tests/test.inc +++ b/ext/sybase_ct/tests/test.inc @@ -1,13 +1,13 @@ - array(2) { - ["hostname"]=> - string(10) "php.net%s" - ["program_name"]=> - string(16) "phpt_test%s" - } -} bool(true) bool(true) diff --git a/ext/sybase_ct/tests/test_unbuffered_no_full_fetch.phpt b/ext/sybase_ct/tests/test_unbuffered_no_full_fetch.phpt new file mode 100644 index 000000000..c38bbf822 --- /dev/null +++ b/ext/sybase_ct/tests/test_unbuffered_no_full_fetch.phpt @@ -0,0 +1,37 @@ +--TEST-- +Sybase-CT unbuffered query without full fetching +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (sybase-ct link) +resource(%d) of type (sybase-ct result) +string(4) "name" + +Notice: sybase_unbuffered_query(): called without first fetching all rows from a previous unbuffered query in %s on line %d +resource(%d) of type (sybase-ct result) +string(4) "name" +CLOSED diff --git a/ext/sysvmsg/php_sysvmsg.h b/ext/sysvmsg/php_sysvmsg.h index 251a008d2..75d3a3570 100644 --- a/ext/sysvmsg/php_sysvmsg.h +++ b/ext/sysvmsg/php_sysvmsg.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sysvmsg.h,v 1.6.2.1.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sysvmsg.h,v 1.6.2.1.2.4 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_SYSVMSG_H #define PHP_SYSVMSG_H diff --git a/ext/sysvmsg/sysvmsg.c b/ext/sysvmsg/sysvmsg.c index 556d8d958..c55f1d08a 100644 --- a/ext/sysvmsg/sysvmsg.c +++ b/ext/sysvmsg/sysvmsg.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sysvmsg.c,v 1.20.2.3.2.7 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: sysvmsg.c,v 1.20.2.3.2.8 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -125,7 +125,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: 1.20.2.3.2.7 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.20.2.3.2.8 $"); php_info_print_table_end(); } /* }}} */ diff --git a/ext/sysvsem/php_sysvsem.h b/ext/sysvsem/php_sysvsem.h index c4dc752db..e96b85abc 100644 --- a/ext/sysvsem/php_sysvsem.h +++ b/ext/sysvsem/php_sysvsem.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sysvsem.h,v 1.16.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sysvsem.h,v 1.16.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_SYSVSEM_H #define PHP_SYSVSEM_H diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c index aa0c9d7a6..1bd686580 100644 --- a/ext/sysvsem/sysvsem.c +++ b/ext/sysvsem/sysvsem.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sysvsem.c,v 1.51.2.3.2.3 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: sysvsem.c,v 1.51.2.3.2.4 2008/12/31 11:17:46 sebastian Exp $ */ /* 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 a15755da7..a683d28f2 100644 --- a/ext/sysvshm/php_sysvshm.h +++ b/ext/sysvshm/php_sysvshm.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sysvshm.h,v 1.17.2.1.2.2 2007/12/31 07:20:13 sebastian Exp $ */ +/* $Id: php_sysvshm.h,v 1.17.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_SYSVSHM_H #define PHP_SYSVSHM_H diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index b38fd4e52..25dac42ff 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sysvshm.c,v 1.70.2.2.2.6 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: sysvshm.c,v 1.70.2.2.2.7 2008/12/31 11:17:46 sebastian Exp $ */ /* This has been built and tested on Linux 2.2.14 * diff --git a/ext/tidy/php_tidy.h b/ext/tidy/php_tidy.h index 7d2bcb19e..c0aef8429 100644 --- a/ext/tidy/php_tidy.h +++ b/ext/tidy/php_tidy.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_tidy.h,v 1.26.2.1.2.6 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_tidy.h,v 1.26.2.1.2.7 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_TIDY_H #define PHP_TIDY_H diff --git a/ext/tidy/tests/019.phpt b/ext/tidy/tests/019.phpt index 9d2c693cd..91bbc016e 100644 --- a/ext/tidy/tests/019.phpt +++ b/ext/tidy/tests/019.phpt @@ -34,5 +34,9 @@ Warning: tidy_repair_string(): Could not set encoding '1' in %s on line %d Warning: tidy_repair_string() expects parameter 1 to be string, array given in %s on line %d +Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d + +Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d + Warning: tidy_repair_file() expects parameter 1 to be string, array given in %s on line %d Done diff --git a/ext/tidy/tests/022.phpt b/ext/tidy/tests/022.phpt index 9d2c693cd..91bbc016e 100644 --- a/ext/tidy/tests/022.phpt +++ b/ext/tidy/tests/022.phpt @@ -34,5 +34,9 @@ Warning: tidy_repair_string(): Could not set encoding '1' in %s on line %d Warning: tidy_repair_string() expects parameter 1 to be string, array given in %s on line %d +Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d + +Warning: tidy_repair_file(): Filename cannot be empty in %s on line %d + Warning: tidy_repair_file() expects parameter 1 to be string, array given in %s on line %d Done diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index ede59f0c6..2b75b69e8 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tidy.c,v 1.66.2.8.2.25 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: tidy.c,v 1.66.2.8.2.26 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -998,7 +998,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,v 1.66.2.8.2.25 2007/12/31 07:20:14 sebastian Exp $)"); + php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c,v 1.66.2.8.2.26 2008/12/31 11:17:46 sebastian Exp $)"); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); diff --git a/ext/tokenizer/php_tokenizer.h b/ext/tokenizer/php_tokenizer.h index 9e19a7a87..f8f54fb5b 100644 --- a/ext/tokenizer/php_tokenizer.h +++ b/ext/tokenizer/php_tokenizer.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_tokenizer.h,v 1.9.2.1.2.5 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_tokenizer.h,v 1.9.2.1.2.6 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_TOKENIZER_H #define PHP_TOKENIZER_H diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index 7134027e1..4748abff1 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tokenizer.c,v 1.31.2.5.2.8 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: tokenizer.c,v 1.31.2.5.2.9 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c index 2715f4f27..ddfa7198f 100644 --- a/ext/tokenizer/tokenizer_data.c +++ b/ext/tokenizer/tokenizer_data.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: tokenizer_data.c,v 1.1.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: tokenizer_data.c,v 1.1.2.4 2008/12/31 11:17:46 sebastian Exp $ */ /* DO NOT EDIT THIS FILE! diff --git a/ext/wddx/php_wddx.h b/ext/wddx/php_wddx.h index 054a43e22..0720b5c94 100644 --- a/ext/wddx/php_wddx.h +++ b/ext/wddx/php_wddx.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_wddx.h,v 1.18.2.1.2.2 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_wddx.h,v 1.18.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #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 7ef2a0d18..6e46da9d2 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_wddx_api.h,v 1.23.2.3.2.2 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_wddx_api.h,v 1.23.2.3.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_WDDX_API_H #define PHP_WDDX_API_H diff --git a/ext/wddx/tests/002.phpt b/ext/wddx/tests/002.phpt new file mode 100644 index 000000000..692bfa85c --- /dev/null +++ b/ext/wddx/tests/002.phpt @@ -0,0 +1,21 @@ +--TEST-- +wddx packet construction using wddx ressource +--SKIPIF-- + +--INI-- +precision=14 +--FILE-- + +--EXPECT-- +
TEST comment
some string756
diff --git a/ext/wddx/tests/003.phpt b/ext/wddx/tests/003.phpt new file mode 100644 index 000000000..3240e43e9 --- /dev/null +++ b/ext/wddx/tests/003.phpt @@ -0,0 +1,26 @@ +--TEST-- +wddx deserialize from ressource +--SKIPIF-- + +--INI-- +precision=14 +--FILE-- +
TEST comment
some string756"); + rewind($fp); + var_dump(wddx_deserialize($fp)); + fclose($fp); +?> +--EXPECT-- +array(4) { + ["var1"]=> + NULL + ["var2"]=> + string(11) "some string" + ["var3"]=> + int(756) + ["var4"]=> + bool(true) +} diff --git a/ext/wddx/tests/004.phpt b/ext/wddx/tests/004.phpt new file mode 100644 index 000000000..ae5a6b4bd --- /dev/null +++ b/ext/wddx/tests/004.phpt @@ -0,0 +1,63 @@ +--TEST-- +wddx session serializer handler (serialize) +--SKIPIF-- + +--INI-- +precision=14 +session.serialize_handler=wddx +session.use_cookies=0 +session.cache_limiter= +session.save_handler=files +--FILE-- +yes = "done"; } + + public function __sleep() { return array('bar', 'yes'); } + } + + session_start(); + + $_SESSION['data'] = array( + 'test1' => true, + 'test2' => 'some string', + 'test3' => 654321, + 'test4' => array( + 'some string', + true, + null + ), + ); + + $_SESSION['class'] = new foo(); + $_SESSION['class']->method(); + + var_dump(session_encode()); + + session_destroy(); +?> +--EXPECT-- +string(550) "
some string654321some stringfoookdone" diff --git a/ext/wddx/tests/005.phpt b/ext/wddx/tests/005.phpt new file mode 100644 index 000000000..99e7a9e31 --- /dev/null +++ b/ext/wddx/tests/005.phpt @@ -0,0 +1,74 @@ +--TEST-- +wddx session serializer handler (deserialize) +--SKIPIF-- + +--INI-- +precision=14 +session.serialize_handler=wddx +session.use_cookies=0 +session.cache_limiter= +session.save_handler=files +--FILE-- +yes = "done"; } + } + + session_start(); + + session_decode("
some string654321some stringfoookdone"); + + var_dump($_SESSION); + + session_destroy(); +?> +--EXPECT-- +array(2) { + ["data"]=> + array(4) { + ["test1"]=> + bool(true) + ["test2"]=> + string(11) "some string" + ["test3"]=> + int(654321) + ["test4"]=> + array(3) { + [0]=> + string(11) "some string" + [1]=> + bool(true) + [2]=> + NULL + } + } + ["class"]=> + object(foo)#1 (2) { + ["bar"]=> + string(2) "ok" + ["yes"]=> + string(4) "done" + } +} diff --git a/ext/wddx/tests/bug37569.phpt b/ext/wddx/tests/bug37569.phpt index f7422c9ec..45cd68a80 100755 --- a/ext/wddx/tests/bug37569.phpt +++ b/ext/wddx/tests/bug37569.phpt @@ -5,774 +5,780 @@ Bug #37569 (WDDX incorrectly encodes high-ascii characters) --FILE-- = 0xc0) { + $v = chr(0xc3) . chr($i - 64); + } elseif ($i >= 0x80) { + $v = chr(0xc2) . chr($i); + } else { + $v = chr($i); // make it UTF-8 + } $ret = wddx_serialize_value($v); echo $ret . "\n"; - var_dump(ord($v), ord(wddx_deserialize($ret)), $v == wddx_deserialize($ret)); + var_dump(bin2hex($v), bin2hex(wddx_deserialize($ret)), $v == wddx_deserialize($ret)); } ?> --EXPECT--
A -int(65) -int(65) +string(2) "41" +string(2) "41" bool(true)
B -int(66) -int(66) +string(2) "42" +string(2) "42" bool(true)
C -int(67) -int(67) +string(2) "43" +string(2) "43" bool(true)
D -int(68) -int(68) +string(2) "44" +string(2) "44" bool(true)
E -int(69) -int(69) +string(2) "45" +string(2) "45" bool(true)
F -int(70) -int(70) +string(2) "46" +string(2) "46" bool(true)
G -int(71) -int(71) +string(2) "47" +string(2) "47" bool(true)
H -int(72) -int(72) +string(2) "48" +string(2) "48" bool(true)
I -int(73) -int(73) +string(2) "49" +string(2) "49" bool(true)
J -int(74) -int(74) +string(2) "4a" +string(2) "4a" bool(true)
K -int(75) -int(75) +string(2) "4b" +string(2) "4b" bool(true)
L -int(76) -int(76) +string(2) "4c" +string(2) "4c" bool(true)
M -int(77) -int(77) +string(2) "4d" +string(2) "4d" bool(true)
N -int(78) -int(78) +string(2) "4e" +string(2) "4e" bool(true)
O -int(79) -int(79) +string(2) "4f" +string(2) "4f" bool(true)
P -int(80) -int(80) +string(2) "50" +string(2) "50" bool(true)
Q -int(81) -int(81) +string(2) "51" +string(2) "51" bool(true)
R -int(82) -int(82) +string(2) "52" +string(2) "52" bool(true)
S -int(83) -int(83) +string(2) "53" +string(2) "53" bool(true)
T -int(84) -int(84) +string(2) "54" +string(2) "54" bool(true)
U -int(85) -int(85) +string(2) "55" +string(2) "55" bool(true)
V -int(86) -int(86) +string(2) "56" +string(2) "56" bool(true)
W -int(87) -int(87) +string(2) "57" +string(2) "57" bool(true)
X -int(88) -int(88) +string(2) "58" +string(2) "58" bool(true)
Y -int(89) -int(89) +string(2) "59" +string(2) "59" bool(true)
Z -int(90) -int(90) +string(2) "5a" +string(2) "5a" bool(true)
[ -int(91) -int(91) +string(2) "5b" +string(2) "5b" bool(true)
\ -int(92) -int(92) +string(2) "5c" +string(2) "5c" bool(true)
] -int(93) -int(93) +string(2) "5d" +string(2) "5d" bool(true)
^ -int(94) -int(94) +string(2) "5e" +string(2) "5e" bool(true)
_ -int(95) -int(95) +string(2) "5f" +string(2) "5f" bool(true)
` -int(96) -int(96) +string(2) "60" +string(2) "60" bool(true)
a -int(97) -int(97) +string(2) "61" +string(2) "61" bool(true)
b -int(98) -int(98) +string(2) "62" +string(2) "62" bool(true)
c -int(99) -int(99) +string(2) "63" +string(2) "63" bool(true)
d -int(100) -int(100) +string(2) "64" +string(2) "64" bool(true)
e -int(101) -int(101) +string(2) "65" +string(2) "65" bool(true)
f -int(102) -int(102) +string(2) "66" +string(2) "66" bool(true)
g -int(103) -int(103) +string(2) "67" +string(2) "67" bool(true)
h -int(104) -int(104) +string(2) "68" +string(2) "68" bool(true)
i -int(105) -int(105) +string(2) "69" +string(2) "69" bool(true)
j -int(106) -int(106) +string(2) "6a" +string(2) "6a" bool(true)
k -int(107) -int(107) +string(2) "6b" +string(2) "6b" bool(true)
l -int(108) -int(108) +string(2) "6c" +string(2) "6c" bool(true)
m -int(109) -int(109) +string(2) "6d" +string(2) "6d" bool(true)
n -int(110) -int(110) +string(2) "6e" +string(2) "6e" bool(true)
o -int(111) -int(111) +string(2) "6f" +string(2) "6f" bool(true)
p -int(112) -int(112) +string(2) "70" +string(2) "70" bool(true)
q -int(113) -int(113) +string(2) "71" +string(2) "71" bool(true)
r -int(114) -int(114) +string(2) "72" +string(2) "72" bool(true)
s -int(115) -int(115) +string(2) "73" +string(2) "73" bool(true)
t -int(116) -int(116) +string(2) "74" +string(2) "74" bool(true)
u -int(117) -int(117) +string(2) "75" +string(2) "75" bool(true)
v -int(118) -int(118) +string(2) "76" +string(2) "76" bool(true)
w -int(119) -int(119) +string(2) "77" +string(2) "77" bool(true)
x -int(120) -int(120) +string(2) "78" +string(2) "78" bool(true)
y -int(121) -int(121) +string(2) "79" +string(2) "79" bool(true)
z -int(122) -int(122) +string(2) "7a" +string(2) "7a" bool(true)
{ -int(123) -int(123) +string(2) "7b" +string(2) "7b" bool(true)
| -int(124) -int(124) +string(2) "7c" +string(2) "7c" bool(true)
} -int(125) -int(125) +string(2) "7d" +string(2) "7d" bool(true)
~ -int(126) -int(126) +string(2) "7e" +string(2) "7e" bool(true)
 -int(127) -int(127) +string(2) "7f" +string(2) "7f" bool(true)
€ -int(128) -int(128) +string(4) "c280" +string(4) "c280" bool(true)
 -int(129) -int(129) +string(4) "c281" +string(4) "c281" bool(true)
‚ -int(130) -int(130) +string(4) "c282" +string(4) "c282" bool(true)
ƒ -int(131) -int(131) +string(4) "c283" +string(4) "c283" bool(true)
„ -int(132) -int(132) +string(4) "c284" +string(4) "c284" bool(true)
Â… -int(133) -int(133) +string(4) "c285" +string(4) "c285" bool(true)
† -int(134) -int(134) +string(4) "c286" +string(4) "c286" bool(true)
‡ -int(135) -int(135) +string(4) "c287" +string(4) "c287" bool(true)
ˆ -int(136) -int(136) +string(4) "c288" +string(4) "c288" bool(true)
‰ -int(137) -int(137) +string(4) "c289" +string(4) "c289" bool(true)
Š -int(138) -int(138) +string(4) "c28a" +string(4) "c28a" bool(true)
‹ -int(139) -int(139) +string(4) "c28b" +string(4) "c28b" bool(true)
Œ -int(140) -int(140) +string(4) "c28c" +string(4) "c28c" bool(true)
 -int(141) -int(141) +string(4) "c28d" +string(4) "c28d" bool(true)
ÂŽ -int(142) -int(142) +string(4) "c28e" +string(4) "c28e" bool(true)
 -int(143) -int(143) +string(4) "c28f" +string(4) "c28f" bool(true)
 -int(144) -int(144) +string(4) "c290" +string(4) "c290" bool(true)
‘ -int(145) -int(145) +string(4) "c291" +string(4) "c291" bool(true)
Â’ -int(146) -int(146) +string(4) "c292" +string(4) "c292" bool(true)
“ -int(147) -int(147) +string(4) "c293" +string(4) "c293" bool(true)
” -int(148) -int(148) +string(4) "c294" +string(4) "c294" bool(true)
• -int(149) -int(149) +string(4) "c295" +string(4) "c295" bool(true)
– -int(150) -int(150) +string(4) "c296" +string(4) "c296" bool(true)
— -int(151) -int(151) +string(4) "c297" +string(4) "c297" bool(true)
˜ -int(152) -int(152) +string(4) "c298" +string(4) "c298" bool(true)
™ -int(153) -int(153) +string(4) "c299" +string(4) "c299" bool(true)
š -int(154) -int(154) +string(4) "c29a" +string(4) "c29a" bool(true)
› -int(155) -int(155) +string(4) "c29b" +string(4) "c29b" bool(true)
œ -int(156) -int(156) +string(4) "c29c" +string(4) "c29c" bool(true)
 -int(157) -int(157) +string(4) "c29d" +string(4) "c29d" bool(true)
ž -int(158) -int(158) +string(4) "c29e" +string(4) "c29e" bool(true)
Ÿ -int(159) -int(159) +string(4) "c29f" +string(4) "c29f" bool(true)
  -int(160) -int(160) +string(4) "c2a0" +string(4) "c2a0" bool(true)
¡ -int(161) -int(161) +string(4) "c2a1" +string(4) "c2a1" bool(true)
¢ -int(162) -int(162) +string(4) "c2a2" +string(4) "c2a2" bool(true)
£ -int(163) -int(163) +string(4) "c2a3" +string(4) "c2a3" bool(true)
¤ -int(164) -int(164) +string(4) "c2a4" +string(4) "c2a4" bool(true)
Â¥ -int(165) -int(165) +string(4) "c2a5" +string(4) "c2a5" bool(true)
¦ -int(166) -int(166) +string(4) "c2a6" +string(4) "c2a6" bool(true)
§ -int(167) -int(167) +string(4) "c2a7" +string(4) "c2a7" bool(true)
¨ -int(168) -int(168) +string(4) "c2a8" +string(4) "c2a8" bool(true)
© -int(169) -int(169) +string(4) "c2a9" +string(4) "c2a9" bool(true)
ª -int(170) -int(170) +string(4) "c2aa" +string(4) "c2aa" bool(true)
« -int(171) -int(171) +string(4) "c2ab" +string(4) "c2ab" bool(true)
¬ -int(172) -int(172) +string(4) "c2ac" +string(4) "c2ac" bool(true)
­ -int(173) -int(173) +string(4) "c2ad" +string(4) "c2ad" bool(true)
® -int(174) -int(174) +string(4) "c2ae" +string(4) "c2ae" bool(true)
¯ -int(175) -int(175) +string(4) "c2af" +string(4) "c2af" bool(true)
° -int(176) -int(176) +string(4) "c2b0" +string(4) "c2b0" bool(true)
± -int(177) -int(177) +string(4) "c2b1" +string(4) "c2b1" bool(true)
² -int(178) -int(178) +string(4) "c2b2" +string(4) "c2b2" bool(true)
³ -int(179) -int(179) +string(4) "c2b3" +string(4) "c2b3" bool(true)
´ -int(180) -int(180) +string(4) "c2b4" +string(4) "c2b4" bool(true)
µ -int(181) -int(181) +string(4) "c2b5" +string(4) "c2b5" bool(true)
¶ -int(182) -int(182) +string(4) "c2b6" +string(4) "c2b6" bool(true)
· -int(183) -int(183) +string(4) "c2b7" +string(4) "c2b7" bool(true)
¸ -int(184) -int(184) +string(4) "c2b8" +string(4) "c2b8" bool(true)
¹ -int(185) -int(185) +string(4) "c2b9" +string(4) "c2b9" bool(true)
º -int(186) -int(186) +string(4) "c2ba" +string(4) "c2ba" bool(true)
» -int(187) -int(187) +string(4) "c2bb" +string(4) "c2bb" bool(true)
¼ -int(188) -int(188) +string(4) "c2bc" +string(4) "c2bc" bool(true)
½ -int(189) -int(189) +string(4) "c2bd" +string(4) "c2bd" bool(true)
¾ -int(190) -int(190) +string(4) "c2be" +string(4) "c2be" bool(true)
¿ -int(191) -int(191) +string(4) "c2bf" +string(4) "c2bf" bool(true)
À -int(192) -int(192) +string(4) "c380" +string(4) "c380" bool(true)
à -int(193) -int(193) +string(4) "c381" +string(4) "c381" bool(true)
 -int(194) -int(194) +string(4) "c382" +string(4) "c382" bool(true)
à -int(195) -int(195) +string(4) "c383" +string(4) "c383" bool(true)
Ä -int(196) -int(196) +string(4) "c384" +string(4) "c384" bool(true)
Ã… -int(197) -int(197) +string(4) "c385" +string(4) "c385" bool(true)
Æ -int(198) -int(198) +string(4) "c386" +string(4) "c386" bool(true)
Ç -int(199) -int(199) +string(4) "c387" +string(4) "c387" bool(true)
È -int(200) -int(200) +string(4) "c388" +string(4) "c388" bool(true)
É -int(201) -int(201) +string(4) "c389" +string(4) "c389" bool(true)
Ê -int(202) -int(202) +string(4) "c38a" +string(4) "c38a" bool(true)
Ë -int(203) -int(203) +string(4) "c38b" +string(4) "c38b" bool(true)
Ì -int(204) -int(204) +string(4) "c38c" +string(4) "c38c" bool(true)
à -int(205) -int(205) +string(4) "c38d" +string(4) "c38d" bool(true)
ÃŽ -int(206) -int(206) +string(4) "c38e" +string(4) "c38e" bool(true)
à -int(207) -int(207) +string(4) "c38f" +string(4) "c38f" bool(true)
à -int(208) -int(208) +string(4) "c390" +string(4) "c390" bool(true)
Ñ -int(209) -int(209) +string(4) "c391" +string(4) "c391" bool(true)
Ã’ -int(210) -int(210) +string(4) "c392" +string(4) "c392" bool(true)
Ó -int(211) -int(211) +string(4) "c393" +string(4) "c393" bool(true)
Ô -int(212) -int(212) +string(4) "c394" +string(4) "c394" bool(true)
Õ -int(213) -int(213) +string(4) "c395" +string(4) "c395" bool(true)
Ö -int(214) -int(214) +string(4) "c396" +string(4) "c396" bool(true)
× -int(215) -int(215) +string(4) "c397" +string(4) "c397" bool(true)
Ø -int(216) -int(216) +string(4) "c398" +string(4) "c398" bool(true)
Ù -int(217) -int(217) +string(4) "c399" +string(4) "c399" bool(true)
Ú -int(218) -int(218) +string(4) "c39a" +string(4) "c39a" bool(true)
Û -int(219) -int(219) +string(4) "c39b" +string(4) "c39b" bool(true)
Ü -int(220) -int(220) +string(4) "c39c" +string(4) "c39c" bool(true)
à -int(221) -int(221) +string(4) "c39d" +string(4) "c39d" bool(true)
Þ -int(222) -int(222) +string(4) "c39e" +string(4) "c39e" bool(true)
ß -int(223) -int(223) +string(4) "c39f" +string(4) "c39f" bool(true)
à -int(224) -int(224) +string(4) "c3a0" +string(4) "c3a0" bool(true)
á -int(225) -int(225) +string(4) "c3a1" +string(4) "c3a1" bool(true)
â -int(226) -int(226) +string(4) "c3a2" +string(4) "c3a2" bool(true)
ã -int(227) -int(227) +string(4) "c3a3" +string(4) "c3a3" bool(true)
ä -int(228) -int(228) +string(4) "c3a4" +string(4) "c3a4" bool(true)
Ã¥ -int(229) -int(229) +string(4) "c3a5" +string(4) "c3a5" bool(true)
æ -int(230) -int(230) +string(4) "c3a6" +string(4) "c3a6" bool(true)
ç -int(231) -int(231) +string(4) "c3a7" +string(4) "c3a7" bool(true)
è -int(232) -int(232) +string(4) "c3a8" +string(4) "c3a8" bool(true)
é -int(233) -int(233) +string(4) "c3a9" +string(4) "c3a9" bool(true)
ê -int(234) -int(234) +string(4) "c3aa" +string(4) "c3aa" bool(true)
ë -int(235) -int(235) +string(4) "c3ab" +string(4) "c3ab" bool(true)
ì -int(236) -int(236) +string(4) "c3ac" +string(4) "c3ac" bool(true)
í -int(237) -int(237) +string(4) "c3ad" +string(4) "c3ad" bool(true)
î -int(238) -int(238) +string(4) "c3ae" +string(4) "c3ae" bool(true)
ï -int(239) -int(239) +string(4) "c3af" +string(4) "c3af" bool(true)
ð -int(240) -int(240) +string(4) "c3b0" +string(4) "c3b0" bool(true)
ñ -int(241) -int(241) +string(4) "c3b1" +string(4) "c3b1" bool(true)
ò -int(242) -int(242) +string(4) "c3b2" +string(4) "c3b2" bool(true)
ó -int(243) -int(243) +string(4) "c3b3" +string(4) "c3b3" bool(true)
ô -int(244) -int(244) +string(4) "c3b4" +string(4) "c3b4" bool(true)
õ -int(245) -int(245) +string(4) "c3b5" +string(4) "c3b5" bool(true)
ö -int(246) -int(246) +string(4) "c3b6" +string(4) "c3b6" bool(true)
÷ -int(247) -int(247) +string(4) "c3b7" +string(4) "c3b7" bool(true)
ø -int(248) -int(248) +string(4) "c3b8" +string(4) "c3b8" bool(true)
ù -int(249) -int(249) +string(4) "c3b9" +string(4) "c3b9" bool(true)
ú -int(250) -int(250) +string(4) "c3ba" +string(4) "c3ba" bool(true)
û -int(251) -int(251) +string(4) "c3bb" +string(4) "c3bb" bool(true)
ü -int(252) -int(252) +string(4) "c3bc" +string(4) "c3bc" bool(true)
ý -int(253) -int(253) +string(4) "c3bd" +string(4) "c3bd" bool(true)
þ -int(254) -int(254) +string(4) "c3be" +string(4) "c3be" bool(true)
ÿ -int(255) -int(255) -bool(true) \ No newline at end of file +string(4) "c3bf" +string(4) "c3bf" +bool(true) diff --git a/ext/wddx/tests/bug37587.phpt b/ext/wddx/tests/bug37587.phpt index 5361d38da..7780355b8 100755 --- a/ext/wddx/tests/bug37587.phpt +++ b/ext/wddx/tests/bug37587.phpt @@ -5,8 +5,8 @@ Bug #37587 (var without attribute causes segfault) --FILE-- +var_dump(wddx_deserialize(<<
@@ -19,7 +19,7 @@ data:, EOF -))); +)); ?> ===DONE=== diff --git a/ext/wddx/tests/bug45901.phpt b/ext/wddx/tests/bug45901.phpt new file mode 100644 index 000000000..4084ccbf2 --- /dev/null +++ b/ext/wddx/tests/bug45901.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #45901 (wddx_serialize_value crash with SimpleXMLElement object) +--SKIPIF-- + +--FILE-- +'); +$xml->addChild('test'); +echo wddx_serialize_value($xml, 'Variables') . "\n"; +echo "DONE"; +?> +--EXPECTF-- +
Variables
SimpleXMLElementSimpleXMLElement
+DONE \ No newline at end of file diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index fcd6c6072..415d40b5a 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: wddx.c,v 1.119.2.10.2.18 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: wddx.c,v 1.119.2.10.2.22 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -371,16 +371,14 @@ static void php_wddx_serialize_string(wddx_packet *packet, zval *var TSRMLS_DC) php_wddx_add_chunk_static(packet, WDDX_STRING_S); if (Z_STRLEN_P(var) > 0) { - char *buf, *enc; - int buf_len, enc_len; + char *buf; + int buf_len; buf = php_escape_html_entities(Z_STRVAL_P(var), Z_STRLEN_P(var), &buf_len, 0, ENT_QUOTES, NULL TSRMLS_CC); - enc = xml_utf8_encode(buf, buf_len, &enc_len, "ISO-8859-1"); - php_wddx_add_chunk_ex(packet, enc, enc_len); + php_wddx_add_chunk_ex(packet, buf, buf_len); efree(buf); - efree(enc); } php_wddx_add_chunk_static(packet, WDDX_STRING_E); } @@ -432,6 +430,7 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj) char *key; ulong idx; char tmp_buf[WDDX_BUF_LEN]; + HashTable *objhash, *sleephash; TSRMLS_FETCH(); MAKE_STD_ZVAL(fname); @@ -442,7 +441,7 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj) * array of property names to be serialized. */ if (call_user_function_ex(CG(function_table), &obj, fname, &retval, 0, 0, 1, NULL TSRMLS_CC) == SUCCESS) { - if (retval && HASH_OF(retval)) { + if (retval && (sleephash = HASH_OF(retval))) { PHP_CLASS_ATTRIBUTES; PHP_SET_CLASS_ATTRIBUTES(obj); @@ -456,16 +455,18 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj) php_wddx_add_chunk_static(packet, WDDX_VAR_E); PHP_CLEANUP_CLASS_ATTRIBUTES(); + + objhash = HASH_OF(obj); - for (zend_hash_internal_pointer_reset(HASH_OF(retval)); - zend_hash_get_current_data(HASH_OF(retval), (void **)&varname) == SUCCESS; - zend_hash_move_forward(HASH_OF(retval))) { + for (zend_hash_internal_pointer_reset(sleephash); + zend_hash_get_current_data(sleephash, (void **)&varname) == SUCCESS; + zend_hash_move_forward(sleephash)) { if (Z_TYPE_PP(varname) != IS_STRING) { php_error_docref(NULL TSRMLS_CC, E_NOTICE, "__sleep should return an array only containing the names of instance-variables to serialize."); continue; } - if (zend_hash_find(HASH_OF(obj), Z_STRVAL_PP(varname), Z_STRLEN_PP(varname)+1, (void **)&ent) == SUCCESS) { + if (zend_hash_find(objhash, Z_STRVAL_PP(varname), Z_STRLEN_PP(varname)+1, (void **)&ent) == SUCCESS) { php_wddx_serialize_var(packet, *ent, Z_STRVAL_PP(varname), Z_STRLEN_PP(varname) TSRMLS_CC); } } @@ -489,13 +490,15 @@ static void php_wddx_serialize_object(wddx_packet *packet, zval *obj) PHP_CLEANUP_CLASS_ATTRIBUTES(); - for (zend_hash_internal_pointer_reset(HASH_OF(obj)); - zend_hash_get_current_data(HASH_OF(obj), (void**)&ent) == SUCCESS; - zend_hash_move_forward(HASH_OF(obj))) { - if (*ent == obj) + objhash = HASH_OF(obj); + for (zend_hash_internal_pointer_reset(objhash); + zend_hash_get_current_data(objhash, (void**)&ent) == SUCCESS; + zend_hash_move_forward(objhash)) { + if (*ent == obj) { continue; + } - if (zend_hash_get_current_key_ex(HASH_OF(obj), &key, &key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) { + if (zend_hash_get_current_key_ex(objhash, &key, &key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) { char *class_name, *prop_name; zend_unmangle_property_name(key, key_len-1, &class_name, &prop_name); @@ -783,10 +786,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) { - char *decoded; - int decoded_len; - decoded = xml_utf8_decode(atts[i], strlen(atts[i]), &decoded_len, "ISO-8859-1"); - stack->varname = decoded; + stack->varname = estrdup(atts[i]); break; } } @@ -803,12 +803,9 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X zval *tmp; char *key; char *p1, *p2, *endp; - char *decoded; - int decoded_len; - decoded = xml_utf8_decode(atts[i], strlen(atts[i]), &decoded_len, "ISO-8859-1"); - endp = (char *)decoded + decoded_len; - p1 = (char *)decoded; + endp = (char *)atts[i] + strlen(atts[i]); + p1 = (char *)atts[i]; while ((p2 = php_memnstr(p1, ",", sizeof(",")-1, endp)) != NULL) { key = estrndup(p1, p2 - p1); MAKE_STD_ZVAL(tmp); @@ -824,7 +821,6 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X add_assoc_zval_ex(ent.data, p1, endp - p1 + 1, tmp); } - efree(decoded); break; } } @@ -840,19 +836,15 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) { - char *decoded; - int decoded_len; st_entry *recordset; zval **field; - decoded = xml_utf8_decode(atts[i], strlen(atts[i]), &decoded_len, "ISO-8859-1"); if (wddx_stack_top(stack, (void**)&recordset) == SUCCESS && recordset->type == ST_RECORDSET && - zend_hash_find(Z_ARRVAL_P(recordset->data), decoded, decoded_len+1, (void**)&field) == SUCCESS) { + zend_hash_find(Z_ARRVAL_P(recordset->data), (char*)atts[i], strlen(atts[i])+1, (void**)&field) == SUCCESS) { ent.data = *field; } - efree(decoded); break; } } @@ -1003,28 +995,22 @@ static void php_wddx_process_data(void *user_data, const XML_Char *s, int len) { st_entry *ent; wddx_stack *stack = (wddx_stack *)user_data; - char *decoded; - int decoded_len; TSRMLS_FETCH(); if (!wddx_stack_is_empty(stack) && !stack->done) { wddx_stack_top(stack, (void**)&ent); switch (Z_TYPE_P(ent)) { case ST_STRING: - decoded = xml_utf8_decode(s, len, &decoded_len, "ISO-8859-1"); - if (Z_STRLEN_P(ent->data) == 0) { STR_FREE(Z_STRVAL_P(ent->data)); - Z_STRVAL_P(ent->data) = estrndup(decoded, decoded_len); - Z_STRLEN_P(ent->data) = decoded_len; + Z_STRVAL_P(ent->data) = estrndup(s, len); + Z_STRLEN_P(ent->data) = len; } else { - Z_STRVAL_P(ent->data) = erealloc(Z_STRVAL_P(ent->data), Z_STRLEN_P(ent->data) + decoded_len + 1); - memcpy(Z_STRVAL_P(ent->data) + Z_STRLEN_P(ent->data), decoded, decoded_len); - Z_STRLEN_P(ent->data) += decoded_len; + Z_STRVAL_P(ent->data) = erealloc(Z_STRVAL_P(ent->data), Z_STRLEN_P(ent->data) + len + 1); + memcpy(Z_STRVAL_P(ent->data) + Z_STRLEN_P(ent->data), s, len); + Z_STRLEN_P(ent->data) += len; Z_STRVAL_P(ent->data)[Z_STRLEN_P(ent->data)] = '\0'; } - - efree(decoded); break; case ST_BINARY: @@ -1095,7 +1081,7 @@ int php_wddx_deserialize_ex(char *value, int vallen, zval *return_value) int retval; wddx_stack_init(&stack); - parser = XML_ParserCreate("ISO-8859-1"); + parser = XML_ParserCreate("UTF-8"); XML_SetUserData(parser, &stack); XML_SetElementHandler(parser, php_wddx_push_element, php_wddx_pop_element); diff --git a/ext/xml/compat.c b/ext/xml/compat.c index 7b4c90dbd..878b9214a 100644 --- a/ext/xml/compat.c +++ b/ext/xml/compat.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -40,7 +40,7 @@ _qualify_namespace(XML_Parser parser, const xmlChar *name, const xmlChar *URI, x /* Use libxml functions otherwise its memory deallocation is screwed up */ *qualified = xmlStrdup(URI); *qualified = xmlStrncat(*qualified, parser->_ns_seperator, 1); - *qualified = xmlStrncat(*qualified, name, strlen(name)); + *qualified = xmlStrncat(*qualified, name, xmlStrlen(name)); } else { *qualified = xmlStrdup(name); } @@ -104,7 +104,66 @@ _start_element_handler_ns(void *user, const xmlChar *name, const xmlChar *prefix y = 0; } - if (parser->h_start_element == NULL && parser->h_default == NULL) { + if (parser->h_start_element == NULL) { + if (parser->h_default) { + + if (prefix) { + qualified_name = xmlStrncatNew((xmlChar *)"<", prefix, xmlStrlen(prefix)); + qualified_name = xmlStrncat(qualified_name, (xmlChar *)":", 1); + qualified_name = xmlStrncat(qualified_name, name, xmlStrlen(name)); + } else { + qualified_name = xmlStrncatNew((xmlChar *)"<", name, xmlStrlen(name)); + } + + if (namespaces) { + int i, j; + for (i = 0,j = 0;j < nb_namespaces;j++) { + int ns_len; + char *ns_string, *ns_prefix, *ns_url; + + ns_prefix = (char *) namespaces[i++]; + ns_url = (char *) namespaces[i++]; + + if (ns_prefix) { + ns_len = spprintf(&ns_string, 0, " xmlns:%s=\"%s\"", ns_prefix, ns_url); + } else { + ns_len = spprintf(&ns_string, 0, " xmlns=\"%s\"", ns_url); + } + qualified_name = xmlStrncat(qualified_name, (xmlChar *)ns_string, ns_len); + + efree(ns_string); + } + } + + if (attributes) { + for (i = 0; i < nb_attributes; i += 1) { + int att_len; + char *att_string, *att_name, *att_value, *att_prefix, *att_valueend; + + att_name = (char *) attributes[y++]; + att_prefix = (char *)attributes[y++]; + y++; + att_value = (char *)attributes[y++]; + att_valueend = (char *)attributes[y++]; + + if (att_prefix) { + att_len = spprintf(&att_string, 0, " %s:%s=\"", att_prefix, att_name); + } else { + att_len = spprintf(&att_string, 0, " %s=\"", att_name); + } + + qualified_name = xmlStrncat(qualified_name, (xmlChar *)att_string, att_len); + qualified_name = xmlStrncat(qualified_name, (xmlChar *)att_value, att_valueend - att_value); + qualified_name = xmlStrncat(qualified_name, (xmlChar *)"\"", 1); + + efree(att_string); + } + + } + qualified_name = xmlStrncat(qualified_name, (xmlChar *)">", 1); + parser->h_default(parser->user, (const XML_Char *) qualified_name, xmlStrlen(qualified_name)); + xmlFree(qualified_name); + } return; } _qualify_namespace(parser, name, URI, &qualified_name); @@ -178,6 +237,18 @@ _end_element_handler_ns(void *user, const xmlChar *name, const xmlChar * prefix, XML_Parser parser = (XML_Parser) user; if (parser->h_end_element == NULL) { + if (parser->h_default) { + char *end_element; + int end_element_len; + + if (prefix) { + end_element_len = spprintf(&end_element, 0, "", (char *) prefix, (char *)name); + } else { + end_element_len = spprintf(&end_element, 0, "", (char *)name); + } + parser->h_default(parser->user, (const XML_Char *) end_element, end_element_len); + efree(end_element); + } return; } @@ -212,7 +283,7 @@ _pi_handler(void *user, const xmlChar *target, const xmlChar *data) if (parser->h_default) { char *full_pi; spprintf(&full_pi, 0, "", (char *)target, (char *)data); - parser->h_default(parser->user, (const XML_Char *) full_pi, xmlStrlen(full_pi)); + parser->h_default(parser->user, (const XML_Char *) full_pi, strlen(full_pi)); efree(full_pi); } return; @@ -411,6 +482,10 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m parser->parser->charset = XML_CHAR_ENCODING_NONE; #endif +#if LIBXML_VERSION >= 20703 + xmlCtxtUseOptions(parser->parser, XML_PARSE_OLDSAX); +#endif + parser->parser->replaceEntities = 1; parser->parser->wellFormed = 0; if (sep != NULL) { @@ -545,10 +620,10 @@ XML_GetErrorCode(XML_Parser parser) static const XML_Char *const error_mapping[] = { "No error", - "Internal error", "No memory", "Invalid document start", "Empty document", + "Not well-formed (invalid token)", "Invalid document end", "Invalid hexadecimal character reference", "Invalid decimal character reference", diff --git a/ext/xml/expat_compat.h b/ext/xml/expat_compat.h index 7eb3236b0..6b34a835a 100644 --- a/ext/xml/expat_compat.h +++ b/ext/xml/expat_compat.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: expat_compat.h,v 1.19.2.1.2.2 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: expat_compat.h,v 1.19.2.1.2.3 2008/12/31 11:17:46 sebastian Exp $ */ #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 f975c21d5..2dd6ed405 100644 --- a/ext/xml/php_xml.h +++ b/ext/xml/php_xml.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xml.h,v 1.28.2.2.2.4 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xml.h,v 1.28.2.2.2.5 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_XML_H #define PHP_XML_H diff --git a/ext/xml/tests/bug43957.phpt b/ext/xml/tests/bug43957.phpt index 34ddcd951..f11d15627 100644 --- a/ext/xml/tests/bug43957.phpt +++ b/ext/xml/tests/bug43957.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug #43957 - utf8_decode() bogus conversion on multibyte indicator near end of string +Bug #43957 (utf8_decode() bogus conversion on multibyte indicator near end of string) --SKIPIF-- +--FILE-- + + 1 + 2 + +HERE; + +$parser = xml_parser_create_ns("ISO-8859-1","@"); +xml_set_default_handler($parser,'defaultfunc'); +xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); +xml_parse($parser, $xml); +xml_parser_free($parser); +?> +--EXPECT-- + + 1 + 2 + diff --git a/ext/xml/tests/utf8_decode_error.phpt b/ext/xml/tests/utf8_decode_error.phpt new file mode 100644 index 000000000..6ece3223d --- /dev/null +++ b/ext/xml/tests/utf8_decode_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test utf8_decode() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing utf8_decode() : error conditions *** + +-- Testing utf8_decode() function with Zero arguments -- + +Warning: Wrong parameter count for utf8_decode() in %s on line %d +NULL + +-- Testing utf8_decode() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for utf8_decode() in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/xml/tests/utf8_decode_variation1.phpt b/ext/xml/tests/utf8_decode_variation1.phpt new file mode 100644 index 000000000..64d506793 --- /dev/null +++ b/ext/xml/tests/utf8_decode_variation1.phpt @@ -0,0 +1,165 @@ +--TEST-- +Test utf8_decode() function : usage variations - different types for data +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // object data + new aClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for data + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( utf8_decode($value) ); +}; + +echo "Done"; +?> +--EXPECTF-- +*** Testing utf8_decode() : usage variations *** + +Arg value 0 +string(1) "0" + +Arg value 1 +string(1) "1" + +Arg value 12345 +string(5) "12345" + +Arg value -2345 +string(5) "-2345" + +Arg value 10.5 +string(4) "10.5" + +Arg value -10.5 +string(5) "-10.5" + +Arg value 101234567000 +string(12) "101234567000" + +Arg value 1.07654321E-9 +string(13) "1.07654321E-9" + +Arg value 0.5 +string(3) "0.5" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value 1 +string(1) "1" + +Arg value +string(0) "" + +Arg value 1 +string(1) "1" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value Some Ascii Data +string(15) "Some Ascii Data" + +Arg value +string(0) "" + +Arg value +string(0) "" +Done diff --git a/ext/xml/tests/utf8_encode_error.phpt b/ext/xml/tests/utf8_encode_error.phpt new file mode 100644 index 000000000..ebc7dd29c --- /dev/null +++ b/ext/xml/tests/utf8_encode_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test utf8_encode() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing utf8_encode() : error conditions *** + +-- Testing utf8_encode() function with Zero arguments -- + +Warning: Wrong parameter count for utf8_encode() in %s on line %d +NULL + +-- Testing utf8_encode() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for utf8_encode() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/utf8_encode_variation1.phpt b/ext/xml/tests/utf8_encode_variation1.phpt new file mode 100644 index 000000000..3bb92afe2 --- /dev/null +++ b/ext/xml/tests/utf8_encode_variation1.phpt @@ -0,0 +1,165 @@ +--TEST-- +Test utf8_encode() function : usage variations - +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // object data + new aClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for data + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( utf8_encode($value) ); +}; + +echo "Done"; +?> +--EXPECTF-- +*** Testing utf8_encode() : usage variations *** + +Arg value 0 +string(1) "0" + +Arg value 1 +string(1) "1" + +Arg value 12345 +string(5) "12345" + +Arg value -2345 +string(5) "-2345" + +Arg value 10.5 +string(4) "10.5" + +Arg value -10.5 +string(5) "-10.5" + +Arg value 101234567000 +string(12) "101234567000" + +Arg value 1.07654321E-9 +string(13) "1.07654321E-9" + +Arg value 0.5 +string(3) "0.5" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value Array +string(5) "Array" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value 1 +string(1) "1" + +Arg value +string(0) "" + +Arg value 1 +string(1) "1" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value +string(0) "" + +Arg value Some Ascii Data +string(15) "Some Ascii Data" + +Arg value +string(0) "" + +Arg value +string(0) "" +Done diff --git a/ext/xml/tests/xml_error_string_error.phpt b/ext/xml/tests/xml_error_string_error.phpt new file mode 100644 index 000000000..4c8f25476 --- /dev/null +++ b/ext/xml/tests/xml_error_string_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_error_string() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_error_string() : error conditions *** + +-- Testing xml_error_string() function with Zero arguments -- + +Warning: Wrong parameter count for xml_error_string() in %s on line %d +NULL + +-- Testing xml_error_string() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_error_string() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_error_string_variation1.phpt b/ext/xml/tests/xml_error_string_variation1.phpt new file mode 100644 index 000000000..434cf5b55 --- /dev/null +++ b/ext/xml/tests/xml_error_string_variation1.phpt @@ -0,0 +1,157 @@ +--TEST-- +Test xml_error_string() function : usage variations - test different types for code +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for code + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_error_string($value) ); +}; + +echo "Done"; +?> +--EXPECT-- +*** Testing xml_error_string() : usage variations *** + +Arg value 10.5 +string(22) "XML_ERR_CHARREF_AT_EOF" + +Arg value -10.5 +string(7) "Unknown" + +Arg value 101234567000 +string(7) "Unknown" + +Arg value 1.07654321E-9 +string(8) "No error" + +Arg value 0.5 +string(8) "No error" + +Arg value Array +string(8) "No error" + +Arg value Array +string(9) "No memory" + +Arg value Array +string(9) "No memory" + +Arg value Array +string(9) "No memory" + +Arg value Array +string(9) "No memory" + +Arg value +string(8) "No error" + +Arg value +string(8) "No error" + +Arg value 1 +string(9) "No memory" + +Arg value +string(8) "No error" + +Arg value 1 +string(9) "No memory" + +Arg value +string(8) "No error" + +Arg value +string(8) "No error" + +Arg value +string(8) "No error" + +Arg value string +string(8) "No error" + +Arg value string +string(8) "No error" + +Arg value Some Ascii Data +string(9) "No memory" + +Arg value +string(8) "No error" + +Arg value +string(8) "No error" +Done diff --git a/ext/xml/tests/xml_get_current_byte_index_error.phpt b/ext/xml/tests/xml_get_current_byte_index_error.phpt new file mode 100644 index 000000000..d9001e65b --- /dev/null +++ b/ext/xml/tests/xml_get_current_byte_index_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_get_current_byte_index() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_get_current_byte_index() : error conditions *** + +-- Testing xml_get_current_byte_index() function with Zero arguments -- + +Warning: Wrong parameter count for xml_get_current_byte_index() in %s on line %d +NULL + +-- Testing xml_get_current_byte_index() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_get_current_byte_index() in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_get_current_byte_index_variation1.phpt b/ext/xml/tests/xml_get_current_byte_index_variation1.phpt new file mode 100644 index 000000000..2c0df15e1 --- /dev/null +++ b/ext/xml/tests/xml_get_current_byte_index_variation1.phpt @@ -0,0 +1,239 @@ +--TEST-- +Test xml_get_current_byte_index() function : usage variations - +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_get_current_byte_index($value) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_get_current_byte_index() : usage variations *** + +Arg value 0 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_get_current_byte_index(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_byte_index(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_get_current_column_number_error.phpt b/ext/xml/tests/xml_get_current_column_number_error.phpt new file mode 100644 index 000000000..5d47c4cd1 --- /dev/null +++ b/ext/xml/tests/xml_get_current_column_number_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_get_current_column_number() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_get_current_column_number() : error conditions *** + +-- Testing xml_get_current_column_number() function with Zero arguments -- + +Warning: Wrong parameter count for xml_get_current_column_number() in %s on line %d +NULL + +-- Testing xml_get_current_column_number() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_get_current_column_number() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_get_current_column_number_variation1.phpt b/ext/xml/tests/xml_get_current_column_number_variation1.phpt new file mode 100644 index 000000000..babc16c64 --- /dev/null +++ b/ext/xml/tests/xml_get_current_column_number_variation1.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test xml_get_current_column_number() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_get_current_column_number($value) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_get_current_column_number() : usage variations *** + +Arg value 0 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_get_current_column_number(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_column_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_get_current_line_number_error.phpt b/ext/xml/tests/xml_get_current_line_number_error.phpt new file mode 100644 index 000000000..7c8e24490 --- /dev/null +++ b/ext/xml/tests/xml_get_current_line_number_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_get_current_line_number() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_get_current_line_number() : error conditions *** + +-- Testing xml_get_current_line_number() function with Zero arguments -- + +Warning: Wrong parameter count for xml_get_current_line_number() in %s on line %d +NULL + +-- Testing xml_get_current_line_number() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_get_current_line_number() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_get_current_line_number_variation1.phpt b/ext/xml/tests/xml_get_current_line_number_variation1.phpt new file mode 100644 index 000000000..c13fd5488 --- /dev/null +++ b/ext/xml/tests/xml_get_current_line_number_variation1.phpt @@ -0,0 +1,239 @@ +--TEST-- +Test xml_get_current_line_number() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_get_current_line_number($value) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_get_current_line_number() : usage variations *** + +Arg value 0 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_get_current_line_number(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_current_line_number(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_get_error_code_error.phpt b/ext/xml/tests/xml_get_error_code_error.phpt new file mode 100644 index 000000000..7007a46fb --- /dev/null +++ b/ext/xml/tests/xml_get_error_code_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_get_error_code() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_get_error_code() : error conditions *** + +-- Testing xml_get_error_code() function with Zero arguments -- + +Warning: Wrong parameter count for xml_get_error_code() in %s on line %d +NULL + +-- Testing xml_get_error_code() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_get_error_code() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_get_error_code_variation1.phpt b/ext/xml/tests/xml_get_error_code_variation1.phpt new file mode 100644 index 000000000..51a7aeed5 --- /dev/null +++ b/ext/xml/tests/xml_get_error_code_variation1.phpt @@ -0,0 +1,239 @@ +--TEST-- +Test xml_get_error_code() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_get_error_code($value) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_get_error_code() : usage variations *** + +Arg value 0 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_get_error_code(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_get_error_code(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parse_error.phpt b/ext/xml/tests/xml_parse_error.phpt new file mode 100644 index 000000000..82d01a43e --- /dev/null +++ b/ext/xml/tests/xml_parse_error.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test xml_parse() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parse() : error conditions *** + +-- Testing xml_parse() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parse() in %s on line %d +NULL + +-- Testing xml_parse() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parse() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_parse_into_struct_error.phpt b/ext/xml/tests/xml_parse_into_struct_error.phpt new file mode 100644 index 000000000..c2512f6a0 --- /dev/null +++ b/ext/xml/tests/xml_parse_into_struct_error.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test xml_parse_into_struct() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parse_into_struct() : error conditions *** + +-- Testing xml_parse_into_struct() function with more than expected no. of arguments -- + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +-- Testing xml_parse_into_struct() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parse_into_struct() in %s on line %d +NULL +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_parse_into_struct_variation.phpt b/ext/xml/tests/xml_parse_into_struct_variation.phpt new file mode 100644 index 000000000..a353e5141 --- /dev/null +++ b/ext/xml/tests/xml_parse_into_struct_variation.phpt @@ -0,0 +1,120 @@ +--TEST-- +Test xml_parse_into_struct() function : variation +--SKIPIF-- + +--FILE-- +simple notesimple note"; +$p = xml_parser_create(); +xml_parse_into_struct($p, $simple, $vals, $index); +xml_parser_free($p); +echo "Index array\n"; +print_r($index); +echo "\nVals array\n"; +print_r($vals); + + +echo "Done"; +?> +--EXPECT-- +*** Testing xml_parse_into_struct() : variation *** +Index array +Array +( + [MAIN] => Array + ( + [0] => 0 + [1] => 7 + ) + + [PARA] => Array + ( + [0] => 1 + [1] => 3 + [2] => 4 + [3] => 6 + ) + + [NOTE] => Array + ( + [0] => 2 + [1] => 5 + ) + +) + +Vals array +Array +( + [0] => Array + ( + [tag] => MAIN + [type] => open + [level] => 1 + ) + + [1] => Array + ( + [tag] => PARA + [type] => open + [level] => 2 + ) + + [2] => Array + ( + [tag] => NOTE + [type] => complete + [level] => 3 + [value] => simple note + ) + + [3] => Array + ( + [tag] => PARA + [type] => close + [level] => 2 + ) + + [4] => Array + ( + [tag] => PARA + [type] => open + [level] => 2 + ) + + [5] => Array + ( + [tag] => NOTE + [type] => complete + [level] => 3 + [value] => simple note + ) + + [6] => Array + ( + [tag] => PARA + [type] => close + [level] => 2 + ) + + [7] => Array + ( + [tag] => MAIN + [type] => close + [level] => 1 + ) + +) +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_parse_into_struct_variation1.phpt b/ext/xml/tests/xml_parse_into_struct_variation1.phpt new file mode 100644 index 000000000..2ce679e5c --- /dev/null +++ b/ext/xml/tests/xml_parse_into_struct_variation1.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test xml_parse_into_struct() function : usage variations - different types for parser +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parse_into_struct($value, $data, $struct, $index) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parse_into_struct() : usage variations *** + +Arg value 0 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parse_into_struct(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse_into_struct(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parse_variation1.phpt b/ext/xml/tests/xml_parse_variation1.phpt new file mode 100644 index 000000000..3ea494a6f --- /dev/null +++ b/ext/xml/tests/xml_parse_variation1.phpt @@ -0,0 +1,241 @@ +--TEST-- +Test xml_parse() function : usage variations - different types of parser +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parse($value, $data, $isFinal) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parse() : usage variations *** + +Arg value 0 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parse(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parse(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_create_error.phpt b/ext/xml/tests/xml_parser_create_error.phpt new file mode 100644 index 000000000..571350e87 --- /dev/null +++ b/ext/xml/tests/xml_parser_create_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test xml_parser_create() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parser_create() : error conditions *** + +-- Testing xml_parser_create() function with more than expected no. of arguments -- + +Warning: xml_parser_create() expects at most 1 parameter, 2 given in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_create_ns_error.phpt b/ext/xml/tests/xml_parser_create_ns_error.phpt new file mode 100644 index 000000000..fd50f2948 --- /dev/null +++ b/ext/xml/tests/xml_parser_create_ns_error.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test xml_parser_create_ns() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parser_create_ns() : error conditions *** + +-- Testing xml_parser_create_ns() function with more than expected no. of arguments -- + +Warning: xml_parser_create_ns() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_parser_create_ns_variation1.phpt b/ext/xml/tests/xml_parser_create_ns_variation1.phpt new file mode 100644 index 000000000..5446a4f3e --- /dev/null +++ b/ext/xml/tests/xml_parser_create_ns_variation1.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test xml_parser_create_ns() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + "ISO-8859-1", + "UTF-8", + "US-ASCII", + "UTF-32", + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for encoding + +foreach($values as $value) { + echo "\nArg value $value \n"; + $res = xml_parser_create_ns($value); + var_dump($res); + if ($res !== false) { + xml_parser_free($res); + } +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_create_ns() : usage variations *** + +Arg value 0 + +Warning: xml_parser_create_ns(): unsupported source encoding "0" in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_create_ns(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parser_create_ns(): unsupported source encoding "12345" in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_create_ns(): unsupported source encoding "-2345" in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_create_ns(): unsupported source encoding "10.5" in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_create_ns(): unsupported source encoding "-10.5" in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_create_ns(): unsupported source encoding "101234567000" in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_create_ns(): unsupported source encoding "1.07654321E-9" in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_create_ns(): unsupported source encoding "0.5" in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create_ns() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create_ns() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create_ns() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create_ns() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create_ns() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value 1 + +Warning: xml_parser_create_ns(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value 1 + +Warning: xml_parser_create_ns(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value string + +Warning: xml_parser_create_ns(): unsupported source encoding "string" in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_create_ns(): unsupported source encoding "string" in %s on line %d +bool(false) + +Arg value ISO-8859-1 +resource(%d) of type (xml) + +Arg value UTF-8 +resource(%d) of type (xml) + +Arg value US-ASCII +resource(%d) of type (xml) + +Arg value UTF-32 + +Warning: xml_parser_create_ns(): unsupported source encoding "UTF-32" in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parser_create_ns(): unsupported source encoding "Some Ascii Data" in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parser_create_ns() expects parameter 1 to be string, resource given in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) +Done diff --git a/ext/xml/tests/xml_parser_create_variation1.phpt b/ext/xml/tests/xml_parser_create_variation1.phpt new file mode 100644 index 000000000..445b40d08 --- /dev/null +++ b/ext/xml/tests/xml_parser_create_variation1.phpt @@ -0,0 +1,245 @@ +--TEST-- +Test xml_parser_create() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + "ISO-8859-1", + "UTF-8", + "US-ASCII", + "UTF-32", + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for encoding + +foreach($values as $value) { + echo "\nArg value $value \n"; + $res = xml_parser_create($value); + var_dump($res); + if ($res !== false) { + xml_parser_free($res); + } +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_create() : usage variations *** + +Arg value 0 + +Warning: xml_parser_create(): unsupported source encoding "0" in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_create(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parser_create(): unsupported source encoding "12345" in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_create(): unsupported source encoding "-2345" in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_create(): unsupported source encoding "10.5" in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_create(): unsupported source encoding "-10.5" in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_create(): unsupported source encoding "101234567000" in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_create(): unsupported source encoding "1.07654321E-9" in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_create(): unsupported source encoding "0.5" in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_create() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value 1 + +Warning: xml_parser_create(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value 1 + +Warning: xml_parser_create(): unsupported source encoding "1" in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) + +Arg value string + +Warning: xml_parser_create(): unsupported source encoding "string" in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_create(): unsupported source encoding "string" in %s on line %d +bool(false) + +Arg value ISO-8859-1 +resource(%d) of type (xml) + +Arg value UTF-8 +resource(%d) of type (xml) + +Arg value US-ASCII +resource(%d) of type (xml) + +Arg value UTF-32 + +Warning: xml_parser_create(): unsupported source encoding "UTF-32" in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parser_create(): unsupported source encoding "Some Ascii Data" in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parser_create() expects parameter 1 to be string, resource given in %s on line %d +bool(false) + +Arg value +resource(%d) of type (xml) + +Arg value +resource(%d) of type (xml) +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_parser_free_error.phpt b/ext/xml/tests/xml_parser_free_error.phpt new file mode 100644 index 000000000..a28940ae5 --- /dev/null +++ b/ext/xml/tests/xml_parser_free_error.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test xml_parser_free() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parser_free() : error conditions *** + +-- Testing xml_parser_free() function with Zero arguments -- + +Warning: Wrong parameter count for xml_parser_free() in %s on line %d +NULL + +-- Testing xml_parser_free() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parser_free() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_parser_free_variation1.phpt b/ext/xml/tests/xml_parser_free_variation1.phpt new file mode 100644 index 000000000..b6feadd99 --- /dev/null +++ b/ext/xml/tests/xml_parser_free_variation1.phpt @@ -0,0 +1,239 @@ +--TEST-- +Test xml_parser_free() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_free($value) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_free() : usage variations *** + +Arg value 0 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parser_free(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_free(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_get_option_error.phpt b/ext/xml/tests/xml_parser_get_option_error.phpt new file mode 100644 index 000000000..354329f7e --- /dev/null +++ b/ext/xml/tests/xml_parser_get_option_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test xml_parser_get_option() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parser_get_option() : error conditions *** + +-- Testing xml_parser_get_option() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parser_get_option() in %s on line %d +NULL + +-- Testing xml_parser_get_option() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parser_get_option() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_parser_get_option_variation1.phpt b/ext/xml/tests/xml_parser_get_option_variation1.phpt new file mode 100644 index 000000000..8d16e742a --- /dev/null +++ b/ext/xml/tests/xml_parser_get_option_variation1.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test xml_parser_get_option() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_get_option($value, $option) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_get_option() : usage variations *** + +Arg value 0 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parser_get_option(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_get_option_variation2.phpt b/ext/xml/tests/xml_parser_get_option_variation2.phpt new file mode 100644 index 000000000..4d6d9924a --- /dev/null +++ b/ext/xml/tests/xml_parser_get_option_variation2.phpt @@ -0,0 +1,215 @@ +--TEST-- +Test xml_parser_get_option() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for option + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_get_option($parser, $value) ); +}; + +fclose($fp); +xml_parser_free($parser); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_get_option() : usage variations *** + +Arg value 12345 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value Array +int(1) + +Arg value Array +int(1) + +Arg value Array +int(1) + +Arg value Array +int(1) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1 +int(1) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1 +int(1) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value Some Ascii Data +int(1) + +Arg value Resource id %s + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_get_option(): Unknown option in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_set_option_basic.phpt b/ext/xml/tests/xml_parser_set_option_basic.phpt new file mode 100644 index 000000000..61316a4b0 --- /dev/null +++ b/ext/xml/tests/xml_parser_set_option_basic.phpt @@ -0,0 +1,57 @@ +--TEST-- +Test xml_set_notation_decl_handler function : basic +--SKIPIF-- + +--FILE-- + +--EXPECT-- +Simple testcase for xml_parser_get_option() function +int(1) +string(5) "UTF-8" +bool(true) +bool(true) +int(1) +string(10) "ISO-8859-1" +bool(true) +bool(true) +int(0) +string(5) "UTF-8" +bool(true) +string(8) "US-ASCII" +Done diff --git a/ext/xml/tests/xml_parser_set_option_error.phpt b/ext/xml/tests/xml_parser_set_option_error.phpt new file mode 100644 index 000000000..6b2b426f1 --- /dev/null +++ b/ext/xml/tests/xml_parser_set_option_error.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test xml_parser_set_option() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_parser_set_option() : error conditions *** + +-- Testing xml_parser_set_option() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parser_set_option() in %s on line %d +NULL + +-- Testing xml_parser_set_option() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_parser_set_option() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_parser_set_option_variation1.phpt b/ext/xml/tests/xml_parser_set_option_variation1.phpt new file mode 100644 index 000000000..90058bf7f --- /dev/null +++ b/ext/xml/tests/xml_parser_set_option_variation1.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test xml_parser_set_option() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_set_option($value, $option, 1) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_set_option() : usage variations *** + +Arg value 0 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_parser_set_option(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_parser_set_option_variation2.phpt b/ext/xml/tests/xml_parser_set_option_variation2.phpt new file mode 100644 index 000000000..93d87a6f7 --- /dev/null +++ b/ext/xml/tests/xml_parser_set_option_variation2.phpt @@ -0,0 +1,204 @@ +--TEST-- +Test xml_parser_set_option() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for option + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_set_option($parser, $value, 1) ); +}; + +xml_parser_free($parser); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_set_option() : usage variations *** + +Arg value 12345 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1 +bool(true) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value 1 +bool(true) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value string + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value Some Ascii Data +bool(true) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) + +Arg value + +Warning: xml_parser_set_option(): Unknown option in %s on line %d +bool(false) +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_parser_set_option_variation3.phpt b/ext/xml/tests/xml_parser_set_option_variation3.phpt new file mode 100644 index 000000000..5f9880390 --- /dev/null +++ b/ext/xml/tests/xml_parser_set_option_variation3.phpt @@ -0,0 +1,187 @@ +--TEST-- +Test xml_parser_set_option() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for value + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_parser_set_option($parser, $option, $value) ); +}; + +fclose($fp); +xml_parser_free($parser); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_parser_set_option() : usage variations *** + +Arg value 0 +bool(true) + +Arg value 1 +bool(true) + +Arg value 12345 +bool(true) + +Arg value -2345 +bool(true) + +Arg value 10.5 +bool(true) + +Arg value -10.5 +bool(true) + +Arg value 101234567000 +bool(true) + +Arg value 1.07654321E-9 +bool(true) + +Arg value 0.5 +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value Array +bool(true) + +Arg value +bool(true) + +Arg value +bool(true) + +Arg value 1 +bool(true) + +Arg value +bool(true) + +Arg value 1 +bool(true) + +Arg value +bool(true) + +Arg value +bool(true) + +Arg value +bool(true) + +Arg value string +bool(true) + +Arg value string +bool(true) + +Arg value Some Ascii Data +bool(true) + +Arg value Resource id %s +bool(true) + +Arg value +bool(true) + +Arg value +bool(true) +Done diff --git a/ext/xml/tests/xml_set_character_data_handler_error.phpt b/ext/xml/tests/xml_set_character_data_handler_error.phpt new file mode 100644 index 000000000..23fb9a23c --- /dev/null +++ b/ext/xml/tests/xml_set_character_data_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_character_data_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_character_data_handler() : error conditions *** + +-- Testing xml_set_character_data_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_character_data_handler() in %s on line %d +NULL + +-- Testing xml_set_character_data_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_character_data_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_character_data_handler_variation1.phpt b/ext/xml/tests/xml_set_character_data_handler_variation1.phpt new file mode 100644 index 000000000..060970011 --- /dev/null +++ b/ext/xml/tests/xml_set_character_data_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_character_data_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_character_data_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_character_data_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_character_data_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_character_data_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_default_handler_error.phpt b/ext/xml/tests/xml_set_default_handler_error.phpt new file mode 100644 index 000000000..91d1c3da3 --- /dev/null +++ b/ext/xml/tests/xml_set_default_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_default_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_default_handler() : error conditions *** + +-- Testing xml_set_default_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_default_handler() in %s on line %d +NULL + +-- Testing xml_set_default_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_default_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_default_handler_variation1.phpt b/ext/xml/tests/xml_set_default_handler_variation1.phpt new file mode 100644 index 000000000..77903f746 --- /dev/null +++ b/ext/xml/tests/xml_set_default_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_default_handler() function : usage variations - test different types for parser +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_default_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_default_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_default_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_default_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_element_handler_error.phpt b/ext/xml/tests/xml_set_element_handler_error.phpt new file mode 100644 index 000000000..a3315dc44 --- /dev/null +++ b/ext/xml/tests/xml_set_element_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_element_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_element_handler() : error conditions *** + +-- Testing xml_set_element_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_element_handler() in %s on line %d +NULL + +-- Testing xml_set_element_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_element_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_element_handler_variation1.phpt b/ext/xml/tests/xml_set_element_handler_variation1.phpt new file mode 100644 index 000000000..d2c318052 --- /dev/null +++ b/ext/xml/tests/xml_set_element_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_element_handler() function : usage variations - test different types for parser +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_element_handler($value, $hdl, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_element_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_element_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_element_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_end_namespace_decl_handler_error.phpt b/ext/xml/tests/xml_set_end_namespace_decl_handler_error.phpt new file mode 100644 index 000000000..e6df90b7a --- /dev/null +++ b/ext/xml/tests/xml_set_end_namespace_decl_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_end_namespace_decl_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_end_namespace_decl_handler() : error conditions *** + +-- Testing xml_set_end_namespace_decl_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_end_namespace_decl_handler() in %s on line %d +NULL + +-- Testing xml_set_end_namespace_decl_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_end_namespace_decl_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_end_namespace_decl_handler_variation1.phpt b/ext/xml/tests/xml_set_end_namespace_decl_handler_variation1.phpt new file mode 100644 index 000000000..3951c4581 --- /dev/null +++ b/ext/xml/tests/xml_set_end_namespace_decl_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_end_namespace_decl_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_end_namespace_decl_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_end_namespace_decl_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_end_namespace_decl_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_end_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_external_entity_ref_handler_error.phpt b/ext/xml/tests/xml_set_external_entity_ref_handler_error.phpt new file mode 100644 index 000000000..0f4dc435e --- /dev/null +++ b/ext/xml/tests/xml_set_external_entity_ref_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_external_entity_ref_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_external_entity_ref_handler() : error conditions *** + +-- Testing xml_set_external_entity_ref_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_external_entity_ref_handler() in %s on line %d +NULL + +-- Testing xml_set_external_entity_ref_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_external_entity_ref_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_external_entity_ref_handler_variation1.phpt b/ext/xml/tests/xml_set_external_entity_ref_handler_variation1.phpt new file mode 100644 index 000000000..dfb9fa610 --- /dev/null +++ b/ext/xml/tests/xml_set_external_entity_ref_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_external_entity_ref_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_external_entity_ref_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_external_entity_ref_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_external_entity_ref_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_external_entity_ref_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_notation_decl_handler_basic.phpt b/ext/xml/tests/xml_set_notation_decl_handler_basic.phpt new file mode 100644 index 000000000..6616681ff --- /dev/null +++ b/ext/xml/tests/xml_set_notation_decl_handler_basic.phpt @@ -0,0 +1,102 @@ +--TEST-- +Test xml_set_notation_decl_handler function : basic +--SKIPIF-- + +--FILE-- + + + + + + + ]> +]> +HERE; + +echo "Simple test of xml_set_notation_decl_handler(() function\n"; +$p1 = new Xml_Parser(); +$p1->parse($xml); +echo "Done\n"; +?> +--EXPECT-- +Simple test of xml_set_notation_decl_handler(() function +notation_decl_handler called +...Name=USDATE +...Base= +...System ID=http://www.schema.net/usdate.not +...Public ID= +notation_decl_handler called +...Name=AUSDATE +...Base= +...System ID=http://www.schema.net/ausdate.not +...Public ID= +notation_decl_handler called +...Name=ISODATE +...Base= +...System ID=http://www.schema.net/isodate.not +...Public ID= +unparsed_entity_decl_handler called +...Entity name=testUS +...Base= +...System ID=test_usdate.xml +...Public ID= +...Notation name=USDATE +unparsed_entity_decl_handler called +...Entity name=testAUS +...Base= +...System ID=test_ausdate.xml +...Public ID= +...Notation name=AUSDATE +unparsed_entity_decl_handler called +...Entity name=testISO +...Base= +...System ID=test_isodate_xml +...Public ID= +...Notation name=ISODATE +Done diff --git a/ext/xml/tests/xml_set_notation_decl_handler_error.phpt b/ext/xml/tests/xml_set_notation_decl_handler_error.phpt new file mode 100644 index 000000000..f84202416 --- /dev/null +++ b/ext/xml/tests/xml_set_notation_decl_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_notation_decl_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_notation_decl_handler() : error conditions *** + +-- Testing xml_set_notation_decl_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_notation_decl_handler() in %s on line %d +NULL + +-- Testing xml_set_notation_decl_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_notation_decl_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_notation_decl_handler_variation1.phpt b/ext/xml/tests/xml_set_notation_decl_handler_variation1.phpt new file mode 100644 index 000000000..450e7d9d6 --- /dev/null +++ b/ext/xml/tests/xml_set_notation_decl_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_notation_decl_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_notation_decl_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_notation_decl_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_notation_decl_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_notation_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_object_error.phpt b/ext/xml/tests/xml_set_object_error.phpt new file mode 100644 index 000000000..3d16d35f8 --- /dev/null +++ b/ext/xml/tests/xml_set_object_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test xml_set_object() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_object() : error conditions *** + +-- Testing xml_set_object() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_object() in %s on line %d +NULL + +-- Testing xml_set_object() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_object() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_object_variation1.phpt b/ext/xml/tests/xml_set_object_variation1.phpt new file mode 100644 index 000000000..ea3781322 --- /dev/null +++ b/ext/xml/tests/xml_set_object_variation1.phpt @@ -0,0 +1,240 @@ +--TEST-- +Test xml_set_object() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_object($value, $obj) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_object() : usage variations *** + +Arg value 0 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_object(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_object_variation2.phpt b/ext/xml/tests/xml_set_object_variation2.phpt new file mode 100644 index 000000000..7ee304c22 --- /dev/null +++ b/ext/xml/tests/xml_set_object_variation2.phpt @@ -0,0 +1,229 @@ +--TEST-- +Test xml_set_object() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for obj + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_object($parser, $value) ); +}; + +xml_parser_free($parser); +fclose($fp); + +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_object() : usage variations *** + +Arg value 0 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_object(): Argument 2 has wrong type in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_processing_instruction_handler_basic.phpt b/ext/xml/tests/xml_set_processing_instruction_handler_basic.phpt new file mode 100644 index 000000000..e5589cee2 --- /dev/null +++ b/ext/xml/tests/xml_set_processing_instruction_handler_basic.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test xml_set_processing_instruction_handler function : basic +--SKIPIF-- + +--FILE-- + + +HERE; + +echo "Simple test of xml_set_processing_instruction_handler() function\n"; +$p1 = new Xml_Parser(); +$p1->parse($xml); +echo "Done\n"; +?> +--EXPECT-- +Simple test of xml_set_processing_instruction_handler() function +Target: xml-stylesheet +Data: href="default.xsl" type="text/xml" +Done \ No newline at end of file diff --git a/ext/xml/tests/xml_set_processing_instruction_handler_error.phpt b/ext/xml/tests/xml_set_processing_instruction_handler_error.phpt new file mode 100644 index 000000000..bfa3f64c6 --- /dev/null +++ b/ext/xml/tests/xml_set_processing_instruction_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_processing_instruction_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_processing_instruction_handler() : error conditions *** + +-- Testing xml_set_processing_instruction_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_processing_instruction_handler() in %s on line %d +NULL + +-- Testing xml_set_processing_instruction_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_processing_instruction_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_processing_instruction_handler_variation1.phpt b/ext/xml/tests/xml_set_processing_instruction_handler_variation1.phpt new file mode 100644 index 000000000..72c56ae35 --- /dev/null +++ b/ext/xml/tests/xml_set_processing_instruction_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_processing_instruction_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_processing_instruction_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_processing_instruction_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_processing_instruction_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_processing_instruction_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_start_namespace_decl_handler_basic.phpt b/ext/xml/tests/xml_set_start_namespace_decl_handler_basic.phpt new file mode 100644 index 000000000..79b8cb88f --- /dev/null +++ b/ext/xml/tests/xml_set_start_namespace_decl_handler_basic.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test xml_set_start_namespace_decl_handler function: basic +--SKIPIF-- + +--FILE-- + +Any old text. +An HTML table cell. + +HERE; + +$parser = xml_parser_create_ns(); +xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); + +var_dump(xml_set_start_namespace_decl_handler( $parser, "Namespace_Start_Handler" )); +var_dump(xml_set_end_namespace_decl_handler( $parser, "Namespace_End_Handler" )); + +xml_parse( $parser, $xml, true); +xml_parser_free( $parser ); + +echo "Done\n"; + +function Namespace_Start_Handler( $parser, $prefix, $uri ) { + echo "Namespace_Start_Handler called\n"; + echo "...Prefix: ". $prefix . "\n"; + echo "...Uri: ". $uri . "\n"; +} + +function Namespace_End_Handler($parser, $prefix) { + echo "Namespace_End_Handler called\n"; + echo "...Prefix: ". $prefix . "\n\n"; +} + +function DefaultHandler( $parser, $data ) { + print( 'DefaultHandler Called
' ); +} +?> +--EXPECT-- +bool(true) +bool(true) +Namespace_Start_Handler called +...Prefix: aw1 +...Uri: http://www.somewhere.com/namespace1 +Namespace_Start_Handler called +...Prefix: aw2 +...Uri: file:/DTD/somewhere.dtd +Done + diff --git a/ext/xml/tests/xml_set_start_namespace_decl_handler_error.phpt b/ext/xml/tests/xml_set_start_namespace_decl_handler_error.phpt new file mode 100644 index 000000000..2db4cfadb --- /dev/null +++ b/ext/xml/tests/xml_set_start_namespace_decl_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_start_namespace_decl_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_start_namespace_decl_handler() : error conditions *** + +-- Testing xml_set_start_namespace_decl_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_start_namespace_decl_handler() in %s on line %d +NULL + +-- Testing xml_set_start_namespace_decl_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_start_namespace_decl_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_start_namespace_decl_handler_variation1.phpt b/ext/xml/tests/xml_set_start_namespace_decl_handler_variation1.phpt new file mode 100644 index 000000000..56f2d20c1 --- /dev/null +++ b/ext/xml/tests/xml_set_start_namespace_decl_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_start_namespace_decl_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_start_namespace_decl_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_start_namespace_decl_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_start_namespace_decl_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_start_namespace_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/tests/xml_set_unparsed_entity_decl_handler_error.phpt b/ext/xml/tests/xml_set_unparsed_entity_decl_handler_error.phpt new file mode 100644 index 000000000..4eb3f0d3d --- /dev/null +++ b/ext/xml/tests/xml_set_unparsed_entity_decl_handler_error.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test xml_set_unparsed_entity_decl_handler() function : error conditions +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Testing xml_set_unparsed_entity_decl_handler() : error conditions *** + +-- Testing xml_set_unparsed_entity_decl_handler() function with more than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_unparsed_entity_decl_handler() in %s on line %d +NULL + +-- Testing xml_set_unparsed_entity_decl_handler() function with less than expected no. of arguments -- + +Warning: Wrong parameter count for xml_set_unparsed_entity_decl_handler() in %s on line %d +NULL +Done diff --git a/ext/xml/tests/xml_set_unparsed_entity_decl_handler_variation1.phpt b/ext/xml/tests/xml_set_unparsed_entity_decl_handler_variation1.phpt new file mode 100644 index 000000000..b62874440 --- /dev/null +++ b/ext/xml/tests/xml_set_unparsed_entity_decl_handler_variation1.phpt @@ -0,0 +1,244 @@ +--TEST-- +Test xml_set_unparsed_entity_decl_handler() function : usage variations +--SKIPIF-- + +--FILE-- + 'red', 'item' => 'pen'), + + // null data + NULL, + null, + + // boolean data + true, + false, + TRUE, + FALSE, + + // empty data + "", + '', + + // string data + "string", + 'string', + + // object data + new aClass(), + + // resource data + $fp, + + // undefined data + $undefined_var, + + // unset data + $unset_var, +); + +// loop through each element of the array for parser + +foreach($values as $value) { + echo "\nArg value $value \n"; + var_dump( xml_set_unparsed_entity_decl_handler($value, $hdl) ); +}; + +fclose($fp); +echo "Done"; +?> +--EXPECTF-- +*** Testing xml_set_unparsed_entity_decl_handler() : usage variations *** + +Arg value 0 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 12345 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -2345 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 10.5 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value -10.5 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 101234567000 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1.07654321E-9 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 0.5 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Array + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value 1 + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value string + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Some Ascii Data + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value Resource id %s + +Warning: xml_set_unparsed_entity_decl_handler(): supplied resource is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) + +Arg value + +Warning: xml_set_unparsed_entity_decl_handler(): supplied argument is not a valid XML Parser resource in %s on line %d +bool(false) +Done diff --git a/ext/xml/xml.c b/ext/xml/xml.c index 2fb994ddd..168c76846 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xml.c,v 1.157.2.4.2.8 2008/01/30 08:50:02 rasmus Exp $ */ +/* $Id: xml.c,v 1.157.2.4.2.9 2008/12/31 11:17:46 sebastian Exp $ */ #define IS_EXT_MODULE diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index c4b1c4711..1e0e8e2ff 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlreader.c,v 1.13.2.14.2.10 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xmlreader.c,v 1.13.2.14.2.11 2008/12/31 11:17:46 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/xmlreader/php_xmlreader.h b/ext/xmlreader/php_xmlreader.h index 485458e0e..b37ee7925 100644 --- a/ext/xmlreader/php_xmlreader.h +++ b/ext/xmlreader/php_xmlreader.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlreader.h,v 1.3.2.2.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xmlreader.h,v 1.3.2.2.2.4 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef PHP_XMLREADER_H #define PHP_XMLREADER_H diff --git a/ext/xmlrpc/libxmlrpc/xml_element.c b/ext/xmlrpc/libxmlrpc/xml_element.c index 15fc3bf0b..faf76714e 100644 --- a/ext/xmlrpc/libxmlrpc/xml_element.c +++ b/ext/xmlrpc/libxmlrpc/xml_element.c @@ -31,7 +31,7 @@ */ -static const char rcsid[] = "#(@) $Id: xml_element.c,v 1.9.4.1 2006/07/30 11:34:02 tony2001 Exp $"; +static const char rcsid[] = "#(@) $Id: xml_element.c,v 1.9.4.3 2008/12/17 21:45:31 iliaa Exp $"; @@ -44,6 +44,13 @@ static const char rcsid[] = "#(@) $Id: xml_element.c,v 1.9.4.1 2006/07/30 11:34: * 06/2000 * HISTORY * $Log: xml_element.c,v $ + * Revision 1.9.4.3 2008/12/17 21:45:31 iliaa + * MFB: remove fprintf usage + * + * Revision 1.9.4.2 2008/12/17 00:30:48 iliaa + * + * MFH: removed unused var + * * Revision 1.9.4.1 2006/07/30 11:34:02 tony2001 * MFH: fix compile warnings (#38257) * @@ -378,7 +385,7 @@ static void xml_element_serialize(xml_element *el, int (*fptr)(void *data, const depth++; if(!el) { - fprintf(stderr, "Nothing to write\n"); +/* fprintf(stderr, "Nothing to write\n"); */ return; } if(!options) { @@ -716,7 +723,7 @@ xml_element* xml_elem_parse_buf(const char* in_buf, int len, XML_ELEM_INPUT_OPTI int line_num = XML_GetCurrentLineNumber(parser); int col_num = XML_GetCurrentColumnNumber(parser); long byte_idx = XML_GetCurrentByteIndex(parser); - int byte_total = XML_GetCurrentByteCount(parser); +/* int byte_total = XML_GetCurrentByteCount(parser); */ const char * error_str = XML_ErrorString(err_code); if(byte_idx >= 0) { snprintf(buf, @@ -725,7 +732,7 @@ xml_element* xml_elem_parse_buf(const char* in_buf, int len, XML_ELEM_INPUT_OPTI byte_idx > 10 ? 10 : byte_idx, in_buf + (byte_idx > 10 ? byte_idx - 10 : byte_idx)); } - +/* fprintf(stderr, "expat reports error code %i\n" "\tdescription: %s\n" "\tline: %i\n" @@ -734,7 +741,7 @@ xml_element* xml_elem_parse_buf(const char* in_buf, int len, XML_ELEM_INPUT_OPTI "\ttotal bytes: %i\n%s ", err_code, error_str, line_num, col_num, byte_idx, byte_total, buf); - +*/ /* error condition */ if(error) { diff --git a/ext/xmlrpc/libxmlrpc/xmlrpc.c b/ext/xmlrpc/libxmlrpc/xmlrpc.c index dc5752fd5..7533016bf 100644 --- a/ext/xmlrpc/libxmlrpc/xmlrpc.c +++ b/ext/xmlrpc/libxmlrpc/xmlrpc.c @@ -31,7 +31,7 @@ */ -static const char rcsid[] = "#(@) $Id: xmlrpc.c,v 1.8.4.3 2007/09/18 19:49:53 iliaa Exp $"; +static const char rcsid[] = "#(@) $Id: xmlrpc.c,v 1.8.4.5 2008/12/17 21:45:31 iliaa Exp $"; /****h* ABOUT/xmlrpc @@ -43,6 +43,16 @@ static const char rcsid[] = "#(@) $Id: xmlrpc.c,v 1.8.4.3 2007/09/18 19:49:53 il * 9/1999 - 10/2000 * HISTORY * $Log: xmlrpc.c,v $ + * Revision 1.8.4.5 2008/12/17 21:45:31 iliaa + * MFB: remove fprintf usage + * + * Revision 1.8.4.4 2008/09/10 00:09:04 felipe + * MFH: + * - Merged fix from SF project (Import Jeff Lawsons patches for XML datetime bug fixes) + * Fixed bugs: + * #45226 (xmlrpc_set_type() segfaults with valid ISO8601 date string) + * #18916 (xmlrpc_set_type() "not working") + * * Revision 1.8.4.3 2007/09/18 19:49:53 iliaa * * Fixed bug #42189 (xmlrpc_set_type() crashes php on invalid datetime @@ -166,11 +176,21 @@ static const char rcsid[] = "#(@) $Id: xmlrpc.c,v 1.8.4.3 2007/09/18 19:49:53 il * Begin Time Functions * ***********************/ +static time_t mkgmtime(struct tm *tm) +{ + static const int mdays[12] = {0,31,59,90,120,151,181,212,243,273,304,334}; + + return ((((((tm->tm_year - 70) * 365) + mdays[tm->tm_mon] + tm->tm_mday-1 + + (tm->tm_year-68-1+(tm->tm_mon>=2))/4) * 24) + tm->tm_hour) * 60 + + tm->tm_min) * 60 + tm->tm_sec; +} + static int date_from_ISO8601 (const char *text, time_t * value) { struct tm tm; int n; int i; - char buf[18]; + char buf[30]; + if (strchr (text, '-')) { char *p = (char *) text, *p2 = buf; @@ -178,6 +198,9 @@ static int date_from_ISO8601 (const char *text, time_t * value) { if (*p != '-') { *p2 = *p; p2++; + if (p2-buf >= sizeof(buf)) { + return -1; + } } p++; } @@ -187,10 +210,6 @@ static int date_from_ISO8601 (const char *text, time_t * value) { tm.tm_isdst = -1; - if(strlen(text) < 17) { - return -1; - } - #define XMLRPC_IS_NUMBER(x) if (x < '0' || x > '9') return -1; n = 1000; @@ -243,7 +262,7 @@ static int date_from_ISO8601 (const char *text, time_t * value) { tm.tm_year -= 1900; - *value = mktime(&tm); + *value = mkgmtime(&tm); return 0; @@ -251,14 +270,14 @@ static int date_from_ISO8601 (const char *text, time_t * value) { static int date_to_ISO8601 (time_t value, char *buf, int length) { struct tm *tm, tmbuf; - tm = php_localtime_r(&value, &tmbuf); + tm = php_gmtime_r(&value, &tmbuf); if (!tm) { return 0; } #if 0 /* TODO: soap seems to favor this method. xmlrpc the latter. */ return strftime (buf, length, "%Y-%m-%dT%H:%M:%SZ", tm); #else - return strftime(buf, length, "%Y%m%dT%H:%M:%S", tm); + return strftime(buf, length, "%Y%m%dT%H:%M:%SZ", tm); #endif } @@ -1152,13 +1171,13 @@ int XMLRPC_AddValueToVector(XMLRPC_VALUE target, XMLRPC_VALUE source) { } } else { - fprintf (stderr, - "xmlrpc: attempted to add key/val pair to vector of type array\n"); +/* fprintf (stderr, + "xmlrpc: attempted to add key/val pair to vector of type array\n"); */ } break; default: - fprintf (stderr, - "xmlrpc: attempted to add value of unknown type to vector\n"); +/* fprintf (stderr, + "xmlrpc: attempted to add value of unknown type to vector\n"); */ break; } } @@ -1488,8 +1507,8 @@ void XMLRPC_CleanupValue(XMLRPC_VALUE value) { my_free(value); break; default: - fprintf (stderr, - "xmlrpc: attempted to free value of invalid type\n"); +/* fprintf (stderr, + "xmlrpc: attempted to free value of invalid type\n"); */ break; } } @@ -1529,8 +1548,7 @@ void XMLRPC_SetValueDateTime(XMLRPC_VALUE value, time_t time) { date_to_ISO8601(time, timeBuf, sizeof(timeBuf)); if(timeBuf[0]) { - simplestring_clear(&value->str); - simplestring_add(&value->str, timeBuf); + XMLRPC_SetValueDateTime_ISO8601 (value, timeBuf); } } } @@ -1706,8 +1724,11 @@ void XMLRPC_SetValueDateTime_ISO8601(XMLRPC_VALUE value, const char* s) { if(value) { time_t time_val = 0; if(s) { + value->type = xmlrpc_datetime; date_from_ISO8601(s, &time_val); - XMLRPC_SetValueDateTime(value, time_val); + value->i = time_val; + simplestring_clear(&value->str); + simplestring_add(&value->str, s); } } } diff --git a/ext/xmlrpc/php_xmlrpc.h b/ext/xmlrpc/php_xmlrpc.h index 68aeb5b81..fa91bb410 100644 --- a/ext/xmlrpc/php_xmlrpc.h +++ b/ext/xmlrpc/php_xmlrpc.h @@ -37,7 +37,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -51,7 +51,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlrpc.h,v 1.11.2.1.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xmlrpc.h,v 1.11.2.1.2.4 2008/12/31 11:17:46 sebastian Exp $ */ #ifndef _PHP_XMLRPC_H #define _PHP_XMLRPC_H diff --git a/ext/xmlrpc/tests/bug18916.phpt b/ext/xmlrpc/tests/bug18916.phpt new file mode 100644 index 000000000..b2eb525d8 --- /dev/null +++ b/ext/xmlrpc/tests/bug18916.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #18916 (xmlrpc_set_type() not working) +--INI-- +date.timezone="America/Sao_Paulo" +--FILE-- + +--EXPECTF-- + + + + + %dT%d:%d:%d + + + diff --git a/ext/xmlrpc/tests/bug40576.phpt b/ext/xmlrpc/tests/bug40576.phpt index 6b73f4d2c..404aba32b 100644 --- a/ext/xmlrpc/tests/bug40576.phpt +++ b/ext/xmlrpc/tests/bug40576.phpt @@ -29,11 +29,11 @@ string(125) " " -string(128) " +string(130) " - 11234567891000 + 1.1234567891E+13 diff --git a/ext/xmlrpc/tests/bug45226.phpt b/ext/xmlrpc/tests/bug45226.phpt new file mode 100644 index 000000000..af9b6c472 --- /dev/null +++ b/ext/xmlrpc/tests/bug45226.phpt @@ -0,0 +1,53 @@ +--TEST-- +Bug #45226 (xmlrpc_set_type() segfaults with valid ISO8601 date string) +--INI-- +date.timezone="America/Sao_Paulo" +--FILE-- + $d)); + +$d = '2008-01-01 20:00:00'; +xmlrpc_set_type($d, 'datetime'); +echo xmlrpc_encode_request('method.call', array('date' => $d)); + +?> +--EXPECTF-- + + +method.call + + + + + + date + + %d-%d-%dT%d:%d:%d%s%d + + + + + + + + + +method.call + + + + + + date + + %d-%d-%d %d:%d:%d + + + + + + + diff --git a/ext/xmlrpc/tests/bug45555.phpt b/ext/xmlrpc/tests/bug45555.phpt new file mode 100644 index 000000000..376b14fec --- /dev/null +++ b/ext/xmlrpc/tests/bug45555.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #45555 (Segfault with invalid non-string as register_introspection_callback) +--FILE-- + 'xml', 'version' => 'xmlrpc'); +xmlrpc_server_call_method ($server, $request, NULL, $options); + +?> +--EXPECTF-- +Warning: xmlrpc_server_call_method(): Invalid callback '1' passed in %s on line %d + +Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d diff --git a/ext/xmlrpc/tests/bug45556.phpt b/ext/xmlrpc/tests/bug45556.phpt new file mode 100644 index 000000000..0e463e669 --- /dev/null +++ b/ext/xmlrpc/tests/bug45556.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #45556 (Return value from callback isn't freed) +--FILE-- + 'xml', 'version' => 'xmlrpc'); +xmlrpc_server_call_method ($server, $request, NULL, $options); + +?> +--EXPECTF-- +Warning: xmlrpc_server_call_method(): Invalid callback 'foobar' passed in %s on line %d + +Warning: xmlrpc_server_call_method(): xml parse error: [line 1, column 1, message: Invalid document end] Unable to add introspection data returned from bar::test() in %s on line %d + +Warning: xmlrpc_server_call_method(): Invalid callback 'foo::bar' passed in %s on line %d diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c index 87b899469..415542477 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -51,7 +51,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xmlrpc-epi-php.c,v 1.39.2.5.2.8 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.39.2.5.2.13 2009/01/27 15:02:43 felipe Exp $ */ /********************************************************************** * BUGS: * @@ -356,65 +356,61 @@ static void set_output_options(php_output_options* options, zval* output_opts) } } - /* encoding code set */ - if(zend_hash_find(Z_ARRVAL_P(output_opts), - ENCODING_KEY, ENCODING_KEY_LEN + 1, - (void**)&val) == SUCCESS) { - if(Z_TYPE_PP(val) == IS_STRING) { - options->xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_PP(val)); - } - } - - /* escaping options */ - if(zend_hash_find(Z_ARRVAL_P(output_opts), - ESCAPING_KEY, ESCAPING_KEY_LEN + 1, - (void**)&val) == SUCCESS) { - /* multiple values allowed. check if array */ - if(Z_TYPE_PP(val) == IS_ARRAY) { - zval** iter_val; - zend_hash_internal_pointer_reset(Z_ARRVAL_PP(val)); - options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_no_escaping; - while(1) { - if(zend_hash_get_current_data(Z_ARRVAL_PP(val), (void**)&iter_val) == SUCCESS) { - if(Z_TYPE_PP(iter_val) == IS_STRING && Z_STRVAL_PP(iter_val)) { - if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_CDATA)) { - options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_cdata_escaping; - } - else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_ASCII)) { - options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_ascii_escaping; - } - else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_PRINT)) { - options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_print_escaping; - } - else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_MARKUP)) { - options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_markup_escaping; - } - } - } - else { - break; - } - - zend_hash_move_forward(Z_ARRVAL_PP(val)); - } - } - /* else, check for single value */ - else if(Z_TYPE_PP(val) == IS_STRING) { - if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_CDATA)) { - options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_cdata_escaping; - } - else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_NON_ASCII)) { - options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_ascii_escaping; - } - else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_NON_PRINT)) { - options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_print_escaping; - } - else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_MARKUP)) { - options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_markup_escaping; - } - } - } - } + /* encoding code set */ + if(zend_hash_find(Z_ARRVAL_P(output_opts), ENCODING_KEY, ENCODING_KEY_LEN + 1, (void**)&val) == SUCCESS) { + if(Z_TYPE_PP(val) == IS_STRING) { + options->xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_PP(val)); + } + } + + /* escaping options */ + if (zend_hash_find(Z_ARRVAL_P(output_opts), ESCAPING_KEY, ESCAPING_KEY_LEN + 1, (void**)&val) == SUCCESS) { + /* multiple values allowed. check if array */ + if (Z_TYPE_PP(val) == IS_ARRAY) { + zval** iter_val; + zend_hash_internal_pointer_reset(Z_ARRVAL_PP(val)); + options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_no_escaping; + while(1) { + if(zend_hash_get_current_data(Z_ARRVAL_PP(val), (void**)&iter_val) == SUCCESS) { + if(Z_TYPE_PP(iter_val) == IS_STRING && Z_STRVAL_PP(iter_val)) { + if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_CDATA)) { + options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_cdata_escaping; + } + else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_ASCII)) { + options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_ascii_escaping; + } + else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_PRINT)) { + options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_print_escaping; + } + else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_MARKUP)) { + options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_markup_escaping; + } + } + } + else { + break; + } + + zend_hash_move_forward(Z_ARRVAL_PP(val)); + } + } + /* else, check for single value */ + else if(Z_TYPE_PP(val) == IS_STRING) { + if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_CDATA)) { + options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_cdata_escaping; + } + else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_NON_ASCII)) { + options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_ascii_escaping; + } + else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_NON_PRINT)) { + options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_print_escaping; + } + else if(!strcmp(Z_STRVAL_PP(val), ESCAPING_VALUE_MARKUP)) { + options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_markup_escaping; + } + } + } + } } } @@ -430,199 +426,196 @@ static void set_output_options(php_output_options* options, zval* output_opts) */ static XMLRPC_VECTOR_TYPE determine_vector_type (HashTable *ht) { - int bArray = 0, bStruct = 0, bMixed = 0; - unsigned long num_index; - char* my_key; - - zend_hash_internal_pointer_reset(ht); - while(1) { - int res = my_zend_hash_get_current_key(ht, &my_key, &num_index); - if(res == HASH_KEY_IS_LONG) { - if(bStruct) { - bMixed = 1; - break; - } - bArray = 1; - } - else if(res == HASH_KEY_NON_EXISTANT) { - break; - } - else if(res == HASH_KEY_IS_STRING) { - if(bArray) { - bMixed = 1; - break; - } - bStruct = 1; - } - - zend_hash_move_forward(ht); - } + int bArray = 0, bStruct = 0, bMixed = 0; + unsigned long num_index; + char* my_key; + + zend_hash_internal_pointer_reset(ht); + while(1) { + int res = my_zend_hash_get_current_key(ht, &my_key, &num_index); + if(res == HASH_KEY_IS_LONG) { + if(bStruct) { + bMixed = 1; + break; + } + bArray = 1; + } + else if(res == HASH_KEY_NON_EXISTANT) { + break; + } + else if(res == HASH_KEY_IS_STRING) { + if(bArray) { + bMixed = 1; + break; + } + bStruct = 1; + } + + zend_hash_move_forward(ht); + } return bMixed ? xmlrpc_vector_mixed : (bStruct ? xmlrpc_vector_struct : xmlrpc_vector_array); } /* recursively convert php values into xmlrpc values */ static XMLRPC_VALUE PHP_to_XMLRPC_worker (const char* key, zval* in_val, int depth TSRMLS_DC) { - XMLRPC_VALUE xReturn = NULL; - if(in_val) { - zval* val = NULL; - XMLRPC_VALUE_TYPE type = get_zval_xmlrpc_type(in_val, &val); - if(val) { - switch(type) { - case xmlrpc_base64: - if(Z_TYPE_P(val) == IS_NULL) { - xReturn = XMLRPC_CreateValueEmpty(); + XMLRPC_VALUE xReturn = NULL; + if(in_val) { + zval* val = NULL; + XMLRPC_VALUE_TYPE type = get_zval_xmlrpc_type(in_val, &val); + if(val) { + switch(type) { + case xmlrpc_base64: + if(Z_TYPE_P(val) == IS_NULL) { + xReturn = XMLRPC_CreateValueEmpty(); XMLRPC_SetValueID(xReturn, key, 0); - } - else { - xReturn = XMLRPC_CreateValueBase64(key, Z_STRVAL_P(val), Z_STRLEN_P(val)); - } - break; - case xmlrpc_datetime: - convert_to_string(val); - xReturn = XMLRPC_CreateValueDateTime_ISO8601(key, Z_STRVAL_P(val)); - break; - case xmlrpc_boolean: - convert_to_boolean(val); - xReturn = XMLRPC_CreateValueBoolean(key, Z_LVAL_P(val)); - break; - case xmlrpc_int: - convert_to_long(val); - xReturn = XMLRPC_CreateValueInt(key, Z_LVAL_P(val)); - break; - case xmlrpc_double: - convert_to_double(val); - xReturn = XMLRPC_CreateValueDouble(key, Z_DVAL_P(val)); - break; - case xmlrpc_string: - convert_to_string(val); - xReturn = XMLRPC_CreateValueString(key, Z_STRVAL_P(val), Z_STRLEN_P(val)); - break; - case xmlrpc_vector: - { - unsigned long num_index; - zval** pIter; - char* my_key; - HashTable *ht = NULL; - - ht = HASH_OF(val); - if (ht && ht->nApplyCount > 1) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "XML-RPC doesn't support circular references"); - return NULL; - } - - convert_to_array(val); - xReturn = XMLRPC_CreateVector(key, determine_vector_type(Z_ARRVAL_P(val))); - - zend_hash_internal_pointer_reset(Z_ARRVAL_P(val)); - while(zend_hash_get_current_data(Z_ARRVAL_P(val), (void**)&pIter) == SUCCESS) { - int res = my_zend_hash_get_current_key(Z_ARRVAL_P(val), &my_key, &num_index); + } else { + xReturn = XMLRPC_CreateValueBase64(key, Z_STRVAL_P(val), Z_STRLEN_P(val)); + } + break; + case xmlrpc_datetime: + convert_to_string(val); + xReturn = XMLRPC_CreateValueDateTime_ISO8601(key, Z_STRVAL_P(val)); + break; + case xmlrpc_boolean: + convert_to_boolean(val); + xReturn = XMLRPC_CreateValueBoolean(key, Z_LVAL_P(val)); + break; + case xmlrpc_int: + convert_to_long(val); + xReturn = XMLRPC_CreateValueInt(key, Z_LVAL_P(val)); + break; + case xmlrpc_double: + convert_to_double(val); + xReturn = XMLRPC_CreateValueDouble(key, Z_DVAL_P(val)); + break; + case xmlrpc_string: + convert_to_string(val); + xReturn = XMLRPC_CreateValueString(key, Z_STRVAL_P(val), Z_STRLEN_P(val)); + break; + case xmlrpc_vector: { + unsigned long num_index; + zval** pIter; + char* my_key; + HashTable *ht = NULL; + + ht = HASH_OF(val); + if (ht && ht->nApplyCount > 1) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, "XML-RPC doesn't support circular references"); + return NULL; + } + + convert_to_array(val); + xReturn = XMLRPC_CreateVector(key, determine_vector_type(Z_ARRVAL_P(val))); + + zend_hash_internal_pointer_reset(Z_ARRVAL_P(val)); + while(zend_hash_get_current_data(Z_ARRVAL_P(val), (void**)&pIter) == SUCCESS) { + int res = my_zend_hash_get_current_key(Z_ARRVAL_P(val), &my_key, &num_index); - switch (res) { - case HASH_KEY_NON_EXISTANT: - break; - case HASH_KEY_IS_STRING: - case HASH_KEY_IS_LONG: - ht = HASH_OF(*pIter); - if (ht) { - ht->nApplyCount++; - } - if (res == HASH_KEY_IS_LONG) { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++ TSRMLS_CC)); - } - else { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++ TSRMLS_CC)); - } - if (ht) { - ht->nApplyCount--; - } - break; - } - zend_hash_move_forward(Z_ARRVAL_P(val)); - } - } - break; - default: - break; - } - } - } + switch (res) { + case HASH_KEY_NON_EXISTANT: + break; + case HASH_KEY_IS_STRING: + case HASH_KEY_IS_LONG: + ht = HASH_OF(*pIter); + if (ht) { + ht->nApplyCount++; + } + if (res == HASH_KEY_IS_LONG) { + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++ TSRMLS_CC)); + } else { + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++ TSRMLS_CC)); + } + if (ht) { + ht->nApplyCount--; + } + break; + } + zend_hash_move_forward(Z_ARRVAL_P(val)); + } + } + break; + default: + break; + } + } + } return xReturn; } static XMLRPC_VALUE PHP_to_XMLRPC(zval* root_val TSRMLS_DC) { - return PHP_to_XMLRPC_worker(NULL, root_val, 0 TSRMLS_CC); + return PHP_to_XMLRPC_worker(NULL, root_val, 0 TSRMLS_CC); } /* recursively convert xmlrpc values into php values */ static zval* XMLRPC_to_PHP(XMLRPC_VALUE el) { - zval* elem = NULL; - const char* pStr; - - if(el) { - XMLRPC_VALUE_TYPE type = XMLRPC_GetValueType(el); - - MAKE_STD_ZVAL(elem); /* init. very important. spent a frustrating day finding this out. */ - - switch(type) { - case xmlrpc_empty: - Z_TYPE_P(elem) = IS_NULL; - break; - case xmlrpc_string: - pStr = XMLRPC_GetValueString(el); - if(pStr) { - Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); - Z_STRVAL_P(elem) = estrndup(pStr, Z_STRLEN_P(elem)); - Z_TYPE_P(elem) = IS_STRING; - } - break; - case xmlrpc_int: - Z_LVAL_P(elem) = XMLRPC_GetValueInt(el); - Z_TYPE_P(elem) = IS_LONG; - break; - case xmlrpc_boolean: - Z_LVAL_P(elem) = XMLRPC_GetValueBoolean(el); - Z_TYPE_P(elem) = IS_BOOL; - break; - case xmlrpc_double: - Z_DVAL_P(elem) = XMLRPC_GetValueDouble(el); - Z_TYPE_P(elem) = IS_DOUBLE; - break; - case xmlrpc_datetime: - Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); - Z_STRVAL_P(elem) = estrndup(XMLRPC_GetValueDateTime_ISO8601(el), Z_STRLEN_P(elem)); - Z_TYPE_P(elem) = IS_STRING; - break; - case xmlrpc_base64: - pStr = XMLRPC_GetValueBase64(el); - if(pStr) { - Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); - Z_STRVAL_P(elem) = estrndup(pStr, Z_STRLEN_P(elem)); - Z_TYPE_P(elem) = IS_STRING; - } - break; - case xmlrpc_vector: - array_init(elem); - { - XMLRPC_VALUE xIter = XMLRPC_VectorRewind(el); - - while( xIter ) { - zval *val = XMLRPC_to_PHP(xIter); - if (val) { - add_zval(elem, XMLRPC_GetValueID(xIter), &val); + zval* elem = NULL; + const char* pStr; + + if(el) { + XMLRPC_VALUE_TYPE type = XMLRPC_GetValueType(el); + + MAKE_STD_ZVAL(elem); /* init. very important. spent a frustrating day finding this out. */ + + switch(type) { + case xmlrpc_empty: + Z_TYPE_P(elem) = IS_NULL; + break; + case xmlrpc_string: + pStr = XMLRPC_GetValueString(el); + if(pStr) { + Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); + Z_STRVAL_P(elem) = estrndup(pStr, Z_STRLEN_P(elem)); + Z_TYPE_P(elem) = IS_STRING; } - xIter = XMLRPC_VectorNext(el); - } - } - break; - default: - break; - } - set_zval_xmlrpc_type(elem, type); - } - return elem; + break; + case xmlrpc_int: + Z_LVAL_P(elem) = XMLRPC_GetValueInt(el); + Z_TYPE_P(elem) = IS_LONG; + break; + case xmlrpc_boolean: + Z_LVAL_P(elem) = XMLRPC_GetValueBoolean(el); + Z_TYPE_P(elem) = IS_BOOL; + break; + case xmlrpc_double: + Z_DVAL_P(elem) = XMLRPC_GetValueDouble(el); + Z_TYPE_P(elem) = IS_DOUBLE; + break; + case xmlrpc_datetime: + Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); + Z_STRVAL_P(elem) = estrndup(XMLRPC_GetValueDateTime_ISO8601(el), Z_STRLEN_P(elem)); + Z_TYPE_P(elem) = IS_STRING; + break; + case xmlrpc_base64: + pStr = XMLRPC_GetValueBase64(el); + if(pStr) { + Z_STRLEN_P(elem) = XMLRPC_GetValueStringLen(el); + Z_STRVAL_P(elem) = estrndup(pStr, Z_STRLEN_P(elem)); + Z_TYPE_P(elem) = IS_STRING; + } + break; + case xmlrpc_vector: + array_init(elem); + { + XMLRPC_VALUE xIter = XMLRPC_VectorRewind(el); + + while( xIter ) { + zval *val = XMLRPC_to_PHP(xIter); + if (val) { + add_zval(elem, XMLRPC_GetValueID(xIter), &val); + } + xIter = XMLRPC_VectorNext(el); + } + } + break; + default: + break; + } + set_zval_xmlrpc_type(elem, type); + } + return elem; } /* {{{ proto string xmlrpc_encode_request(string method, mixed params) @@ -665,7 +658,7 @@ PHP_FUNCTION(xmlrpc_encode_request) } } - if (out.xmlrpc_out.xml_elem_opts.encoding != ENCODING_DEFAULT) { + if (strcmp(out.xmlrpc_out.xml_elem_opts.encoding, ENCODING_DEFAULT) != 0) { efree((char *)out.xmlrpc_out.xml_elem_opts.encoding); } } @@ -705,30 +698,30 @@ PHP_FUNCTION(xmlrpc_encode) zval* decode_request_worker (zval* xml_in, zval* encoding_in, zval* method_name_out) { - zval* retval = NULL; - XMLRPC_REQUEST response; - STRUCT_XMLRPC_REQUEST_INPUT_OPTIONS opts = {{0}}; - opts.xml_elem_opts.encoding = encoding_in ? utf8_get_encoding_id_from_string(Z_STRVAL_P(encoding_in)) : ENCODING_DEFAULT; - - /* generate XMLRPC_REQUEST from raw xml */ - response = XMLRPC_REQUEST_FromXML(Z_STRVAL_P(xml_in), Z_STRLEN_P(xml_in), &opts); - if(response) { - /* convert xmlrpc data to native php types */ - retval = XMLRPC_to_PHP(XMLRPC_RequestGetData(response)); - - if(XMLRPC_RequestGetRequestType(response) == xmlrpc_request_call) { - if(method_name_out) { - zval_dtor(method_name_out); - Z_TYPE_P(method_name_out) = IS_STRING; - Z_STRVAL_P(method_name_out) = estrdup(XMLRPC_RequestGetMethodName(response)); - Z_STRLEN_P(method_name_out) = strlen(Z_STRVAL_P(method_name_out)); - } - } - - /* dust, sweep, and mop */ - XMLRPC_RequestFree(response, 1); - } - return retval; + zval* retval = NULL; + XMLRPC_REQUEST response; + STRUCT_XMLRPC_REQUEST_INPUT_OPTIONS opts = {{0}}; + opts.xml_elem_opts.encoding = encoding_in ? utf8_get_encoding_id_from_string(Z_STRVAL_P(encoding_in)) : ENCODING_DEFAULT; + + /* generate XMLRPC_REQUEST from raw xml */ + response = XMLRPC_REQUEST_FromXML(Z_STRVAL_P(xml_in), Z_STRLEN_P(xml_in), &opts); + if(response) { + /* convert xmlrpc data to native php types */ + retval = XMLRPC_to_PHP(XMLRPC_RequestGetData(response)); + + if(XMLRPC_RequestGetRequestType(response) == xmlrpc_request_call) { + if(method_name_out) { + zval_dtor(method_name_out); + Z_TYPE_P(method_name_out) = IS_STRING; + Z_STRVAL_P(method_name_out) = estrdup(XMLRPC_RequestGetMethodName(response)); + Z_STRLEN_P(method_name_out) = strlen(Z_STRVAL_P(method_name_out)); + } + } + + /* dust, sweep, and mop */ + XMLRPC_RequestFree(response, 1); + } + return retval; } /* {{{ proto array xmlrpc_decode_request(string xml, string& method [, string encoding]) @@ -854,29 +847,29 @@ PHP_FUNCTION(xmlrpc_server_destroy) */ static XMLRPC_VALUE php_xmlrpc_callback(XMLRPC_SERVER server, XMLRPC_REQUEST xRequest, void* data) { - xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data; - zval* xmlrpc_params; - zval* callback_params[3]; - TSRMLS_FETCH(); - - /* convert xmlrpc to native php types */ - xmlrpc_params = XMLRPC_to_PHP(XMLRPC_RequestGetData(xRequest)); + xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data; + zval* xmlrpc_params; + zval* callback_params[3]; + TSRMLS_FETCH(); + + /* convert xmlrpc to native php types */ + xmlrpc_params = XMLRPC_to_PHP(XMLRPC_RequestGetData(xRequest)); - /* setup data hoojum */ - callback_params[0] = pData->xmlrpc_method; - callback_params[1] = xmlrpc_params; - callback_params[2] = pData->caller_params; + /* setup data hoojum */ + callback_params[0] = pData->xmlrpc_method; + callback_params[1] = xmlrpc_params; + callback_params[2] = pData->caller_params; - /* Use same C function for all methods */ + /* Use same C function for all methods */ - /* php func prototype: function user_func($method_name, $xmlrpc_params, $user_params) */ - call_user_function(CG(function_table), NULL, pData->php_function, pData->return_data, 3, callback_params TSRMLS_CC); + /* php func prototype: function user_func($method_name, $xmlrpc_params, $user_params) */ + call_user_function(CG(function_table), NULL, pData->php_function, pData->return_data, 3, callback_params TSRMLS_CC); - pData->php_executed = 1; + pData->php_executed = 1; - zval_ptr_dtor(&xmlrpc_params); + zval_ptr_dtor(&xmlrpc_params); - return NULL; + return NULL; } /* called by the C server when it first receives an introspection request. We pass this on to @@ -884,66 +877,62 @@ static XMLRPC_VALUE php_xmlrpc_callback(XMLRPC_SERVER server, XMLRPC_REQUEST xRe */ static void php_xmlrpc_introspection_callback(XMLRPC_SERVER server, void* data) { - zval *retval_ptr, **php_function; - zval* callback_params[1]; - xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data; - TSRMLS_FETCH(); - - MAKE_STD_ZVAL(retval_ptr); - Z_TYPE_P(retval_ptr) = IS_NULL; - - /* setup data hoojum */ - callback_params[0] = pData->caller_params; - - /* loop through and call all registered callbacks */ - zend_hash_internal_pointer_reset(Z_ARRVAL_P(pData->server->introspection_map)); - while(1) { - if(zend_hash_get_current_data(Z_ARRVAL_P(pData->server->introspection_map), - (void**)&php_function) == SUCCESS) { - - /* php func prototype: function string user_func($user_params) */ - if(call_user_function(CG(function_table), NULL, *php_function, - retval_ptr, 1, callback_params TSRMLS_CC) == SUCCESS) { - XMLRPC_VALUE xData; - STRUCT_XMLRPC_ERROR err = {0}; - - /* return value should be a string */ - convert_to_string(retval_ptr); - - xData = XMLRPC_IntrospectionCreateDescription(Z_STRVAL_P(retval_ptr), &err); - - if(xData) { - if(!XMLRPC_ServerAddIntrospectionData(server, xData)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to add introspection data returned from %s(), improper element structure", Z_STRVAL_PP(php_function)); - } - XMLRPC_CleanupValue(xData); - } - else { - /* could not create description */ - if(err.xml_elem_error.parser_code) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "xml parse error: [line %ld, column %ld, message: %s] Unable to add introspection data returned from %s()", - err.xml_elem_error.column, err.xml_elem_error.line, err.xml_elem_error.parser_error, Z_STRVAL_PP(php_function)); - } - else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to add introspection data returned from %s()", - Z_STRVAL_PP(php_function)); - } - } - } - else { - /* user func failed */ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error calling user introspection callback: %s()", Z_STRVAL_PP(php_function)); - } - } - else { - break; - } - - zend_hash_move_forward(Z_ARRVAL_P(pData->server->introspection_map)); - } - - /* so we don't call the same callbacks ever again */ - zend_hash_clean(Z_ARRVAL_P(pData->server->introspection_map)); + zval retval, **php_function; + zval* callback_params[1]; + char *php_function_name; + xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data; + TSRMLS_FETCH(); + + /* setup data hoojum */ + callback_params[0] = pData->caller_params; + + /* loop through and call all registered callbacks */ + zend_hash_internal_pointer_reset(Z_ARRVAL_P(pData->server->introspection_map)); + while(1) { + if(zend_hash_get_current_data(Z_ARRVAL_P(pData->server->introspection_map), (void**)&php_function) == SUCCESS) { + + if (zend_is_callable(*php_function, 0, &php_function_name)) { + /* php func prototype: function string user_func($user_params) */ + if (call_user_function(CG(function_table), NULL, *php_function, &retval, 1, callback_params TSRMLS_CC) == SUCCESS) { + XMLRPC_VALUE xData; + STRUCT_XMLRPC_ERROR err = {0}; + + /* return value should be a string */ + convert_to_string(&retval); + + xData = XMLRPC_IntrospectionCreateDescription(Z_STRVAL(retval), &err); + + if(xData) { + if(!XMLRPC_ServerAddIntrospectionData(server, xData)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to add introspection data returned from %s(), improper element structure", php_function_name); + } + XMLRPC_CleanupValue(xData); + } else { + /* could not create description */ + if(err.xml_elem_error.parser_code) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "xml parse error: [line %ld, column %ld, message: %s] Unable to add introspection data returned from %s()", + err.xml_elem_error.column, err.xml_elem_error.line, err.xml_elem_error.parser_error, php_function_name); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to add introspection data returned from %s()", php_function_name); + } + } + zval_dtor(&retval); + } else { + /* user func failed */ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error calling user introspection callback: %s()", php_function_name); + } + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid callback '%s' passed", php_function_name); + } + efree(php_function_name); + } else { + break; + } + zend_hash_move_forward(Z_ARRVAL_P(pData->server->introspection_map)); + } + + /* so we don't call the same callbacks ever again */ + zend_hash_clean(Z_ARRVAL_P(pData->server->introspection_map)); } /* {{{ proto bool xmlrpc_server_register_method(resource server, string method_name, string function) @@ -1218,70 +1207,70 @@ PHP_FUNCTION(xmlrpc_parse_method_descriptions) /* return a string matching a given xmlrpc type */ static const char** get_type_str_mapping(void) { - static const char* str_mapping[TYPE_STR_MAP_SIZE]; - static int first = 1; - if (first) { - /* warning. do not add/delete without changing size define */ - str_mapping[xmlrpc_none] = "none"; - str_mapping[xmlrpc_empty] = "empty"; - str_mapping[xmlrpc_base64] = "base64"; - str_mapping[xmlrpc_boolean] = "boolean"; - str_mapping[xmlrpc_datetime] = "datetime"; - str_mapping[xmlrpc_double] = "double"; - str_mapping[xmlrpc_int] = "int"; - str_mapping[xmlrpc_string] = "string"; - str_mapping[xmlrpc_vector] = "vector"; - str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_none] = "none"; - str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_array] = "array"; - str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_mixed] = "mixed"; - str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_struct] = "struct"; - first = 0; - } - return (const char**)str_mapping; + static const char* str_mapping[TYPE_STR_MAP_SIZE]; + static int first = 1; + if (first) { + /* warning. do not add/delete without changing size define */ + str_mapping[xmlrpc_none] = "none"; + str_mapping[xmlrpc_empty] = "empty"; + str_mapping[xmlrpc_base64] = "base64"; + str_mapping[xmlrpc_boolean] = "boolean"; + str_mapping[xmlrpc_datetime] = "datetime"; + str_mapping[xmlrpc_double] = "double"; + str_mapping[xmlrpc_int] = "int"; + str_mapping[xmlrpc_string] = "string"; + str_mapping[xmlrpc_vector] = "vector"; + str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_none] = "none"; + str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_array] = "array"; + str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_mixed] = "mixed"; + str_mapping[XMLRPC_TYPE_COUNT + xmlrpc_vector_struct] = "struct"; + first = 0; + } + return (const char**)str_mapping; } /* map an xmlrpc type to a string */ const char* xmlrpc_type_as_str(XMLRPC_VALUE_TYPE type, XMLRPC_VECTOR_TYPE vtype) { - const char** str_mapping = get_type_str_mapping(); + const char** str_mapping = get_type_str_mapping(); - if (vtype == xmlrpc_vector_none) { - return str_mapping[type]; - } else { - return str_mapping[XMLRPC_TYPE_COUNT + vtype]; - } + if (vtype == xmlrpc_vector_none) { + return str_mapping[type]; + } else { + return str_mapping[XMLRPC_TYPE_COUNT + vtype]; + } } /* map a string to an xmlrpc type */ XMLRPC_VALUE_TYPE xmlrpc_str_as_type(const char* str) { - const char** str_mapping = get_type_str_mapping(); - int i; - - if (str) { - for (i = 0; i < XMLRPC_TYPE_COUNT; i++) { - if (!strcmp(str_mapping[i], str)) { - return (XMLRPC_VALUE_TYPE) i; - } - } - } - return xmlrpc_none; + const char** str_mapping = get_type_str_mapping(); + int i; + + if (str) { + for (i = 0; i < XMLRPC_TYPE_COUNT; i++) { + if (!strcmp(str_mapping[i], str)) { + return (XMLRPC_VALUE_TYPE) i; + } + } + } + return xmlrpc_none; } /* map a string to an xmlrpc vector type */ XMLRPC_VECTOR_TYPE xmlrpc_str_as_vector_type(const char* str) { - const char** str_mapping = get_type_str_mapping(); - int i; - - if (str) { - for (i = XMLRPC_TYPE_COUNT; i < TYPE_STR_MAP_SIZE; i++) { - if (!strcmp(str_mapping[i], str)) { - return (XMLRPC_VECTOR_TYPE) (i - XMLRPC_TYPE_COUNT); - } - } - } - return xmlrpc_none; + const char** str_mapping = get_type_str_mapping(); + int i; + + if (str) { + for (i = XMLRPC_TYPE_COUNT; i < TYPE_STR_MAP_SIZE; i++) { + if (!strcmp(str_mapping[i], str)) { + return (XMLRPC_VECTOR_TYPE) (i - XMLRPC_TYPE_COUNT); + } + } + } + return xmlrpc_none; } @@ -1291,107 +1280,106 @@ XMLRPC_VECTOR_TYPE xmlrpc_str_as_vector_type(const char* str) */ int set_zval_xmlrpc_type(zval* value, XMLRPC_VALUE_TYPE newtype) { - int bSuccess = FAILURE; - TSRMLS_FETCH(); - - /* we only really care about strings because they can represent - * base64 and datetime. all other types have corresponding php types - */ - if (Z_TYPE_P(value) == IS_STRING) { - if (newtype == xmlrpc_base64 || newtype == xmlrpc_datetime) { - const char* typestr = xmlrpc_type_as_str(newtype, xmlrpc_vector_none); - zval* type; - - MAKE_STD_ZVAL(type); - - Z_TYPE_P(type) = IS_STRING; - Z_STRVAL_P(type) = estrdup(typestr); - Z_STRLEN_P(type) = strlen(typestr); - - if(newtype == xmlrpc_datetime) { - XMLRPC_VALUE v = XMLRPC_CreateValueDateTime_ISO8601(NULL, value->value.str.val); - if(v) { - time_t timestamp = XMLRPC_GetValueDateTime(v); - if(timestamp) { - zval* ztimestamp; - - MAKE_STD_ZVAL(ztimestamp); - - ztimestamp->type = IS_LONG; - ztimestamp->value.lval = timestamp; - - convert_to_object(value); - if(SUCCESS == zend_hash_update(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void *) &type, sizeof(zval *), NULL)) { - bSuccess = zend_hash_update(Z_OBJPROP_P(value), OBJECT_VALUE_TS_ATTR, sizeof(OBJECT_VALUE_TS_ATTR), (void *) &ztimestamp, sizeof(zval *), NULL); - } - } else { - zval_ptr_dtor(&type); - } - XMLRPC_CleanupValue(v); - } else { - zval_ptr_dtor(&type); - } - } - else { - convert_to_object(value); - bSuccess = zend_hash_update(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void *) &type, sizeof(zval *), NULL); - } - } - } + int bSuccess = FAILURE; + TSRMLS_FETCH(); + + /* we only really care about strings because they can represent + * base64 and datetime. all other types have corresponding php types + */ + if (Z_TYPE_P(value) == IS_STRING) { + if (newtype == xmlrpc_base64 || newtype == xmlrpc_datetime) { + const char* typestr = xmlrpc_type_as_str(newtype, xmlrpc_vector_none); + zval* type; + + MAKE_STD_ZVAL(type); + + Z_TYPE_P(type) = IS_STRING; + Z_STRVAL_P(type) = estrdup(typestr); + Z_STRLEN_P(type) = strlen(typestr); + + if(newtype == xmlrpc_datetime) { + XMLRPC_VALUE v = XMLRPC_CreateValueDateTime_ISO8601(NULL, value->value.str.val); + if(v) { + time_t timestamp = XMLRPC_GetValueDateTime(v); + if(timestamp) { + zval* ztimestamp; + + MAKE_STD_ZVAL(ztimestamp); + + ztimestamp->type = IS_LONG; + ztimestamp->value.lval = timestamp; + + convert_to_object(value); + if(SUCCESS == zend_hash_update(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void *) &type, sizeof(zval *), NULL)) { + bSuccess = zend_hash_update(Z_OBJPROP_P(value), OBJECT_VALUE_TS_ATTR, sizeof(OBJECT_VALUE_TS_ATTR), (void *) &ztimestamp, sizeof(zval *), NULL); + } + } else { + zval_ptr_dtor(&type); + } + XMLRPC_CleanupValue(v); + } else { + zval_ptr_dtor(&type); + } + } else { + convert_to_object(value); + bSuccess = zend_hash_update(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void *) &type, sizeof(zval *), NULL); + } + } + } - return bSuccess; + return bSuccess; } /* return xmlrpc type of a php value */ XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(zval* value, zval** newvalue) { - XMLRPC_VALUE_TYPE type = xmlrpc_none; - TSRMLS_FETCH(); - - if (value) { - switch (Z_TYPE_P(value)) { - case IS_NULL: - type = xmlrpc_base64; - break; + XMLRPC_VALUE_TYPE type = xmlrpc_none; + TSRMLS_FETCH(); + + if (value) { + switch (Z_TYPE_P(value)) { + case IS_NULL: + type = xmlrpc_base64; + break; #ifndef BOOL_AS_LONG - /* Right thing to do, but it breaks some legacy code. */ - case IS_BOOL: - type = xmlrpc_boolean; - break; + /* Right thing to do, but it breaks some legacy code. */ + case IS_BOOL: + type = xmlrpc_boolean; + break; #else - case IS_BOOL: + case IS_BOOL: #endif - case IS_LONG: - case IS_RESOURCE: - type = xmlrpc_int; - break; - case IS_DOUBLE: - type = xmlrpc_double; - break; - case IS_CONSTANT: - type = xmlrpc_string; - break; - case IS_STRING: - type = xmlrpc_string; - break; - case IS_ARRAY: - case IS_CONSTANT_ARRAY: - type = xmlrpc_vector; - break; - case IS_OBJECT: - { - zval** attr; - type = xmlrpc_vector; - - if (zend_hash_find(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void**) &attr) == SUCCESS) { - if (Z_TYPE_PP(attr) == IS_STRING) { - type = xmlrpc_str_as_type(Z_STRVAL_PP(attr)); - } - } - break; - } - } + case IS_LONG: + case IS_RESOURCE: + type = xmlrpc_int; + break; + case IS_DOUBLE: + type = xmlrpc_double; + break; + case IS_CONSTANT: + type = xmlrpc_string; + break; + case IS_STRING: + type = xmlrpc_string; + break; + case IS_ARRAY: + case IS_CONSTANT_ARRAY: + type = xmlrpc_vector; + break; + case IS_OBJECT: + { + zval** attr; + type = xmlrpc_vector; + + if (zend_hash_find(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void**) &attr) == SUCCESS) { + if (Z_TYPE_PP(attr) == IS_STRING) { + type = xmlrpc_str_as_type(Z_STRVAL_PP(attr)); + } + } + break; + } + } /* if requested, return an unmolested (magic removed) copy of the value */ if (newvalue) { @@ -1406,7 +1394,6 @@ XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(zval* value, zval** newvalue) } } } - return type; } diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index b0bd71c37..fbb8b5645 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlwriter.c,v 1.20.2.12.2.17 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xmlwriter.c,v 1.20.2.12.2.20 2008/12/31 11:17:47 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -168,7 +168,7 @@ static zend_object_value xmlwriter_object_new(zend_class_entry *class_type TSRML #define XMLW_NAME_CHK(__err) \ if (xmlValidateName((xmlChar *) name, 0) != 0) { \ - php_error_docref(NULL TSRMLS_CC, E_WARNING, __err); \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", __err); \ RETURN_FALSE; \ } \ @@ -1483,6 +1483,9 @@ static PHP_FUNCTION(xmlwriter_open_uri) intern->uri_output = out_buffer; #else if (this) { + if (ze_obj->xmlwriter_ptr) { + xmlwriter_free_resource_ptr(ze_obj->xmlwriter_ptr TSRMLS_CC); + } ze_obj->xmlwriter_ptr = intern; RETURN_TRUE; } else @@ -1533,6 +1536,9 @@ static PHP_FUNCTION(xmlwriter_open_memory) intern->uri_output = NULL; #else if (this) { + if (ze_obj->xmlwriter_ptr) { + xmlwriter_free_resource_ptr(ze_obj->xmlwriter_ptr TSRMLS_CC); + } ze_obj->xmlwriter_ptr = intern; RETURN_TRUE; } else diff --git a/ext/xmlwriter/php_xmlwriter.h b/ext/xmlwriter/php_xmlwriter.h index 9f54e5855..868094205 100644 --- a/ext/xmlwriter/php_xmlwriter.h +++ b/ext/xmlwriter/php_xmlwriter.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xmlwriter.h,v 1.10.2.5.2.4 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xmlwriter.h,v 1.10.2.5.2.5 2008/12/31 11:17:47 sebastian Exp $ */ #ifndef PHP_XMLWRITER_H #define PHP_XMLWRITER_H diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c index a7e5537f3..ced1bacbe 100644 --- a/ext/xsl/php_xsl.c +++ b/ext/xsl/php_xsl.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xsl.c,v 1.32.2.6.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xsl.c,v 1.32.2.6.2.4 2008/12/31 11:17:47 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/ext/xsl/php_xsl.h b/ext/xsl/php_xsl.h index a64ace360..974f8bcbc 100644 --- a/ext/xsl/php_xsl.h +++ b/ext/xsl/php_xsl.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_xsl.h,v 1.15.2.1.2.2 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_xsl.h,v 1.15.2.1.2.3 2008/12/31 11:17:47 sebastian Exp $ */ #ifndef PHP_XSL_H #define PHP_XSL_H diff --git a/ext/xsl/xsl_fe.h b/ext/xsl/xsl_fe.h index d7384b0ae..9eaf7b6f8 100644 --- a/ext/xsl/xsl_fe.h +++ b/ext/xsl/xsl_fe.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xsl_fe.h,v 1.8.2.1.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: xsl_fe.h,v 1.8.2.1.2.4 2008/12/31 11:17:47 sebastian Exp $ */ #ifndef XSL_FE_H #define XSL_FE_H diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c index dc9a370b8..17f2f1915 100644 --- a/ext/xsl/xsltprocessor.c +++ b/ext/xsl/xsltprocessor.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xsltprocessor.c,v 1.39.2.2.2.13 2008/01/29 21:21:28 sebastian Exp $ */ +/* $Id: xsltprocessor.c,v 1.39.2.2.2.16 2008/12/31 11:17:47 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -30,23 +30,23 @@ /* {{{ arginfo */ static ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_import_stylesheet, 0, 0, 1) - ZEND_ARG_OBJ_INFO(0, doc, DOMDocument, 0) + ZEND_ARG_INFO(0, doc) ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_transform_to_doc, 0, 0, 1) - ZEND_ARG_OBJ_INFO(0, doc, DOMNode, 0) + ZEND_ARG_INFO(0, doc) ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_transform_to_uri, 0, 0, 2) - ZEND_ARG_OBJ_INFO(0, doc, DOMDocument, 0) + ZEND_ARG_INFO(0, doc) ZEND_ARG_INFO(0, uri) ZEND_END_ARG_INFO(); static ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_transform_to_xml, 0, 0, 1) - ZEND_ARG_OBJ_INFO(0, doc, DOMDocument, 0) + ZEND_ARG_INFO(0, doc) ZEND_END_ARG_INFO(); static @@ -280,7 +280,9 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t } break; default: - ZVAL_STRING(args[i], xmlXPathCastToString(obj), 1); + str = xmlXPathCastToString(obj); + ZVAL_STRING(args[i], str, 1); + xmlFree(str); } xmlXPathFreeObject(obj); fci.params[i] = &args[i]; diff --git a/ext/zip/Makefile.frag b/ext/zip/Makefile.frag deleted file mode 100644 index b3781e3e7..000000000 --- a/ext/zip/Makefile.frag +++ /dev/null @@ -1,28 +0,0 @@ -phpincludedir=$(prefix)/include/php - -ZIP_HEADER_FILES= \ - zip.h \ - zipint.h \ - zip_alias.h \ - zipint_alias.h - -install-zip-headers: - @echo "Installing ZIP headers: $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib" - @$(mkinstalldirs) $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib - @for f in $(ZIP_HEADER_FILES); do \ - if test -f "$(top_srcdir)/lib/$$f"; then \ - $(INSTALL_DATA) $(top_srcdir)/lib/$$f $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib; \ - elif test -f "$(top_builddir)/lib/$$f"; then \ - $(INSTALL_DATA) $(top_builddir)/lib/$$f $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib; \ - elif test -f "$(top_srcdir)/ext/zip/lib/$$f"; then \ - $(INSTALL_DATA) $(top_srcdir)/ext/zip/lib/$$f $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib; \ - elif test -f "$(top_builddir)/ext/zip/lib/$$f"; then \ - $(INSTALL_DATA) $(top_builddir)/ext/zip/lib/$$f $(INSTALL_ROOT)$(phpincludedir)/ext/zip/lib; \ - else \ - echo "hmmm"; \ - fi \ - done; - -# mini hack -install: $(all_targets) $(install_targets) install-zip-headers - diff --git a/ext/zip/config.m4 b/ext/zip/config.m4 index f31f260d9..088dd1b6e 100644 --- a/ext/zip/config.m4 +++ b/ext/zip/config.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.8.2.4 2008/01/18 00:31:23 cellog Exp $ +dnl $Id: config.m4,v 1.8.2.6 2008/12/09 09:21:59 pajoye Exp $ dnl PHP_ARG_ENABLE(zip, for zip archive read/writesupport, @@ -20,7 +20,7 @@ if test "$PHP_ZIP" != "no"; then PHP_ZLIB_DIR="$PHP_ZLIB_DIR" PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include" else - AC_MSG_ERROR([Can't find zlib headers under "$PHP_ZLIB_DIR"]) + AC_MSG_ERROR([Can not find zlib headers under "$PHP_ZLIB_DIR"]) fi else for i in /usr/local /usr; do @@ -52,13 +52,15 @@ if test "$PHP_ZIP" != "no"; then lib/zip_error_get_sys_type.c lib/zip_file_get_offset.c \ lib/zip_get_name.c lib/zip_replace.c lib/zip_source_function.c \ lib/zip_unchange.c lib/zip_dirent.c lib/zip_error_strerror.c \ - lib/zip_file_strerror.c lib/zip_get_num_files.c \ + lib/zip_filerange_crc.c lib/zip_file_strerror.c lib/zip_get_num_files.c \ + lib/zip_get_archive_flag.c lib/zip_set_archive_flag.c \ lib/zip_set_name.c lib/zip_source_zip.c lib/zip_unchange_data.c \ lib/zip_entry_free.c lib/zip_error_to_str.c lib/zip_fopen.c \ lib/zip_name_locate.c lib/zip_source_buffer.c lib/zip_stat.c \ lib/zip_entry_new.c lib/zip_err_str.c lib/zip_fopen_index.c \ - lib/zip_new.c lib/zip_source_file.c lib/zip_stat_index.c lib/zip_get_archive_comment.c \ - lib/zip_get_file_comment.c lib/zip_set_archive_comment.c lib/zip_set_file_comment.c \ + lib/zip_get_archive_comment.c lib/zip_get_file_comment.c \ + lib/zip_new.c lib/zip_source_file.c lib/zip_stat_index.c \ + lib/zip_set_archive_comment.c lib/zip_set_file_comment.c \ lib/zip_unchange_archive.c lib/zip_memdup.c lib/zip_stat_init.c lib/zip_add_dir.c \ lib/zip_error_clear.c lib/zip_file_error_clear.c" @@ -66,12 +68,6 @@ if test "$PHP_ZIP" != "no"; then PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared) PHP_ADD_BUILD_DIR($ext_builddir/lib, 1) PHP_SUBST(ZIP_SHARED_LIBADD) - ifdef([PHP_INSTALL_HEADERS], - [ - dnl Sadly, this is a complete NOP for pecl extensions - PHP_INSTALL_HEADERS(ext/zip/lib, [lib/zip.h lib/zipint.h lib/zip_alias.h lib/zipint_alias.h]) - ]) dnl so we always include the known-good working hack. - PHP_ADD_MAKEFILE_FRAGMENT fi diff --git a/ext/zip/config.w32 b/ext/zip/config.w32 index f0bc4c6db..56c39a217 100644 --- a/ext/zip/config.w32 +++ b/ext/zip/config.w32 @@ -1,4 +1,4 @@ -// $Id: config.w32,v 1.1.2.4 2008/01/14 03:19:41 cellog Exp $ +// $Id: config.w32,v 1.1.2.5 2008/10/23 16:13:50 pajoye Exp $ // vim:ft=javascript ARG_ENABLE("zip", "ZIP support", "no"); @@ -18,7 +18,8 @@ if (PHP_ZIP != "no") { zip_error_get_sys_type.c zip_file_get_offset.c \ zip_get_name.c zip_replace.c zip_source_function.c \ zip_unchange.c zip_dirent.c zip_error_strerror.c \ - zip_file_strerror.c zip_get_num_files.c \ + zip_filerange_crc.c zip_file_strerror.c zip_get_num_files.c \ + zip_get_archive_flag.c zip_set_archive_flag.c \ zip_set_name.c zip_source_zip.c zip_unchange_data.c \ zip_entry_free.c zip_error_to_str.c zip_fopen.c \ zip_name_locate.c zip_source_buffer.c zip_stat.c \ @@ -31,7 +32,6 @@ if (PHP_ZIP != "no") { AC_DEFINE('HAVE_ZLIB', 1); AC_DEFINE('HAVE_ZIP', 1); - ADD_FLAG("CFLAGS_ZIP", "/D PHP_ZIP_EXPORTS "); } else { WARNING("zip not enabled; libraries and headers not found"); } diff --git a/ext/zip/lib/mkstemp.c b/ext/zip/lib/mkstemp.c deleted file mode 100644 index 3ac587eaf..000000000 --- a/ext/zip/lib/mkstemp.c +++ /dev/null @@ -1,136 +0,0 @@ -/* $NiH: mkstemp.c,v 1.3 2006/04/23 14:51:45 wiz Exp $ */ - -/* Adapted from NetBSB libc by Dieter Baron */ - -/* NetBSD: gettemp.c,v 1.13 2003/12/05 00:57:36 uebayasi Exp */ - -/* - * Copyright (c) 1987, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - - -int -_zip_mkstemp(char *path) -{ - int fd; - char *start, *trv; - struct stat sbuf; - pid_t pid; - - /* To guarantee multiple calls generate unique names even if - the file is not created. 676 different possibilities with 7 - or more X's, 26 with 6 or less. */ - static char xtra[2] = "aa"; - int xcnt = 0; - - pid = getpid(); - - /* Move to end of path and count trailing X's. */ - for (trv = path; *trv; ++trv) - if (*trv == 'X') - xcnt++; - else - xcnt = 0; - - /* Use at least one from xtra. Use 2 if more than 6 X's. */ - if (*(trv - 1) == 'X') - *--trv = xtra[0]; - if (xcnt > 6 && *(trv - 1) == 'X') - *--trv = xtra[1]; - - /* Set remaining X's to pid digits with 0's to the left. */ - while (*--trv == 'X') { - *trv = (pid % 10) + '0'; - pid /= 10; - } - - /* update xtra for next call. */ - if (xtra[0] != 'z') - xtra[0]++; - else { - xtra[0] = 'a'; - if (xtra[1] != 'z') - xtra[1]++; - else - xtra[1] = 'a'; - } - - /* - * check the target directory; if you have six X's and it - * doesn't exist this runs for a *very* long time. - */ - for (start = trv + 1;; --trv) { - if (trv <= path) - break; - if (*trv == '/') { - *trv = '\0'; - if (stat(path, &sbuf)) - return (0); - if (!S_ISDIR(sbuf.st_mode)) { - errno = ENOTDIR; - return (0); - } - *trv = '/'; - break; - } - } - - for (;;) { - if ((fd = open(path, O_CREAT | O_EXCL | O_RDWR, 0600)) >= 0) - return (1); - if (errno != EEXIST) - return (0); - - /* tricky little algorithm for backward compatibility */ - for (trv = start;;) { - if (!*trv) - return (0); - if (*trv == 'z') - *trv++ = 'a'; - else { - if (isdigit((unsigned char)*trv)) - *trv = 'a'; - else - ++*trv; - break; - } - } - } - /*NOTREACHED*/ -} diff --git a/ext/zip/lib/unistd.h b/ext/zip/lib/unistd.h deleted file mode 100644 index 2ef435c01..000000000 --- a/ext/zip/lib/unistd.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef _MSC_VER -#include -#endif diff --git a/ext/zip/lib/zip.h b/ext/zip/lib/zip.h index 04ffb1471..e63ee7c7a 100644 --- a/ext/zip/lib/zip.h +++ b/ext/zip/lib/zip.h @@ -2,13 +2,11 @@ #define _HAD_ZIP_H /* - $NiH: zip.h,v 1.57 2006/04/24 14:04:19 dillo Exp $ - zip.h -- exported declarations. - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,24 +36,26 @@ #include "main/php.h" -/* #defines that rename all zip_ functions and structs */ -#include "zip_alias.h" + #ifdef PHP_WIN32 -#include "zip_win32.h" +# include "zip_win32.h" # ifdef PHP_ZIP_EXPORTS -# define PHPZIPAPI __declspec(dllexport) +# define ZIP_EXTERN(rt) __declspec(dllexport)rt _stdcall # else -# define PHPZIPAPI +# define ZIP_EXTERN(rt) rt # endif +#elif defined(__GNUC__) && __GNUC__ >= 4 +# define ZIP_EXTERN(rt) __attribute__ ((visibility("default"))) rt #else -#define PHPZIPAPI +# define ZIP_EXTERN(rt) rt #endif + BEGIN_EXTERN_C() + #include #include #include - /* flags for zip_open */ #define ZIP_CREATE 1 @@ -70,6 +70,11 @@ BEGIN_EXTERN_C() #define ZIP_FL_NODIR 2 /* ignore directory component */ #define ZIP_FL_COMPRESSED 4 /* read compressed data */ #define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */ +#define ZIP_FL_RECOMPRESS 16 /* force recompression of data */ + +/* archive global flags flags */ + +#define ZIP_AFL_TORRENT 1 /* torrent zipped */ /* libzip error codes */ @@ -121,6 +126,13 @@ BEGIN_EXTERN_C() #define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */ /* 11 - Reserved by PKWARE */ #define ZIP_CM_BZIP2 12 /* compressed using BZIP2 algorithm */ +/* 13 - Reserved by PKWARE */ +#define ZIP_CM_LZMA 14 /* LZMA (EFS) */ +/* 15-17 - Reserved by PKWARE */ +#define ZIP_CM_TERSE 18 /* compressed using IBM TERSE (new) */ +#define ZIP_CM_LZ77 19 /* IBM LZ77 z Architecture (PFS) */ +#define ZIP_CM_WAVPACK 97 /* WavPack compressed data */ +#define ZIP_CM_PPMD 98 /* PPMd version I, Rev 1 */ /* encryption methods */ @@ -170,46 +182,51 @@ struct zip_source; -PHPZIPAPI int zip_add(struct zip *, const char *, struct zip_source *); -PHPZIPAPI int zip_add_dir(struct zip *, const char *); -PHPZIPAPI int zip_close(struct zip *); -PHPZIPAPI int zip_delete(struct zip *, int); -PHPZIPAPI void zip_error_clear(struct zip *); -PHPZIPAPI void zip_error_get(struct zip *, int *, int *); -PHPZIPAPI int zip_error_get_sys_type(int); -PHPZIPAPI int zip_error_to_str(char *, size_t, int, int); -PHPZIPAPI int zip_fclose(struct zip_file *); -PHPZIPAPI void zip_file_error_clear(struct zip_file *); -PHPZIPAPI void zip_file_error_get(struct zip_file *, int *, int *); -PHPZIPAPI const char *zip_file_strerror(struct zip_file *); -PHPZIPAPI struct zip_file *zip_fopen(struct zip *, const char *, int); -PHPZIPAPI struct zip_file *zip_fopen_index(struct zip *, int, int); -PHPZIPAPI ssize_t zip_fread(struct zip_file *, void *, size_t); -PHPZIPAPI const char *zip_get_archive_comment(struct zip *, int *, int); -PHPZIPAPI const char *zip_get_file_comment(struct zip *, int, int *, int); -PHPZIPAPI const char *zip_get_name(struct zip *, int, int); -PHPZIPAPI int zip_get_num_files(struct zip *); -PHPZIPAPI int zip_name_locate(struct zip *, const char *, int); -PHPZIPAPI struct zip *zip_open(const char *, int, int *); -PHPZIPAPI int zip_rename(struct zip *, int, const char *); -PHPZIPAPI int zip_replace(struct zip *, int, struct zip_source *); -PHPZIPAPI int zip_set_archive_comment(struct zip *, const char *, int); -PHPZIPAPI int zip_set_file_comment(struct zip *, int, const char *, int); -PHPZIPAPI struct zip_source *zip_source_buffer(struct zip *, const void *, off_t, int); -PHPZIPAPI struct zip_source *zip_source_file(struct zip *, const char *, off_t, off_t); -PHPZIPAPI struct zip_source *zip_source_filep(struct zip *, FILE *, off_t, off_t); -PHPZIPAPI void zip_source_free(struct zip_source *); -PHPZIPAPI struct zip_source *zip_source_function(struct zip *, +ZIP_EXTERN(int) zip_add(struct zip *, const char *, struct zip_source *); +ZIP_EXTERN(int) zip_add_dir(struct zip *, const char *); +ZIP_EXTERN(int) zip_close(struct zip *); +ZIP_EXTERN(int) zip_delete(struct zip *, int); +ZIP_EXTERN(void) zip_error_clear(struct zip *); +ZIP_EXTERN(void) zip_error_get(struct zip *, int *, int *); +ZIP_EXTERN(int) zip_error_get_sys_type(int); +ZIP_EXTERN(int) zip_error_to_str(char *, size_t, int, int); +ZIP_EXTERN(int) zip_fclose(struct zip_file *); +ZIP_EXTERN(void) zip_file_error_clear(struct zip_file *); +ZIP_EXTERN(void) zip_file_error_get(struct zip_file *, int *, int *); +ZIP_EXTERN(const char *)zip_file_strerror(struct zip_file *); +ZIP_EXTERN(struct zip_file *)zip_fopen(struct zip *, const char *, int); +ZIP_EXTERN(struct zip_file *)zip_fopen_index(struct zip *, int, int); +ZIP_EXTERN(ssize_t) zip_fread(struct zip_file *, void *, size_t); +ZIP_EXTERN(const char *)zip_get_archive_comment(struct zip *, int *, int); +ZIP_EXTERN(int) zip_get_archive_flag(struct zip *, int, int); +ZIP_EXTERN(const char *)zip_get_file_comment(struct zip *, int, int *, int); +ZIP_EXTERN(const char *)zip_get_name(struct zip *, int, int); +ZIP_EXTERN(int) zip_get_num_files(struct zip *); +ZIP_EXTERN(int) zip_name_locate(struct zip *, const char *, int); +ZIP_EXTERN(struct zip *)zip_open(const char *, int, int *); +ZIP_EXTERN(int) zip_rename(struct zip *, int, const char *); +ZIP_EXTERN(int) zip_replace(struct zip *, int, struct zip_source *); +ZIP_EXTERN(int) zip_set_archive_comment(struct zip *, const char *, int); +ZIP_EXTERN(int) zip_set_archive_flag(struct zip *, int, int); +ZIP_EXTERN(int) zip_set_file_comment(struct zip *, int, const char *, int); +ZIP_EXTERN(struct zip_source *)zip_source_buffer(struct zip *, const void *, + off_t, int); +ZIP_EXTERN(struct zip_source *)zip_source_file(struct zip *, const char *, + off_t, off_t); +ZIP_EXTERN(struct zip_source *)zip_source_filep(struct zip *, FILE *, + off_t, off_t); +ZIP_EXTERN(void) zip_source_free(struct zip_source *); +ZIP_EXTERN(struct zip_source *)zip_source_function(struct zip *, zip_source_callback, void *); -PHPZIPAPI struct zip_source *zip_source_zip(struct zip *, struct zip *, int, int, - off_t, off_t); -PHPZIPAPI int zip_stat(struct zip *, const char *, int, struct zip_stat *); -PHPZIPAPI int zip_stat_index(struct zip *, int, int, struct zip_stat *); -PHPZIPAPI void zip_stat_init(struct zip_stat *); -PHPZIPAPI const char *zip_strerror(struct zip *); -PHPZIPAPI int zip_unchange(struct zip *, int); -PHPZIPAPI int zip_unchange_all(struct zip *); -PHPZIPAPI int zip_unchange_archive(struct zip *); +ZIP_EXTERN(struct zip_source *)zip_source_zip(struct zip *, struct zip *, + int, int, off_t, off_t); +ZIP_EXTERN(int) zip_stat(struct zip *, const char *, int, struct zip_stat *); +ZIP_EXTERN(int) zip_stat_index(struct zip *, int, int, struct zip_stat *); +ZIP_EXTERN(void) zip_stat_init(struct zip_stat *); +ZIP_EXTERN(const char *)zip_strerror(struct zip *); +ZIP_EXTERN(int) zip_unchange(struct zip *, int); +ZIP_EXTERN(int) zip_unchange_all(struct zip *); +ZIP_EXTERN(int) zip_unchange_archive(struct zip *); END_EXTERN_C(); #endif /* _HAD_ZIP_H */ diff --git a/ext/zip/lib/zip_add.c b/ext/zip/lib/zip_add.c index 70d1162f7..3afb1768f 100644 --- a/ext/zip/lib/zip_add.c +++ b/ext/zip/lib/zip_add.c @@ -1,11 +1,9 @@ /* - $NiH: zip_add.c,v 1.14 2004/11/18 15:04:04 wiz Exp $ - zip_add.c -- add file via callback function - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,17 +33,17 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_add(struct zip *za, const char *name, struct zip_source *source) { if (name == NULL || source == NULL) { _zip_error_set(&za->error, ZIP_ER_INVAL, 0); return -1; } + return _zip_replace(za, -1, name, source); } diff --git a/ext/zip/lib/zip_add_dir.c b/ext/zip/lib/zip_add_dir.c index d4da559ec..9b2342519 100644 --- a/ext/zip/lib/zip_add_dir.c +++ b/ext/zip/lib/zip_add_dir.c @@ -1,11 +1,9 @@ /* - $NiH: zip_add_dir.c,v 1.1 2006/10/03 12:23:13 dillo Exp $ - zip_add_dir.c -- add directory - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,12 +36,11 @@ #include #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_add_dir(struct zip *za, const char *name) { int len, ret; diff --git a/ext/zip/lib/zip_alias.h b/ext/zip/lib/zip_alias.h deleted file mode 100644 index 27a7b45df..000000000 --- a/ext/zip/lib/zip_alias.h +++ /dev/null @@ -1,45 +0,0 @@ - -#define zip_source_cmd php_ziplib__zip_source_cmd -#define zip_source_callback php_ziplib__zip_source_callback -#define zip_stat php_ziplib__zip_stat -#define zip php_ziplib__zip -#define zip_file php_ziplib__zip_file -#define zip_source php_ziplib__zip_source -#define zip_add php_ziplib__zip_add -#define zip_add_dir php_ziplib__zip_add_dir -#define zip_close php_ziplib__zip_close -#define zip_delete php_ziplib__zip_delete -#define zip_error_clear php_ziplib__zip_error_clear -#define zip_error_get php_ziplib__zip_error_get -#define zip_error_get_sys_type php_ziplib__zip_error_get_sys_type -#define zip_error_to_str php_ziplib__zip_error_to_str -#define zip_fclose php_ziplib__zip_fclose -#define zip_file_error_clear php_ziplib__zip_fille_error_clear -#define zip_file_error_get php_ziplib__zip_file_error_get -#define zip_file_strerror php_ziplib__zip_file_strerror -#define zip_fopen php_ziplib__zip_fopen -#define zip_fopen_index php_ziplib__zip_fopen_index -#define zip_fread php_ziplib__zip_fread -#define zip_get_archive_comment php_ziplib__zip_get_archive_comment -#define zip_get_file_comment php_ziplib__zip_get_file_comment -#define zip_get_name php_ziplib__zip_get_name -#define zip_get_num_files php_ziplib__zip_get_num_files -#define zip_name_locate php_ziplib__zip_name_locate -#define zip_open php_ziplib__zip_open -#define zip_rename php_ziplib__zip_rename -#define zip_replace php_ziplib__zip_replace -#define zip_set_archive_comment php_ziplib__zip_set_archive_comment -#define zip_set_file_comment php_ziplib__zip_set_file_comment -#define zip_source_buffer php_ziplib__zip_source_buffer -#define zip_source_file php_ziplib__zip_source_file -#define zip_source_filep php_ziplib__zip_source_filep -#define zip_source_free php_ziplib__zip_source_free -#define zip_source_function php_ziplib__zip_source_function -#define zip_source_zip php_ziplib__zip_source_zip -#define zip_stat php_ziplib__zip_stat -#define zip_stat_index php_ziplib__zip_stat_index -#define zip_stat_init php_ziplib__zip_stat_init -#define zip_strerror php_ziplib__zip_strerror -#define zip_unchange php_ziplib__zip_unchange -#define zip_unchange_all php_ziplib__zip_unchange_all -#define zip_unchange_archive php_ziplib__zip_unchange_archive diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c index 11ba8e223..289ca7afb 100644 --- a/ext/zip/lib/zip_close.c +++ b/ext/zip/lib/zip_close.c @@ -1,11 +1,9 @@ /* - $NiH: zip_close.c,v 1.60 2006/05/09 17:21:47 wiz Exp $ - zip_close.c -- close zip archive and update changes - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -32,31 +30,42 @@ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + + + #include #include #include #include -#ifndef _MSC_VER -#include -#endif #include #include -#include "zip.h" #include "zipint.h" -static int add_data(struct zip *, int, struct zip_dirent *, FILE *); +static int add_data(struct zip *, struct zip_source *, struct zip_dirent *, + FILE *); static int add_data_comp(zip_source_callback, void *, struct zip_stat *, FILE *, struct zip_error *); -static int add_data_uncomp(zip_source_callback, void *, struct zip_stat *, - FILE *, struct zip_error *); +static int add_data_uncomp(struct zip *, zip_source_callback, void *, + struct zip_stat *, FILE *); static void ch_set_error(struct zip_error *, zip_source_callback, void *); static int copy_data(FILE *, off_t, FILE *, struct zip_error *); +static int write_cdir(struct zip *, struct zip_cdir *, FILE *); static int _zip_cdir_set_comment(struct zip_cdir *, struct zip *); static int _zip_changed(struct zip *, int *); static char *_zip_create_temp_output(struct zip *, FILE **); +static int _zip_torrentzip_cmp(const void *, const void *); -PHPZIPAPI int + + +struct filelist { + int idx; + const char *name; +}; + + + +ZIP_EXTERN(int) zip_close(struct zip *za) { int survivors; @@ -66,7 +75,14 @@ zip_close(struct zip *za) mode_t mask; struct zip_cdir *cd; struct zip_dirent de; - int rename_error = 0; + struct filelist *filelist; + int reopen_on_error; + int new_torrentzip; + + reopen_on_error = 0; + + if (za == NULL) + return -1; if (!_zip_changed(za, &survivors)) { _zip_free(za); @@ -75,7 +91,7 @@ zip_close(struct zip *za) /* don't create zip files with no entries */ if (survivors == 0) { - if (za->zn) { + if (za->zn && za->zp) { if (remove(za->zn) != 0) { _zip_error_set(&za->error, ZIP_ER_REMOVE, errno); return -1; @@ -85,52 +101,92 @@ zip_close(struct zip *za) return 0; } - if ((cd=_zip_cdir_new(survivors, &za->error)) == NULL) + if ((filelist=(struct filelist *)malloc(sizeof(filelist[0])*survivors)) + == NULL) + return -1; + + if ((cd=_zip_cdir_new(survivors, &za->error)) == NULL) { + free(filelist); return -1; + } for (i=0; ientry[i]); + /* archive comment is special for torrentzip */ + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) { + cd->comment = _zip_memdup(TORRENT_SIG "XXXXXXXX", + TORRENT_SIG_LEN + TORRENT_CRC_LEN, + &za->error); + if (cd->comment == NULL) { + _zip_cdir_free(cd); + free(filelist); + return -1; + } + cd->comment_len = TORRENT_SIG_LEN + TORRENT_CRC_LEN; + } + else if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, ZIP_FL_UNCHANGED) == 0) { if (_zip_cdir_set_comment(cd, za) == -1) { _zip_cdir_free(cd); + free(filelist); return -1; } + } if ((temp=_zip_create_temp_output(za, &out)) == NULL) { _zip_cdir_free(cd); return -1; } - error = 0; + + /* create list of files with index into original archive */ for (i=j=0; inentry; i++) { if (za->entry[i].state == ZIP_ST_DELETED) continue; + filelist[j].idx = i; + filelist[j].name = zip_get_name(za, i, 0); + j++; + } + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) + qsort(filelist, survivors, sizeof(filelist[0]), + _zip_torrentzip_cmp); + + new_torrentzip = (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 1 + && zip_get_archive_flag(za, ZIP_AFL_TORRENT, + ZIP_FL_UNCHANGED) == 0); + error = 0; + for (j=0; jentry+i)) { + if (ZIP_ENTRY_DATA_CHANGED(za->entry+i) || new_torrentzip) { _zip_dirent_init(&de); + + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) + _zip_dirent_torrent_normalize(&de); + /* use it as central directory entry */ memcpy(cd->entry+j, &de, sizeof(cd->entry[j])); /* set/update file name */ if (za->entry[i].ch_filename == NULL) { - if (za->entry[i].state == ZIP_ST_REPLACED) { - de.filename = strdup(za->cdir->entry[i].filename); - de.filename_len = strlen(de.filename); - cd->entry[j].filename = za->cdir->entry[i].filename; - cd->entry[j].filename_len = de.filename_len; - } - else { + if (za->entry[i].state == ZIP_ST_ADDED) { de.filename = strdup("-"); de.filename_len = 1; cd->entry[j].filename = "-"; + } + else { + de.filename = strdup(za->cdir->entry[i].filename); + de.filename_len = strlen(de.filename); + cd->entry[j].filename = za->cdir->entry[i].filename; cd->entry[j].filename_len = de.filename_len; } } } else { /* copy existing directory entries */ - if (fseek(za->zp, za->cdir->entry[i].offset, SEEK_SET) != 0) { + if (fseeko(za->zp, za->cdir->entry[i].offset, SEEK_SET) != 0) { _zip_error_set(&za->error, ZIP_ER_SEEK, errno); error = 1; break; @@ -139,11 +195,11 @@ zip_close(struct zip *za) error = 1; break; } - - if (de.bitflags & ZIP_GPBF_USE_DATA_DESCRIPTOR) { - de.crc = (za->cdir->entry+i)->crc; - de.comp_size = (za->cdir->entry+i)->comp_size; - de.uncomp_size = (za->cdir->entry+i)->uncomp_size; + if (de.bitflags & ZIP_GPBF_DATA_DESCRIPTOR) { + de.crc = za->cdir->entry[i].crc; + de.comp_size = za->cdir->entry[i].comp_size; + de.uncomp_size = za->cdir->entry[i].uncomp_size; + de.bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; } memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j])); } @@ -159,20 +215,31 @@ zip_close(struct zip *za) cd->entry[j].filename_len = de.filename_len; } - if (za->entry[i].ch_comment_len != -1) { + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 0 + && za->entry[i].ch_comment_len != -1) { /* as the rest of cd entries, its malloc/free is done by za */ cd->entry[j].comment = za->entry[i].ch_comment; cd->entry[j].comment_len = za->entry[i].ch_comment_len; } - cd->entry[j].offset = ftell(out); + cd->entry[j].offset = ftello(out); + + if (ZIP_ENTRY_DATA_CHANGED(za->entry+i) || new_torrentzip) { + struct zip_source *zs; - if (ZIP_ENTRY_DATA_CHANGED(za->entry+i)) { - if (add_data(za, i, &de, out) < 0) { + zs = NULL; + if (!ZIP_ENTRY_DATA_CHANGED(za->entry+i)) { + if ((zs=zip_source_zip(za, za, i, ZIP_FL_RECOMPRESS, 0, -1)) + == NULL) { error = 1; break; } + } + if (add_data(za, zs ? zs : za->entry[i].source, &de, out) < 0) { + error = 1; + break; + } cd->entry[j].last_mod = de.last_mod; cd->entry[j].comp_method = de.comp_method; cd->entry[j].comp_size = de.comp_size; @@ -185,19 +252,18 @@ zip_close(struct zip *za) break; } /* we just read the local dirent, file is at correct position */ - if (copy_data(za->zp, de.comp_size, out, &za->error) < 0) { + if (copy_data(za->zp, cd->entry[j].comp_size, out, + &za->error) < 0) { error = 1; break; } } - j++; - _zip_dirent_finalize(&de); } if (!error) { - if (_zip_cdir_write(cd, out, &za->error) < 0) + if (write_cdir(za, cd, out) < 0) error = 1; } @@ -223,46 +289,40 @@ zip_close(struct zip *za) if (za->zp) { fclose(za->zp); za->zp = NULL; + reopen_on_error = 1; } - -#ifdef PHP_WIN32 - if (!MoveFileEx(temp, za->zn, MOVEFILE_REPLACE_EXISTING)) { - rename_error = -1; - } -#else - if (rename(temp, za->zn) != 0) { - rename_error = -1; - } -#endif - - if (rename_error < 0) { + if (_zip_rename(temp, za->zn) != 0) { _zip_error_set(&za->error, ZIP_ER_RENAME, errno); remove(temp); free(temp); + if (reopen_on_error) { + /* ignore errors, since we're already in an error case */ + za->zp = fopen(za->zn, "rb"); + } return -1; } - mask = umask(0); umask(mask); chmod(za->zn, 0666&~mask); _zip_free(za); free(temp); + return 0; } static int -add_data(struct zip *za, int idx, struct zip_dirent *de, FILE *ft) +add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft) { off_t offstart, offend; zip_source_callback cb; void *ud; struct zip_stat st; - cb = za->entry[idx].source->f; - ud = za->entry[idx].source->ud; + cb = zs->f; + ud = zs->ud; if (cb(ud, &st, sizeof(st), ZIP_SOURCE_STAT) < (ssize_t)sizeof(st)) { ch_set_error(&za->error, cb, ud); @@ -274,7 +334,7 @@ add_data(struct zip *za, int idx, struct zip_dirent *de, FILE *ft) return -1; } - offstart = ftell(ft); + offstart = ftello(ft); if (_zip_dirent_write(de, ft, 1, &za->error) < 0) return -1; @@ -284,7 +344,7 @@ add_data(struct zip *za, int idx, struct zip_dirent *de, FILE *ft) return -1; } else { - if (add_data_uncomp(cb, ud, &st, ft, &za->error) < 0) + if (add_data_uncomp(za, cb, ud, &st, ft) < 0) return -1; } @@ -293,23 +353,27 @@ add_data(struct zip *za, int idx, struct zip_dirent *de, FILE *ft) return -1; } - offend = ftell(ft); + offend = ftello(ft); - if (fseek(ft, offstart, SEEK_SET) < 0) { + if (fseeko(ft, offstart, SEEK_SET) < 0) { _zip_error_set(&za->error, ZIP_ER_SEEK, errno); return -1; } - de->comp_method = st.comp_method; + de->last_mod = st.mtime; + de->comp_method = st.comp_method; de->crc = st.crc; de->uncomp_size = st.size; de->comp_size = st.comp_size; + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) + _zip_dirent_torrent_normalize(de); + if (_zip_dirent_write(de, ft, 1, &za->error) < 0) return -1; - if (fseek(ft, offend, SEEK_SET) < 0) { + if (fseeko(ft, offend, SEEK_SET) < 0) { _zip_error_set(&za->error, ZIP_ER_SEEK, errno); return -1; } @@ -346,14 +410,15 @@ add_data_comp(zip_source_callback cb, void *ud, struct zip_stat *st,FILE *ft, static int -add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st, - FILE *ft, struct zip_error *error) +add_data_uncomp(struct zip *za, zip_source_callback cb, void *ud, + struct zip_stat *st, FILE *ft) { char b1[BUFSIZE], b2[BUFSIZE]; int end, flush, ret; ssize_t n; size_t n2; z_stream zstr; + int mem_level; st->comp_method = ZIP_CM_DEFLATE; st->comp_size = st->size = 0; @@ -365,8 +430,13 @@ add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st, zstr.avail_in = 0; zstr.avail_out = 0; - /* -15: undocumented feature of zlib to _not_ write a zlib header */ - deflateInit2(&zstr, Z_BEST_COMPRESSION, Z_DEFLATED, -15, 9, + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) + mem_level = TORRENT_MEM_LEVEL; + else + mem_level = MAX_MEM_LEVEL; + + /* -MAX_WBITS: undocumented feature of zlib to _not_ write a zlib header */ + deflateInit2(&zstr, Z_BEST_COMPRESSION, Z_DEFLATED, -MAX_WBITS, mem_level, Z_DEFAULT_STRATEGY); zstr.next_out = (Bytef *)b2; @@ -378,7 +448,7 @@ add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st, while (!end) { if (zstr.avail_in == 0 && !flush) { if ((n=cb(ud, b1, sizeof(b1), ZIP_SOURCE_READ)) < 0) { - ch_set_error(error, cb, ud); + ch_set_error(&za->error, cb, ud); deflateEnd(&zstr); return -1; } @@ -394,7 +464,7 @@ add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st, ret = deflate(&zstr, flush); if (ret != Z_OK && ret != Z_STREAM_END) { - _zip_error_set(error, ZIP_ER_ZLIB, ret); + _zip_error_set(&za->error, ZIP_ER_ZLIB, ret); return -1; } @@ -402,7 +472,7 @@ add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st, n2 = sizeof(b2) - zstr.avail_out; if (fwrite(b2, 1, n2, ft) != n2) { - _zip_error_set(error, ZIP_ER_WRITE, errno); + _zip_error_set(&za->error, ZIP_ER_WRITE, errno); return -1; } @@ -472,6 +542,44 @@ copy_data(FILE *fs, off_t len, FILE *ft, struct zip_error *error) +static int +write_cdir(struct zip *za, struct zip_cdir *cd, FILE *out) +{ + off_t offset; + uLong crc; + char buf[TORRENT_CRC_LEN+1]; + + if (_zip_cdir_write(cd, out, &za->error) < 0) + return -1; + + if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 0) + return 0; + + + /* fix up torrentzip comment */ + + offset = ftello(out); + + if (_zip_filerange_crc(out, cd->offset, cd->size, &crc, &za->error) < 0) + return -1; + + snprintf(buf, sizeof(buf), "%08lX", (long)crc); + + if (fseeko(out, offset-TORRENT_CRC_LEN, SEEK_SET) < 0) { + _zip_error_set(&za->error, ZIP_ER_SEEK, errno); + return -1; + } + + if (fwrite(buf, TORRENT_CRC_LEN, 1, out) != 1) { + _zip_error_set(&za->error, ZIP_ER_WRITE, errno); + return -1; + } + + return 0; +} + + + static int _zip_cdir_set_comment(struct zip_cdir *dest, struct zip *src) { @@ -503,7 +611,8 @@ _zip_changed(struct zip *za, int *survivorsp) changed = survivors = 0; - if (za->ch_comment_len != -1) + if (za->ch_comment_len != -1 + || za->ch_flags != za->flags) changed = 1; for (i=0; inentry; i++) { @@ -527,14 +636,14 @@ _zip_create_temp_output(struct zip *za, FILE **outp) char *temp; int tfd; FILE *tfp; - int len = strlen(za->zn) + 8; + int len = strlen(za->zn) + 8; - if ((temp=(char *)malloc(len)) == NULL) { + if ((temp=(char *)malloc(strlen(za->zn)+8)) == NULL) { _zip_error_set(&za->error, ZIP_ER_MEMORY, 0); return NULL; } - snprintf(temp, len, "%s.XXXXXX", za->zn); + snprintf(temp, len, "%s.XXXXXX", za->zn); if ((tfd=mkstemp(temp)) == -1) { _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno); @@ -556,3 +665,12 @@ _zip_create_temp_output(struct zip *za, FILE **outp) *outp = tfp; return temp; } + + + +static int +_zip_torrentzip_cmp(const void *a, const void *b) +{ + return strcasecmp(((const struct filelist *)a)->name, + ((const struct filelist *)b)->name); +} diff --git a/ext/zip/lib/zip_delete.c b/ext/zip/lib/zip_delete.c index eb5055b68..4591ff7f8 100644 --- a/ext/zip/lib/zip_delete.c +++ b/ext/zip/lib/zip_delete.c @@ -1,11 +1,9 @@ /* - $NiH: zip_delete.c,v 1.17 2005/06/09 19:57:09 dillo Exp $ - zip_delete.c -- delete file from zip archive - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_delete(struct zip *za, int idx) { if (idx < 0 || idx >= za->nentry) { diff --git a/ext/zip/lib/zip_dirent.c b/ext/zip/lib/zip_dirent.c index f796f8d66..425f7ff92 100644 --- a/ext/zip/lib/zip_dirent.c +++ b/ext/zip/lib/zip_dirent.c @@ -1,11 +1,9 @@ /* - $NiH: zip_dirent.c,v 1.9 2006/04/23 14:51:45 wiz Exp $ - zip_dirent.c -- read directory entry (local or central), clean dirent - Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -33,18 +31,15 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "main/php_reentrancy.h" + + #include #include #include #include -#ifndef _MSC_VER -#include -#endif #include #include -#include "zip.h" #include "zipint.h" static time_t _zip_d2u_time(int, int); @@ -56,7 +51,7 @@ static void _zip_write4(unsigned int, FILE *); -PHPZIPAPI void +void _zip_cdir_free(struct zip_cdir *cd) { int i; @@ -73,7 +68,7 @@ _zip_cdir_free(struct zip_cdir *cd) -PHPZIPAPI struct zip_cdir * +struct zip_cdir * _zip_cdir_new(int nentry, struct zip_error *error) { struct zip_cdir *cd; @@ -102,19 +97,19 @@ _zip_cdir_new(int nentry, struct zip_error *error) -PHPZIPAPI int +int _zip_cdir_write(struct zip_cdir *cd, FILE *fp, struct zip_error *error) { int i; - cd->offset = ftell(fp); + cd->offset = ftello(fp); for (i=0; inentry; i++) { if (_zip_dirent_write(cd->entry+i, fp, 0, error) != 0) return -1; } - cd->size = ftell(fp) - cd->offset; + cd->size = ftello(fp) - cd->offset; /* clearerr(fp); */ fwrite(EOCD_MAGIC, 1, 4, fp); @@ -136,7 +131,7 @@ _zip_cdir_write(struct zip_cdir *cd, FILE *fp, struct zip_error *error) -PHPZIPAPI void +void _zip_dirent_finalize(struct zip_dirent *zde) { free(zde->filename); @@ -149,7 +144,7 @@ _zip_dirent_finalize(struct zip_dirent *zde) -PHPZIPAPI void +void _zip_dirent_init(struct zip_dirent *de) { de->version_madeby = 0; @@ -188,7 +183,7 @@ _zip_dirent_init(struct zip_dirent *de) returned. */ -PHPZIPAPI int +int _zip_dirent_read(struct zip_dirent *zde, FILE *fp, unsigned char **bufp, unsigned int left, int localp, struct zip_error *error) @@ -323,6 +318,63 @@ _zip_dirent_read(struct zip_dirent *zde, FILE *fp, +/* _zip_dirent_torrent_normalize(de); + Set values suitable for torrentzip. +*/ + +void +_zip_dirent_torrent_normalize(struct zip_dirent *de) +{ + static struct tm torrenttime; + static time_t last_mod = 0; + + if (last_mod == 0) { +#ifdef HAVE_STRUCT_TM_TM_ZONE + time_t now; + struct tm *l; +#endif + + torrenttime.tm_sec = 0; + torrenttime.tm_min = 32; + torrenttime.tm_hour = 23; + torrenttime.tm_mday = 24; + torrenttime.tm_mon = 11; + torrenttime.tm_year = 96; + torrenttime.tm_wday = 0; + torrenttime.tm_yday = 0; + torrenttime.tm_isdst = 0; + +#ifdef HAVE_STRUCT_TM_TM_ZONE + time(&now); + l = localtime(&now); + torrenttime.tm_gmtoff = l->tm_gmtoff; + torrenttime.tm_zone = l->tm_zone; +#endif + + last_mod = mktime(&torrenttime); + } + + de->version_madeby = 0; + de->version_needed = 20; /* 2.0 */ + de->bitflags = 2; /* maximum compression */ + de->comp_method = ZIP_CM_DEFLATE; + de->last_mod = last_mod; + + de->disk_number = 0; + de->int_attrib = 0; + de->ext_attrib = 0; + de->offset = 0; + + free(de->extrafield); + de->extrafield = NULL; + de->extrafield_len = 0; + free(de->comment); + de->comment = NULL; + de->comment_len = 0; +} + + + /* _zip_dirent_write(zde, fp, localp, error): Writes zip directory entry zde to file fp. @@ -333,7 +385,7 @@ _zip_dirent_read(struct zip_dirent *zde, FILE *fp, returned. */ -PHPZIPAPI int +int _zip_dirent_write(struct zip_dirent *zde, FILE *fp, int localp, struct zip_error *error) { @@ -390,11 +442,13 @@ _zip_dirent_write(struct zip_dirent *zde, FILE *fp, int localp, static time_t _zip_d2u_time(int dtime, int ddate) { - struct tm *tm, tmbuf; + struct tm *tm; time_t now; now = time(NULL); - tm = php_localtime_r(&now, &tmbuf); + tm = localtime(&now); + /* let mktime decide if DST is in effect */ + tm->tm_isdst = -1; tm->tm_year = ((ddate>>9)&127) + 1980 - 1900; tm->tm_mon = ((ddate>>5)&15) - 1; @@ -409,7 +463,7 @@ _zip_d2u_time(int dtime, int ddate) -PHPZIPAPI unsigned short +unsigned short _zip_read2(unsigned char **a) { unsigned short ret; @@ -422,7 +476,7 @@ _zip_read2(unsigned char **a) -PHPZIPAPI unsigned int +unsigned int _zip_read4(unsigned char **a) { unsigned int ret; @@ -519,9 +573,9 @@ _zip_write4(unsigned int i, FILE *fp) static void _zip_u2d_time(time_t time, unsigned short *dtime, unsigned short *ddate) { - struct tm *tm, tmbuf; + struct tm *tm; - tm = php_localtime_r(&time, &tmbuf); + tm = localtime(&time); *ddate = ((tm->tm_year+1900-1980)<<9) + ((tm->tm_mon+1)<<5) + tm->tm_mday; *dtime = ((tm->tm_hour)<<11) + ((tm->tm_min)<<5) diff --git a/ext/zip/lib/zip_entry_free.c b/ext/zip/lib/zip_entry_free.c index 1bab313ed..c50c9434b 100644 --- a/ext/zip/lib/zip_entry_free.c +++ b/ext/zip/lib/zip_entry_free.c @@ -1,11 +1,9 @@ /* - $NiH: zip_entry_free.c,v 1.2 2006/04/09 19:05:47 wiz Exp $ - zip_entry_free.c -- free struct zip_entry - Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +void _zip_entry_free(struct zip_entry *ze) { free(ze->ch_filename); diff --git a/ext/zip/lib/zip_entry_new.c b/ext/zip/lib/zip_entry_new.c index 67e13fd84..7059b1b06 100644 --- a/ext/zip/lib/zip_entry_new.c +++ b/ext/zip/lib/zip_entry_new.c @@ -1,11 +1,9 @@ /* - $NiH: zip_entry_new.c,v 1.2 2006/04/09 19:05:47 wiz Exp $ - zip_entry_new.c -- create and init struct zip_entry - Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI struct zip_entry * +struct zip_entry * _zip_entry_new(struct zip *za) { struct zip_entry *ze; diff --git a/ext/zip/lib/zip_err_str.c b/ext/zip/lib/zip_err_str.c index c74538d64..3fcdf1738 100644 --- a/ext/zip/lib/zip_err_str.c +++ b/ext/zip/lib/zip_err_str.c @@ -1,12 +1,8 @@ /* This file was generated automatically by ./make_zip_err_str.sh from ./zip.h; make changes there. - - NiH: make_zip_err_str.sh,v 1.8 2004/11/17 21:55:09 wiz Exp - NiH: zip.h,v 1.57 2006/04/24 14:04:19 dillo Exp */ -#include "zip.h" #include "zipint.h" diff --git a/ext/zip/lib/zip_error.c b/ext/zip/lib/zip_error.c index 4816b73ae..aab707945 100644 --- a/ext/zip/lib/zip_error.c +++ b/ext/zip/lib/zip_error.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error.c,v 1.7 2005/06/09 19:57:09 dillo Exp $ - zip_error.c -- struct zip_error helper functions - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +void _zip_error_clear(struct zip_error *err) { err->zip_err = ZIP_ER_OK; @@ -51,7 +48,7 @@ _zip_error_clear(struct zip_error *err) -PHPZIPAPI void +void _zip_error_copy(struct zip_error *dst, struct zip_error *src) { dst->zip_err = src->zip_err; @@ -60,7 +57,7 @@ _zip_error_copy(struct zip_error *dst, struct zip_error *src) -PHPZIPAPI void +void _zip_error_fini(struct zip_error *err) { free(err->str); @@ -69,7 +66,7 @@ _zip_error_fini(struct zip_error *err) -PHPZIPAPI void +void _zip_error_get(struct zip_error *err, int *zep, int *sep) { if (zep) @@ -84,7 +81,7 @@ _zip_error_get(struct zip_error *err, int *zep, int *sep) -PHPZIPAPI void +void _zip_error_init(struct zip_error *err) { err->zip_err = ZIP_ER_OK; @@ -94,7 +91,7 @@ _zip_error_init(struct zip_error *err) -PHPZIPAPI void +void _zip_error_set(struct zip_error *err, int ze, int se) { if (err) { diff --git a/ext/zip/lib/zip_error_clear.c b/ext/zip/lib/zip_error_clear.c index 8a76f4440..34e7dea48 100644 --- a/ext/zip/lib/zip_error_clear.c +++ b/ext/zip/lib/zip_error_clear.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error_clear.c,v 1.1 2006/10/04 15:21:09 dillo Exp $ - zip_error_clear.c -- clear zip error - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +ZIP_EXTERN(void) zip_error_clear(struct zip *za) { _zip_error_clear(&za->error); diff --git a/ext/zip/lib/zip_error_get.c b/ext/zip/lib/zip_error_get.c index 888b54569..c15705e32 100644 --- a/ext/zip/lib/zip_error_get.c +++ b/ext/zip/lib/zip_error_get.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error_get.c,v 1.1 2004/11/18 15:06:20 wiz Exp $ - zip_error_get.c -- get zip error - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +ZIP_EXTERN(void) zip_error_get(struct zip *za, int *zep, int *sep) { _zip_error_get(&za->error, zep, sep); diff --git a/ext/zip/lib/zip_error_get_sys_type.c b/ext/zip/lib/zip_error_get_sys_type.c index bfe642383..47aa93e69 100644 --- a/ext/zip/lib/zip_error_get_sys_type.c +++ b/ext/zip/lib/zip_error_get_sys_type.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error_get_sys_type.c,v 1.1 2004/12/22 15:49:18 wiz Exp $ - zip_error_get_sys_type.c -- return type of system error code - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_error_get_sys_type(int ze) { if (ze < 0 || ze >= _zip_nerr_str) diff --git a/ext/zip/lib/zip_error_strerror.c b/ext/zip/lib/zip_error_strerror.c index 06e98c76d..3d0951cfb 100644 --- a/ext/zip/lib/zip_error_strerror.c +++ b/ext/zip/lib/zip_error_strerror.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error_strerror.c,v 1.4 2006/02/21 09:41:00 dillo Exp $ - zip_error_sterror.c -- get string representation of struct zip_error - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -40,12 +38,11 @@ #include #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI const char * +const char * _zip_error_strerror(struct zip_error *err) { const char *zs, *ss; @@ -54,7 +51,7 @@ _zip_error_strerror(struct zip_error *err) _zip_error_fini(err); if (err->zip_err < 0 || err->zip_err >= _zip_nerr_str) { - snprintf(buf, sizeof(buf), "Unknown error %d", err->zip_err); + sprintf(buf, "Unknown error %d", err->zip_err); zs = NULL; ss = buf; } @@ -78,16 +75,16 @@ _zip_error_strerror(struct zip_error *err) if (ss == NULL) return zs; else { - int l = strlen(ss) + (zs ? strlen(zs)+2 : 0) + 1; - if ((s=(char *)malloc(l)) == NULL) + if ((s=(char *)malloc(strlen(ss) + + (zs ? strlen(zs)+2 : 0) + 1)) == NULL) return _zip_err_str[ZIP_ER_MEMORY]; - snprintf(s, l, "%s%s%s", + sprintf(s, "%s%s%s", (zs ? zs : ""), (zs ? ": " : ""), ss); err->str = s; - return ss; + return s; } } diff --git a/ext/zip/lib/zip_error_to_str.c b/ext/zip/lib/zip_error_to_str.c index 665803472..4dea4d667 100644 --- a/ext/zip/lib/zip_error_to_str.c +++ b/ext/zip/lib/zip_error_to_str.c @@ -1,11 +1,9 @@ /* - $NiH: zip_error_to_str.c,v 1.1 2004/11/18 15:06:20 wiz Exp $ - zip_error_to_str.c -- get string representation of zip error code - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -40,12 +38,11 @@ #include #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_error_to_str(char *buf, size_t len, int ze, int se) { const char *zs, *ss; diff --git a/ext/zip/lib/zip_fclose.c b/ext/zip/lib/zip_fclose.c index 91f30b7bb..8f062d9d0 100644 --- a/ext/zip/lib/zip_fclose.c +++ b/ext/zip/lib/zip_fclose.c @@ -1,11 +1,9 @@ /* - $NiH: zip_fclose.c,v 1.14 2005/06/09 19:57:09 dillo Exp $ - zip_fclose.c -- close file in zip archive - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_fclose(struct zip_file *zf) { int i, ret; @@ -51,7 +48,6 @@ zip_fclose(struct zip_file *zf) inflateEnd(zf->zstr); free(zf->buffer); free(zf->zstr); - if (zf->za) { for (i=0; iza->nfile; i++) { if (zf->za->file[i] == zf) { diff --git a/ext/zip/lib/zip_file_error_clear.c b/ext/zip/lib/zip_file_error_clear.c index dca33b35f..6c9c2a02b 100644 --- a/ext/zip/lib/zip_file_error_clear.c +++ b/ext/zip/lib/zip_file_error_clear.c @@ -1,11 +1,9 @@ /* - $NiH: zip_file_error_clear.c,v 1.4 2006/10/04 18:37:54 wiz Exp $ - zip_file_error_clear.c -- clear zip file error - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +ZIP_EXTERN(void) zip_file_error_clear(struct zip_file *zf) { _zip_error_clear(&zf->error); diff --git a/ext/zip/lib/zip_file_error_get.c b/ext/zip/lib/zip_file_error_get.c index 05516703c..a53fa7e00 100644 --- a/ext/zip/lib/zip_file_error_get.c +++ b/ext/zip/lib/zip_file_error_get.c @@ -1,11 +1,9 @@ /* - $NiH: zip_file_error_get.c,v 1.1 2004/11/18 15:06:21 wiz Exp $ - zip_file_error_get.c -- get zip file error - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +ZIP_EXTERN(void) zip_file_error_get(struct zip_file *zf, int *zep, int *sep) { _zip_error_get(&zf->error, zep, sep); diff --git a/ext/zip/lib/zip_file_get_offset.c b/ext/zip/lib/zip_file_get_offset.c index 493004023..68f92f1fe 100644 --- a/ext/zip/lib/zip_file_get_offset.c +++ b/ext/zip/lib/zip_file_get_offset.c @@ -1,11 +1,9 @@ /* - $NiH: zip_file_get_offset.c,v 1.4 2006/04/23 14:51:45 wiz Exp $ - zip_file_get_offset.c -- get offset of file data in archive. - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -39,13 +37,9 @@ #include #include #include -#ifndef _MSC_VER -#include -#endif #include #include -#include "zip.h" #include "zipint.h" @@ -56,7 +50,7 @@ On error, fills in za->error and returns 0. */ -PHPZIPAPI unsigned int +unsigned int _zip_file_get_offset(struct zip *za, int idx) { struct zip_dirent de; @@ -64,7 +58,7 @@ _zip_file_get_offset(struct zip *za, int idx) offset = za->cdir->entry[idx].offset; - if (fseek(za->zp, offset, SEEK_SET) != 0) { + if (fseeko(za->zp, offset, SEEK_SET) != 0) { _zip_error_set(&za->error, ZIP_ER_SEEK, errno); return 0; } diff --git a/ext/zip/lib/zip_file_strerror.c b/ext/zip/lib/zip_file_strerror.c index 2cc79c133..c2864f2ba 100644 --- a/ext/zip/lib/zip_file_strerror.c +++ b/ext/zip/lib/zip_file_strerror.c @@ -1,11 +1,9 @@ /* - $NiH: zip_file_strerror.c,v 1.1 2003/10/05 16:05:22 dillo Exp $ - zip_file_sterror.c -- get string representation of zip file error - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI const char * +ZIP_EXTERN(const char *) zip_file_strerror(struct zip_file *zf) { return _zip_error_strerror(&zf->error); diff --git a/ext/zip/lib/zip_filerange_crc.c b/ext/zip/lib/zip_filerange_crc.c new file mode 100644 index 000000000..4d1ad5669 --- /dev/null +++ b/ext/zip/lib/zip_filerange_crc.c @@ -0,0 +1,71 @@ +/* + zip_filerange_crc.c -- compute CRC32 for a range of a file + Copyright (C) 2008 Dieter Baron and Thomas Klausner + + This file is part of libzip, a library to manipulate ZIP archives. + The authors can be contacted at + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + + +#include +#include + +#include "zipint.h" + + + + +int +_zip_filerange_crc(FILE *fp, off_t start, off_t len, uLong *crcp, + struct zip_error *errp) +{ + Bytef buf[BUFSIZE]; + size_t n; + + *crcp = crc32(0L, Z_NULL, 0); + + if (fseeko(fp, start, SEEK_SET) != 0) { + _zip_error_set(errp, ZIP_ER_SEEK, errno); + return -1; + } + + while (len > 0) { + n = len > BUFSIZE ? BUFSIZE : len; + if ((n=fread(buf, 1, n, fp)) <= 0) { + _zip_error_set(errp, ZIP_ER_READ, errno); + return -1; + } + + *crcp = crc32(*crcp, buf, n); + + len-= n; + } + + return 0; +} diff --git a/ext/zip/lib/zip_fopen.c b/ext/zip/lib/zip_fopen.c index c05ad45bd..b4b76049f 100644 --- a/ext/zip/lib/zip_fopen.c +++ b/ext/zip/lib/zip_fopen.c @@ -1,11 +1,9 @@ /* - $NiH: zip_fopen.c,v 1.12 2005/06/09 19:57:09 dillo Exp $ - zip_fopen.c -- open file in zip archive for reading - Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI struct zip_file * +ZIP_EXTERN(struct zip_file *) zip_fopen(struct zip *za, const char *fname, int flags) { int idx; diff --git a/ext/zip/lib/zip_fopen_index.c b/ext/zip/lib/zip_fopen_index.c index 105cefe73..1e7e41989 100644 --- a/ext/zip/lib/zip_fopen_index.c +++ b/ext/zip/lib/zip_fopen_index.c @@ -1,11 +1,9 @@ /* - $NiH: zip_fopen_index.c,v 1.24 2005/05/20 21:54:53 wiz Exp $ - zip_fopen_index.c -- open file in zip archive for reading by index - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -39,14 +37,13 @@ #include #include -#include "zip.h" #include "zipint.h" static struct zip_file *_zip_file_new(struct zip *za); -PHPZIPAPI struct zip_file * +ZIP_EXTERN(struct zip_file *) zip_fopen_index(struct zip *za, int fileno, int flags) { int len, ret; @@ -141,7 +138,7 @@ zip_fopen_index(struct zip *za, int fileno, int flags) -PHPZIPAPI int +int _zip_file_fillbuf(void *buf, size_t buflen, struct zip_file *zf) { int i, j; @@ -152,7 +149,7 @@ _zip_file_fillbuf(void *buf, size_t buflen, struct zip_file *zf) if ((zf->flags & ZIP_ZF_EOF) || zf->cbytes_left <= 0 || buflen <= 0) return 0; - if (fseek(zf->za->zp, zf->fpos, SEEK_SET) < 0) { + if (fseeko(zf->za->zp, zf->fpos, SEEK_SET) < 0) { _zip_error_set(&zf->error, ZIP_ER_SEEK, errno); return -1; } diff --git a/ext/zip/lib/zip_fread.c b/ext/zip/lib/zip_fread.c index 064d2b97f..1a2b0e381 100644 --- a/ext/zip/lib/zip_fread.c +++ b/ext/zip/lib/zip_fread.c @@ -1,11 +1,9 @@ /* - $NiH: zip_fread.c,v 1.21 2006/04/23 14:49:50 wiz Exp $ - zip_fread.c -- read from file - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI ssize_t +ZIP_EXTERN(ssize_t) zip_fread(struct zip_file *zf, void *outbuf, size_t toread) { int ret; diff --git a/ext/zip/lib/zip_free.c b/ext/zip/lib/zip_free.c index 534c58eb0..76c3a9673 100644 --- a/ext/zip/lib/zip_free.c +++ b/ext/zip/lib/zip_free.c @@ -1,11 +1,9 @@ /* - $NiH: zip_free.c,v 1.17 2005/06/09 19:57:10 dillo Exp $ - zip_free.c -- free struct zip - Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,7 +34,7 @@ #include -#include "zip.h" + #include "zipint.h" @@ -45,7 +43,7 @@ frees the space allocated to a zipfile struct, and closes the corresponding file. */ -PHPZIPAPI void +void _zip_free(struct zip *za) { int i; @@ -59,9 +57,6 @@ _zip_free(struct zip *za) if (za->zp) fclose(za->zp); - if (za->ch_comment) - free(za->ch_comment); - _zip_cdir_free(za->cdir); if (za->entry) { diff --git a/ext/zip/lib/zip_get_archive_comment.c b/ext/zip/lib/zip_get_archive_comment.c index c23597c09..ed1324fd5 100644 --- a/ext/zip/lib/zip_get_archive_comment.c +++ b/ext/zip/lib/zip_get_archive_comment.c @@ -1,11 +1,9 @@ /* - $NiH: zip_get_archive_comment.c,v 1.4 2006/04/23 16:11:33 wiz Exp $ - zip_get_archive_comment.c -- get archive comment - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI const char * +ZIP_EXTERN(const char *) zip_get_archive_comment(struct zip *za, int *lenp, int flags) { if ((flags & ZIP_FL_UNCHANGED) @@ -50,6 +47,11 @@ zip_get_archive_comment(struct zip *za, int *lenp, int flags) *lenp = za->cdir->comment_len; return za->cdir->comment; } + else { + if (lenp != NULL) + *lenp = -1; + return NULL; + } } if (lenp != NULL) diff --git a/ext/zip/lib/zip_get_archive_flag.c b/ext/zip/lib/zip_get_archive_flag.c new file mode 100644 index 000000000..2d46aa39f --- /dev/null +++ b/ext/zip/lib/zip_get_archive_flag.c @@ -0,0 +1,48 @@ +/* + zip_get_archive_flag.c -- get archive global flag + Copyright (C) 2008 Dieter Baron and Thomas Klausner + + This file is part of libzip, a library to manipulate ZIP archives. + The authors can be contacted at + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + + +#include "zipint.h" + + + +ZIP_EXTERN(int) +zip_get_archive_flag(struct zip *za, int flag, int flags) +{ + int fl; + + fl = (flags & ZIP_FL_UNCHANGED) ? za->flags : za->ch_flags; + + return (fl & flag) ? 1 : 0; +} diff --git a/ext/zip/lib/zip_get_file_comment.c b/ext/zip/lib/zip_get_file_comment.c index 476ac7da0..57dd9028b 100644 --- a/ext/zip/lib/zip_get_file_comment.c +++ b/ext/zip/lib/zip_get_file_comment.c @@ -1,11 +1,9 @@ /* - $NiH: zip_get_file_comment.c,v 1.2 2006/04/23 13:06:28 wiz Exp $ - zip_get_file_comment.c -- get file comment - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI const char * +ZIP_EXTERN(const char *) zip_get_file_comment(struct zip *za, int idx, int *lenp, int flags) { if (idx < 0 || idx >= za->nentry) { diff --git a/ext/zip/lib/zip_get_name.c b/ext/zip/lib/zip_get_name.c index c2cae2518..b58d97205 100644 --- a/ext/zip/lib/zip_get_name.c +++ b/ext/zip/lib/zip_get_name.c @@ -1,11 +1,9 @@ /* - $NiH: zip_get_name.c,v 1.13 2005/01/20 21:00:54 dillo Exp $ - zip_get_name.c -- get filename for a file in zip file - Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI const char * +ZIP_EXTERN(const char *) zip_get_name(struct zip *za, int idx, int flags) { return _zip_get_name(za, idx, flags, &za->error); @@ -48,7 +45,7 @@ zip_get_name(struct zip *za, int idx, int flags) -PHPZIPAPI const char * +const char * _zip_get_name(struct zip *za, int idx, int flags, struct zip_error *error) { if (idx < 0 || idx >= za->nentry) { diff --git a/ext/zip/lib/zip_get_num_files.c b/ext/zip/lib/zip_get_num_files.c index 05a54fcb6..a442f293e 100644 --- a/ext/zip/lib/zip_get_num_files.c +++ b/ext/zip/lib/zip_get_num_files.c @@ -1,11 +1,9 @@ /* - $NiH: zip_get_num_files.c,v 1.2 2003/12/27 22:53:15 wiz Exp $ - zip_get_num_files.c -- get number of files in archive - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_get_num_files(struct zip *za) { if (za == NULL) diff --git a/ext/zip/lib/zip_memdup.c b/ext/zip/lib/zip_memdup.c index ebb7426dd..641125ed2 100644 --- a/ext/zip/lib/zip_memdup.c +++ b/ext/zip/lib/zip_memdup.c @@ -1,11 +1,9 @@ /* - $NiH: zip_memdup.c,v 1.2 2006/04/24 10:34:39 dillo Exp $ - zip_memdup.c -- internal zip function, "strdup" with len - Copyright (C) 1999, 2003, 2004, 2005, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,12 +34,11 @@ #include #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI void * +void * _zip_memdup(const void *mem, size_t len, struct zip_error *error) { void *ret; diff --git a/ext/zip/lib/zip_name_locate.c b/ext/zip/lib/zip_name_locate.c index 108db4f60..e8b35ff93 100644 --- a/ext/zip/lib/zip_name_locate.c +++ b/ext/zip/lib/zip_name_locate.c @@ -1,11 +1,9 @@ /* - $NiH: zip_name_locate.c,v 1.19 2005/06/09 19:57:10 dillo Exp $ - zip_name_locate.c -- get index by name - Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -19,7 +17,7 @@ 3. The names of the authors may not be used to endorse or promote products derived from this software without specific prior written permission. - + THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_name_locate(struct zip *za, const char *fname, int flags) { return _zip_name_locate(za, fname, flags, &za->error); @@ -50,7 +47,7 @@ zip_name_locate(struct zip *za, const char *fname, int flags) -PHPZIPAPI int +int _zip_name_locate(struct zip *za, const char *fname, int flags, struct zip_error *error) { @@ -62,11 +59,8 @@ _zip_name_locate(struct zip *za, const char *fname, int flags, _zip_error_set(error, ZIP_ER_INVAL, 0); return -1; } -#ifdef PHP_WIN32 - cmp = (flags & ZIP_FL_NOCASE) ? stricmp : strcmp; -#else - cmp = (flags & ZIP_FL_NOCASE) ? strcasecmp : strcmp; -#endif + + cmp = (flags & ZIP_FL_NOCASE) ? strcmpi : strcmp; n = (flags & ZIP_FL_UNCHANGED) ? za->cdir->nentry : za->nentry; for (i=0; i + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,7 +34,7 @@ #include -#include "zip.h" + #include "zipint.h" @@ -45,7 +43,7 @@ creates a new zipfile struct, and sets the contents to zero; returns the new struct. */ -PHPZIPAPI struct zip * +struct zip * _zip_new(struct zip_error *error) { struct zip *za; @@ -66,6 +64,7 @@ _zip_new(struct zip_error *error) za->entry = NULL; za->nfile = za->nfile_alloc = 0; za->file = NULL; + za->flags = za->ch_flags = 0; return za; } diff --git a/ext/zip/lib/zip_open.c b/ext/zip/lib/zip_open.c index 711dcb1ca..0880eef2c 100644 --- a/ext/zip/lib/zip_open.c +++ b/ext/zip/lib/zip_open.c @@ -1,11 +1,9 @@ /* - $NiH: zip_open.c,v 1.38 2006/05/04 00:01:26 dillo Exp $ - zip_open.c -- open zip archive - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,18 +35,19 @@ #include #include +#include #include #include #include -#ifndef _MSC_VER -#include -#endif -#include -#include "zip.h" + #include "zipint.h" static void set_error(int *, struct zip_error *, int); +static struct zip *_zip_allocate_new(const char *, int *); static int _zip_checkcons(FILE *, struct zip_cdir *, struct zip_error *); +static void _zip_check_torrentzip(struct zip *); +static struct zip_cdir *_zip_find_central_dir(FILE *, int, int *, off_t); +static int _zip_file_exists(const char *, int, int *); static int _zip_headercomp(struct zip_dirent *, int, struct zip_dirent *, int); static unsigned char *_zip_memmem(const unsigned char *, int, @@ -58,154 +57,58 @@ static struct zip_cdir *_zip_readcdir(FILE *, unsigned char *, unsigned char *, -PHPZIPAPI struct zip * +ZIP_EXTERN(struct zip *) zip_open(const char *fn, int flags, int *zep) { FILE *fp; - unsigned char *buf, *match; - int a, i, buflen, best; struct zip *za; - struct zip_cdir *cdir, *cdirnew; - long len; - struct stat st; - struct zip_error error, err2; - - if (fn == NULL) { - set_error(zep, NULL, ZIP_ER_INVAL); + struct zip_cdir *cdir; + int i; + off_t len; + + switch (_zip_file_exists(fn, flags, zep)) { + case -1: + if (!(flags & ZIP_OVERWRITE)) { return NULL; + } + + case 0: + return _zip_allocate_new(fn, zep); + default: + break; } - if (flags & ZIP_OVERWRITE || stat(fn, &st) != 0) { - if ((flags & ZIP_CREATE) || (flags & ZIP_OVERWRITE)) { - if ((za=_zip_new(&error)) == NULL) { - set_error(zep, &error, 0); - return NULL; - } - - za->zn = strdup(fn); - if (!za->zn) { - _zip_free(za); - set_error(zep, NULL, ZIP_ER_MEMORY); - return NULL; - } - return za; - } - else { - set_error(zep, NULL, ZIP_ER_OPEN); - return NULL; - } - } - else if ((flags & ZIP_EXCL)) { - set_error(zep, NULL, ZIP_ER_EXISTS); + if ((fp=fopen(fn, "rb")) == NULL) { + set_error(zep, NULL, ZIP_ER_OPEN); return NULL; } - /* ZIP_CREATE gets ignored if file exists and not ZIP_EXCL, - just like open() */ - if ((fp=fopen(fn, "rb")) == NULL) { - set_error(zep, NULL, ZIP_ER_OPEN); - return NULL; - } - -#ifdef PHP_WIN32 - _setmode(_fileno(fp), _O_BINARY ); -#endif + fseeko(fp, 0, SEEK_END); + len = ftello(fp); - clearerr(fp); - fseek(fp, 0, SEEK_END); - len = ftell(fp); - i = fseek(fp, -(len < CDBUFSIZE ? len : CDBUFSIZE), SEEK_END); - if (i == -1 && errno != EFBIG) { - /* seek before start of file on my machine */ - set_error(zep, NULL, ZIP_ER_SEEK); - fclose(fp); - return NULL; - } - - /* 64k is too much for stack */ - if ((buf=(unsigned char *)malloc(CDBUFSIZE)) == NULL) { - set_error(zep, NULL, ZIP_ER_MEMORY); - fclose(fp); - return NULL; + /* treat empty files as empty archives */ + if (len == 0) { + if ((za=_zip_allocate_new(fn, zep)) == NULL) + fclose(fp); + else + za->zp = fp; + return za; } - clearerr(fp); - buflen = fread(buf, 1, CDBUFSIZE, fp); - - if (ferror(fp)) { - set_error(zep, NULL, ZIP_ER_READ); - free(buf); + cdir = _zip_find_central_dir(fp, flags, zep, len); + if (cdir == NULL) { fclose(fp); return NULL; } - - best = -2; - cdir = NULL; - match = buf; - while ((match=_zip_memmem(match, buflen-(match-buf)-18, - (const unsigned char *)EOCD_MAGIC, 4))!=NULL) { - /* found match -- check, if good */ - /* to avoid finding the same match all over again */ - match++; - if ((cdirnew=_zip_readcdir(fp, buf, match-1, buflen, flags, - &err2)) == NULL) { - if (best == -2) { - set_error(zep, &err2, 0); - best = -1; - } - continue; - } - if (cdir) { - if (best <= 0) - best = _zip_checkcons(fp, cdir, &err2); - a = _zip_checkcons(fp, cdirnew, &err2); - if (best < a) { - _zip_cdir_free(cdir); - cdir = cdirnew; - best = a; - } - else - _zip_cdir_free(cdirnew); - } - else { - cdir = cdirnew; - if (flags & ZIP_CHECKCONS) - best = _zip_checkcons(fp, cdir, &err2); - else - best = 0; - } - cdirnew = NULL; - } - - free(buf); - - if (best < 0) { - /* no consistent eocd found */ - if (best == -2) { - /* no eocd found at all */ - set_error(zep, NULL, ZIP_ER_NOZIP); - } - _zip_cdir_free(cdir); - fclose(fp); - return NULL; - } - - if ((za=_zip_new(&error)) == NULL) { - set_error(zep, &error, 0); + if ((za=_zip_allocate_new(fn, zep)) == NULL) { _zip_cdir_free(cdir); fclose(fp); return NULL; } - za->zp = fp; za->cdir = cdir; - - if ((za->zn=strdup(fn)) == NULL) { - set_error(zep, NULL, ZIP_ER_MEMORY); - _zip_free(za); - return NULL; - } + za->zp = fp; if ((za->entry=(struct zip_entry *)malloc(sizeof(*(za->entry)) * cdir->nentry)) == NULL) { @@ -216,6 +119,9 @@ zip_open(const char *fn, int flags, int *zep) for (i=0; inentry; i++) _zip_entry_new(za); + _zip_check_torrentzip(za); + za->ch_flags = za->flags; + return za; } @@ -295,13 +201,14 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen, return NULL; } - if (cd->comment_len) + if (cd->comment_len) { if ((cd->comment=(char *)_zip_memdup(eocd+EOCDLEN, cd->comment_len, error)) == NULL) { free(cd); return NULL; } + } cdp = eocd; if (cd->size < (unsigned int)(eocd-buf)) { @@ -313,8 +220,10 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen, /* go to start of cdir and read it entry by entry */ bufp = NULL; clearerr(fp); - fseek(fp, -(cd->size+cd->comment_len+EOCDLEN), SEEK_END); - if (ferror(fp) || ((unsigned int)ftell(fp) != cd->offset)) { + fseeko(fp, cd->offset, SEEK_SET); + /* possible consistency check: cd->offset = + len-(cd->size+cd->comment_len+EOCDLEN) ? */ + if (ferror(fp) || ((unsigned long)ftello(fp) != cd->offset)) { /* seek error or offset of cdir wrong */ if (ferror(fp)) _zip_error_set(error, ZIP_ER_SEEK, errno); @@ -376,7 +285,7 @@ _zip_checkcons(FILE *fp, struct zip_cdir *cd, struct zip_error *error) return -1; } - if (fseek(fp, cd->entry[i].offset, SEEK_SET) != 0) { + if (fseeko(fp, cd->entry[i].offset, SEEK_SET) != 0) { _zip_error_set(error, ZIP_ER_SEEK, 0); return -1; } @@ -385,7 +294,7 @@ _zip_checkcons(FILE *fp, struct zip_cdir *cd, struct zip_error *error) return -1; if (_zip_headercomp(cd->entry+i, 0, &temp, 1) != 0) { - _zip_error_set(error, ZIP_ER_NOZIP, 0); + _zip_error_set(error, ZIP_ER_INCONS, 0); _zip_dirent_finalize(&temp); return -1; } @@ -395,6 +304,41 @@ _zip_checkcons(FILE *fp, struct zip_cdir *cd, struct zip_error *error) return max - min; } + + +/* _zip_check_torrentzip: + check wether ZA has a valid TORRENTZIP comment, i.e. is torrentzipped */ + +static void +_zip_check_torrentzip(struct zip *za) +{ + uLong crc_got, crc_should; + char buf[8+1]; + char *end; + + if (za->zp == NULL || za->cdir == NULL) + return; + + if (za->cdir->comment_len != TORRENT_SIG_LEN+8 + || strncmp(za->cdir->comment, TORRENT_SIG, TORRENT_SIG_LEN) != 0) + return; + + memcpy(buf, za->cdir->comment+TORRENT_SIG_LEN, 8); + buf[8] = '\0'; + errno = 0; + crc_should = strtoul(buf, &end, 16); + if ((crc_should == UINT_MAX && errno != 0) || (end && *end)) + return; + + if (_zip_filerange_crc(za->zp, za->cdir->offset, za->cdir->size, + &crc_got, NULL) < 0) + return; + + if (crc_got == crc_should) + za->flags |= ZIP_AFL_TORRENT; +} + + /* _zip_headercomp: @@ -414,14 +358,32 @@ _zip_headercomp(struct zip_dirent *h1, int local1p, struct zip_dirent *h2, #endif || (h1->comp_method != h2->comp_method) || (h1->last_mod != h2->last_mod) - || (h1->crc != h2->crc) - || (h1->comp_size != h2->comp_size) - || (h1->uncomp_size != h2->uncomp_size) || (h1->filename_len != h2->filename_len) || !h1->filename || !h2->filename || strcmp(h1->filename, h2->filename)) return -1; + /* check that CRC and sizes are zero if data descriptor is used */ + if ((h1->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) && local1p + && (h1->crc != 0 + || h1->comp_size != 0 + || h1->uncomp_size != 0)) + return -1; + if ((h2->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) && local2p + && (h2->crc != 0 + || h2->comp_size != 0 + || h2->uncomp_size != 0)) + return -1; + + /* check that CRC and sizes are equal if no data descriptor is used */ + if (((h1->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) == 0 || local1p == 0) + && ((h2->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) == 0 || local2p == 0)) { + if ((h1->crc != h2->crc) + || (h1->comp_size != h2->comp_size) + || (h1->uncomp_size != h2->uncomp_size)) + return -1; + } + if ((local1p == local2p) && ((h1->extrafield_len != h2->extrafield_len) || (h1->extrafield_len && h2->extrafield @@ -448,6 +410,137 @@ _zip_headercomp(struct zip_dirent *h1, int local1p, struct zip_dirent *h2, +static struct zip * +_zip_allocate_new(const char *fn, int *zep) +{ + struct zip *za; + struct zip_error error; + + if ((za=_zip_new(&error)) == NULL) { + set_error(zep, &error, 0); + return NULL; + } + + za->zn = strdup(fn); + if (!za->zn) { + _zip_free(za); + set_error(zep, NULL, ZIP_ER_MEMORY); + return NULL; + } + return za; +} + + + +static int +_zip_file_exists(const char *fn, int flags, int *zep) +{ + struct stat st; + + if (fn == NULL) { + set_error(zep, NULL, ZIP_ER_INVAL); + return -1; + } + + if (stat(fn, &st) != 0) { + if (flags & ZIP_CREATE || flags & ZIP_OVERWRITE) + return 0; + else { + set_error(zep, NULL, ZIP_ER_OPEN); + return -1; + } + } + else if ((flags & ZIP_EXCL)) { + set_error(zep, NULL, ZIP_ER_EXISTS); + return -1; + } + /* ZIP_CREATE gets ignored if file exists and not ZIP_EXCL, + just like open() */ + + return 1; +} + + + +static struct zip_cdir * +_zip_find_central_dir(FILE *fp, int flags, int *zep, off_t len) +{ + struct zip_cdir *cdir, *cdirnew; + unsigned char *buf, *match; + int a, best, buflen, i; + struct zip_error zerr; + + i = fseeko(fp, -(len < CDBUFSIZE ? len : CDBUFSIZE), SEEK_END); + if (i == -1 && errno != EFBIG) { + /* seek before start of file on my machine */ + set_error(zep, NULL, ZIP_ER_SEEK); + return NULL; + } + + /* 64k is too much for stack */ + if ((buf=(unsigned char *)malloc(CDBUFSIZE)) == NULL) { + set_error(zep, NULL, ZIP_ER_MEMORY); + return NULL; + } + + clearerr(fp); + buflen = fread(buf, 1, CDBUFSIZE, fp); + + if (ferror(fp)) { + set_error(zep, NULL, ZIP_ER_READ); + free(buf); + return NULL; + } + + best = -1; + cdir = NULL; + match = buf; + _zip_error_set(&zerr, ZIP_ER_NOZIP, 0); + + while ((match=_zip_memmem(match, buflen-(match-buf)-18, + (const unsigned char *)EOCD_MAGIC, 4))!=NULL) { + /* found match -- check, if good */ + /* to avoid finding the same match all over again */ + match++; + if ((cdirnew=_zip_readcdir(fp, buf, match-1, buflen, flags, + &zerr)) == NULL) + continue; + + if (cdir) { + if (best <= 0) + best = _zip_checkcons(fp, cdir, &zerr); + a = _zip_checkcons(fp, cdirnew, &zerr); + if (best < a) { + _zip_cdir_free(cdir); + cdir = cdirnew; + best = a; + } + else + _zip_cdir_free(cdirnew); + } + else { + cdir = cdirnew; + if (flags & ZIP_CHECKCONS) + best = _zip_checkcons(fp, cdir, &zerr); + else + best = 0; + } + cdirnew = NULL; + } + + free(buf); + + if (best < 0) { + set_error(zep, &zerr, 0); + _zip_cdir_free(cdir); + return NULL; + } + + return cdir; +} + + + static unsigned char * _zip_memmem(const unsigned char *big, int biglen, const unsigned char *little, int littlelen) diff --git a/ext/zip/lib/zip_rename.c b/ext/zip/lib/zip_rename.c index 8141dc46a..e40ab2767 100644 --- a/ext/zip/lib/zip_rename.c +++ b/ext/zip/lib/zip_rename.c @@ -1,11 +1,9 @@ /* - $NiH: zip_rename.c,v 1.15 2004/11/30 22:19:38 wiz Exp $ - zip_rename.c -- rename file in zip archive - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,15 +33,30 @@ -#include "zip.h" +#include + #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_rename(struct zip *za, int idx, const char *name) { - if (idx >= za->nentry || idx < 0) { + const char *old_name; + int old_is_dir, new_is_dir; + + if (idx >= za->nentry || idx < 0 || name[0] == '\0') { + _zip_error_set(&za->error, ZIP_ER_INVAL, 0); + return -1; + } + + if ((old_name=zip_get_name(za, idx, 0)) == NULL) + return -1; + + new_is_dir = (name[strlen(name)-1] == '/'); + old_is_dir = (old_name[strlen(old_name)-1] == '/'); + + if (new_is_dir != old_is_dir) { _zip_error_set(&za->error, ZIP_ER_INVAL, 0); return -1; } diff --git a/ext/zip/lib/zip_replace.c b/ext/zip/lib/zip_replace.c index 12db005f2..ae69a86f6 100644 --- a/ext/zip/lib/zip_replace.c +++ b/ext/zip/lib/zip_replace.c @@ -1,11 +1,9 @@ /* - $NiH: zip_replace.c,v 1.20 2006/04/09 14:52:02 wiz Exp $ - zip_replace.c -- replace file via callback function - Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_replace(struct zip *za, int idx, struct zip_source *source) { if (idx < 0 || idx >= za->nentry || source == NULL) { @@ -57,23 +54,22 @@ zip_replace(struct zip *za, int idx, struct zip_source *source) -PHPZIPAPI int +int _zip_replace(struct zip *za, int idx, const char *name, struct zip_source *source) { - if (idx == -1) { - if (_zip_entry_new(za) == NULL) - return -1; - idx = za->nentry - 1; - } + if (idx == -1) { + if (_zip_entry_new(za) == NULL) + return -1; - + idx = za->nentry - 1; + } + _zip_unchange_data(za->entry+idx); if (name && _zip_set_name(za, idx, name) != 0) - return -1; - - + return -1; + za->entry[idx].state = ((za->cdir == NULL || idx >= za->cdir->nentry) ? ZIP_ST_ADDED : ZIP_ST_REPLACED); za->entry[idx].source = source; diff --git a/ext/zip/lib/zip_set_archive_comment.c b/ext/zip/lib/zip_set_archive_comment.c index 7649a80de..c4bd070dd 100644 --- a/ext/zip/lib/zip_set_archive_comment.c +++ b/ext/zip/lib/zip_set_archive_comment.c @@ -1,11 +1,9 @@ /* - $NiH: zip_set_archive_comment.c,v 1.3 2006/04/24 10:34:39 dillo Exp $ - zip_set_archive_comment.c -- set archive comment - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_set_archive_comment(struct zip *za, const char *comment, int len) { char *tmpcom; @@ -60,7 +57,7 @@ zip_set_archive_comment(struct zip *za, const char *comment, int len) else tmpcom = NULL; - if (za->ch_comment) free(za->ch_comment); + free(za->ch_comment); za->ch_comment = tmpcom; za->ch_comment_len = len; diff --git a/ext/zip/lib/zip_set_archive_flag.c b/ext/zip/lib/zip_set_archive_flag.c new file mode 100644 index 000000000..a6fdd8d2d --- /dev/null +++ b/ext/zip/lib/zip_set_archive_flag.c @@ -0,0 +1,49 @@ +/* + zip_get_archive_flag.c -- set archive global flag + Copyright (C) 2008 Dieter Baron and Thomas Klausner + + This file is part of libzip, a library to manipulate ZIP archives. + The authors can be contacted at + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + + +#include "zipint.h" + + + +ZIP_EXTERN(int) +zip_set_archive_flag(struct zip *za, int flag, int value) +{ + if (value) + za->ch_flags |= flag; + else + za->ch_flags &= ~flag; + + return 0; +} diff --git a/ext/zip/lib/zip_set_file_comment.c b/ext/zip/lib/zip_set_file_comment.c index 5454aa21d..3d5dd6b5e 100644 --- a/ext/zip/lib/zip_set_file_comment.c +++ b/ext/zip/lib/zip_set_file_comment.c @@ -1,11 +1,9 @@ /* - $NiH: zip_set_file_comment.c,v 1.4 2006/04/24 10:34:39 dillo Exp $ - zip_set_file_comment.c -- set comment for file in archive - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_set_file_comment(struct zip *za, int idx, const char *comment, int len) { char *tmpcom; diff --git a/ext/zip/lib/zip_set_name.c b/ext/zip/lib/zip_set_name.c index 8a401faac..5c7da3d7c 100644 --- a/ext/zip/lib/zip_set_name.c +++ b/ext/zip/lib/zip_set_name.c @@ -1,11 +1,9 @@ /* - $NiH: zip_set_name.c,v 1.16 2004/11/30 23:02:47 wiz Exp $ - zip_set_name.c -- rename helper function - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,12 @@ #include #include -#include "zip.h" + #include "zipint.h" -PHPZIPAPI int +int _zip_set_name(struct zip *za, int idx, const char *name) { char *s; diff --git a/ext/zip/lib/zip_source_buffer.c b/ext/zip/lib/zip_source_buffer.c index 95875b74c..867d3dfa3 100644 --- a/ext/zip/lib/zip_source_buffer.c +++ b/ext/zip/lib/zip_source_buffer.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_buffer.c,v 1.8 2006/04/23 14:50:49 wiz Exp $ - zip_source_buffer.c -- create zip data source from buffer - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,7 +36,6 @@ #include #include -#include "zip.h" #include "zipint.h" struct read_data { @@ -52,7 +49,7 @@ static ssize_t read_data(void *state, void *data, size_t len, -PHPZIPAPI struct zip_source * +ZIP_EXTERN(struct zip_source *) zip_source_buffer(struct zip *za, const void *data, off_t len, int freep) { struct read_data *f; @@ -84,6 +81,8 @@ zip_source_buffer(struct zip *za, const void *data, off_t len, int freep) return zs; } + + static ssize_t read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd) { @@ -103,8 +102,6 @@ read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd) n = z->end - z->buf; if (n > len) n = len; - if (n < 0) - n = 0; if (n) { memcpy(buf, z->buf, n); diff --git a/ext/zip/lib/zip_source_file.c b/ext/zip/lib/zip_source_file.c index 486e1900d..ab6466dcb 100644 --- a/ext/zip/lib/zip_source_file.c +++ b/ext/zip/lib/zip_source_file.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_file.c,v 1.2 2004/11/18 16:28:13 wiz Exp $ - zip_source_file.c -- create data source from file - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,17 +36,13 @@ #include #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI struct zip_source * +ZIP_EXTERN(struct zip_source *) zip_source_file(struct zip *za, const char *fname, off_t start, off_t len) { - struct zip_source *zs; - FILE *fp; - if (za == NULL) return NULL; @@ -57,19 +51,5 @@ zip_source_file(struct zip *za, const char *fname, off_t start, off_t len) return NULL; } - if ((fp=fopen(fname, "rb")) == NULL) { - _zip_error_set(&za->error, ZIP_ER_OPEN, errno); - return NULL; - } - -#ifdef PHP_WIN32 - _setmode(_fileno(fp), _O_BINARY ); -#endif - - if ((zs=zip_source_filep(za, fp, start, len)) == NULL) { - fclose(fp); - return NULL; - } - - return zs; + return _zip_source_file_or_p(za, fname, NULL, start, len); } diff --git a/ext/zip/lib/zip_source_filep.c b/ext/zip/lib/zip_source_filep.c index 8a3304265..2a06a9f02 100644 --- a/ext/zip/lib/zip_source_filep.c +++ b/ext/zip/lib/zip_source_filep.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_filep.c,v 1.6 2005/06/09 19:57:10 dillo Exp $ - zip_source_filep.c -- create data source from FILE * - Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -41,10 +39,10 @@ #include #include -#include "zip.h" #include "zipint.h" struct read_file { + char *fname; /* name of file to copy from */ FILE *f; /* file to copy from */ off_t off; /* start offset of */ off_t len; /* lengt of data to copy */ @@ -57,12 +55,9 @@ static ssize_t read_file(void *state, void *data, size_t len, -PHPZIPAPI struct zip_source * +ZIP_EXTERN(struct zip_source *) zip_source_filep(struct zip *za, FILE *file, off_t start, off_t len) { - struct read_file *f; - struct zip_source *zs; - if (za == NULL) return NULL; @@ -71,11 +66,36 @@ zip_source_filep(struct zip *za, FILE *file, off_t start, off_t len) return NULL; } + return _zip_source_file_or_p(za, NULL, file, start, len); +} + + + +struct zip_source * +_zip_source_file_or_p(struct zip *za, const char *fname, FILE *file, + off_t start, off_t len) +{ + struct read_file *f; + struct zip_source *zs; + + if (file == NULL && fname == NULL) { + _zip_error_set(&za->error, ZIP_ER_INVAL, 0); + return NULL; + } + if ((f=(struct read_file *)malloc(sizeof(struct read_file))) == NULL) { _zip_error_set(&za->error, ZIP_ER_MEMORY, 0); return NULL; } + f->fname = NULL; + if (fname) { + if ((f->fname=strdup(fname)) == NULL) { + _zip_error_set(&za->error, ZIP_ER_MEMORY, 0); + free(f); + return NULL; + } + } f->f = file; f->off = start; f->len = (len ? len : -1); @@ -102,6 +122,14 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd) switch (cmd) { case ZIP_SOURCE_OPEN: + if (z->fname) { + if ((z->f=fopen(z->fname, "rb")) == NULL) { + z->e[0] = ZIP_ER_OPEN; + z->e[1] = errno; + return -1; + } + } + if (fseeko(z->f, z->off, SEEK_SET) < 0) { z->e[0] = ZIP_ER_SEEK; z->e[1] = errno; @@ -128,17 +156,27 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd) return i; case ZIP_SOURCE_CLOSE: + if (z->fname) { + fclose(z->f); + z->f = NULL; + } return 0; case ZIP_SOURCE_STAT: { struct zip_stat *st; struct stat fst; + int err; if (len < sizeof(*st)) return -1; - if (fstat(fileno(z->f), &fst) != 0) { + if (z->f) + err = fstat(fileno(z->f), &fst); + else + err = stat(z->fname, &fst); + + if (err != 0) { z->e[0] = ZIP_ER_READ; /* best match */ z->e[1] = errno; return -1; @@ -164,6 +202,8 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd) return sizeof(int)*2; case ZIP_SOURCE_FREE: + free(z->fname); + if (z->f) fclose(z->f); free(z); return 0; diff --git a/ext/zip/lib/zip_source_free.c b/ext/zip/lib/zip_source_free.c index 707309c91..293e7f7e1 100644 --- a/ext/zip/lib/zip_source_free.c +++ b/ext/zip/lib/zip_source_free.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_free.c,v 1.2 2004/12/22 16:32:00 dillo Exp $ - zip_source_free.c -- free zip data source - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI void +ZIP_EXTERN(void) zip_source_free(struct zip_source *source) { if (source == NULL) diff --git a/ext/zip/lib/zip_source_function.c b/ext/zip/lib/zip_source_function.c index 4ab110924..fe3e82aa5 100644 --- a/ext/zip/lib/zip_source_function.c +++ b/ext/zip/lib/zip_source_function.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_function.c,v 1.4 2006/02/21 09:41:00 dillo Exp $ - zip_source_function.c -- create zip data source from callback function - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,12 +35,11 @@ #include -#include "zip.h" #include "zipint.h" -PHPZIPAPI struct zip_source * +ZIP_EXTERN(struct zip_source *) zip_source_function(struct zip *za, zip_source_callback zcb, void *ud) { struct zip_source *zs; diff --git a/ext/zip/lib/zip_source_zip.c b/ext/zip/lib/zip_source_zip.c index 75e656402..58119dd39 100644 --- a/ext/zip/lib/zip_source_zip.c +++ b/ext/zip/lib/zip_source_zip.c @@ -1,11 +1,9 @@ /* - $NiH: zip_source_zip.c,v 1.7 2006/02/21 09:41:00 dillo Exp $ - zip_source_zip.c -- create data source from zip file - Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,7 +36,6 @@ #include #include -#include "zip.h" #include "zipint.h" struct read_zip { @@ -52,7 +49,7 @@ static ssize_t read_zip(void *st, void *data, size_t len, -PHPZIPAPI struct zip_source * +ZIP_EXTERN(struct zip_source *) zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags, off_t start, off_t len) { @@ -60,6 +57,8 @@ zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags, struct zip_source *zs; struct read_zip *p; + /* XXX: ZIP_FL_RECOMPRESS */ + if (za == NULL) return NULL; @@ -77,7 +76,7 @@ zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags, if (len == 0) len = -1; - if (start == 0 && len == -1) + if (start == 0 && len == -1 && (flags & ZIP_FL_RECOMPRESS) == 0) flags |= ZIP_FL_COMPRESSED; else flags &= ~ZIP_FL_COMPRESSED; diff --git a/ext/zip/lib/zip_stat.c b/ext/zip/lib/zip_stat.c index 7c6cbf00d..c8a25e1d8 100644 --- a/ext/zip/lib/zip_stat.c +++ b/ext/zip/lib/zip_stat.c @@ -1,11 +1,9 @@ /* - $NiH: zip_stat.c,v 1.3 2004/04/16 09:40:30 dillo Exp $ - zip_stat.c -- get information about file by name - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_stat(struct zip *za, const char *fname, int flags, struct zip_stat *st) { int idx; diff --git a/ext/zip/lib/zip_stat_index.c b/ext/zip/lib/zip_stat_index.c index cf55565ef..26425206c 100644 --- a/ext/zip/lib/zip_stat_index.c +++ b/ext/zip/lib/zip_stat_index.c @@ -1,11 +1,9 @@ /* - $NiH: zip_stat_index.c,v 1.10 2006/04/24 14:04:19 dillo Exp $ - zip_stat_index.c -- get information about file by index - Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,11 @@ -#include "zip.h" #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st) { const char *name; @@ -67,7 +64,7 @@ zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st) _zip_error_set(&za->error, ZIP_ER_INVAL, 0); return -1; } - + st->crc = za->cdir->entry[index].crc; st->size = za->cdir->entry[index].uncomp_size; st->mtime = za->cdir->entry[index].last_mod; diff --git a/ext/zip/lib/zip_stat_init.c b/ext/zip/lib/zip_stat_init.c index e9c056dfc..cb451dc3b 100644 --- a/ext/zip/lib/zip_stat_init.c +++ b/ext/zip/lib/zip_stat_init.c @@ -1,11 +1,9 @@ /* - $NiH: zip_stat_init.c,v 1.1 2006/10/31 12:03:04 dillo Exp $ - zip_stat_init.c -- initialize struct zip_stat. - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -39,7 +37,7 @@ -PHPZIPAPI void +ZIP_EXTERN(void) zip_stat_init(struct zip_stat *st) { st->name = NULL; diff --git a/ext/zip/lib/zip_strerror.c b/ext/zip/lib/zip_strerror.c index f3e5aa9fe..ad23bafed 100644 --- a/ext/zip/lib/zip_strerror.c +++ b/ext/zip/lib/zip_strerror.c @@ -1,11 +1,9 @@ /* - $NiH: zip_strerror.c,v 1.1 2003/10/05 16:05:22 dillo Exp $ - zip_sterror.c -- get string representation of zip error - Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -35,12 +33,10 @@ -#include "zip.h" #include "zipint.h" - -PHPZIPAPI const char * +ZIP_EXTERN(const char *) zip_strerror(struct zip *za) { return _zip_error_strerror(&za->error); diff --git a/ext/zip/lib/zip_unchange.c b/ext/zip/lib/zip_unchange.c index 80070e7a3..7366c9cc7 100644 --- a/ext/zip/lib/zip_unchange.c +++ b/ext/zip/lib/zip_unchange.c @@ -1,11 +1,9 @@ /* - $NiH: zip_unchange.c,v 1.19 2006/04/23 13:21:18 wiz Exp $ - zip_unchange.c -- undo changes to file in zip archive - Copyright (C) 1999, 2004, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,12 +34,12 @@ #include -#include "zip.h" + #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_unchange(struct zip *za, int idx) { return _zip_unchange(za, idx, 0); @@ -49,7 +47,7 @@ zip_unchange(struct zip *za, int idx) -PHPZIPAPI int +int _zip_unchange(struct zip *za, int idx, int allow_duplicates) { int i; diff --git a/ext/zip/lib/zip_unchange_all.c b/ext/zip/lib/zip_unchange_all.c index 2d4459c82..01282f89d 100644 --- a/ext/zip/lib/zip_unchange_all.c +++ b/ext/zip/lib/zip_unchange_all.c @@ -1,11 +1,9 @@ /* - $NiH: zip_unchange_all.c,v 1.10 2006/04/23 13:14:46 wiz Exp $ - zip_unchange.c -- undo changes to all files in zip archive - Copyright (C) 1999, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,12 +34,12 @@ #include -#include "zip.h" + #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_unchange_all(struct zip *za) { int ret, i; @@ -49,7 +47,7 @@ zip_unchange_all(struct zip *za) ret = 0; for (i=0; inentry; i++) ret |= _zip_unchange(za, i, 1); - + ret |= zip_unchange_archive(za); return ret; diff --git a/ext/zip/lib/zip_unchange_archive.c b/ext/zip/lib/zip_unchange_archive.c index 6c2bc6dcb..fe30a5ad2 100644 --- a/ext/zip/lib/zip_unchange_archive.c +++ b/ext/zip/lib/zip_unchange_archive.c @@ -1,11 +1,9 @@ /* - $NiH: zip_unchange_archive.c,v 1.1 2006/04/23 13:14:46 wiz Exp $ - zip_unchange_archive.c -- undo global changes to ZIP archive - Copyright (C) 2006 Dieter Baron and Thomas Klausner + Copyright (C) 2006-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -36,17 +34,19 @@ #include -#include "zip.h" + #include "zipint.h" -PHPZIPAPI int +ZIP_EXTERN(int) zip_unchange_archive(struct zip *za) { free(za->ch_comment); za->ch_comment = NULL; za->ch_comment_len = -1; + za->ch_flags = za->flags; + return 0; } diff --git a/ext/zip/lib/zip_unchange_data.c b/ext/zip/lib/zip_unchange_data.c index dfa2ea545..6fe89f4fb 100644 --- a/ext/zip/lib/zip_unchange_data.c +++ b/ext/zip/lib/zip_unchange_data.c @@ -1,11 +1,11 @@ /* - $NiH: zip_unchange_data.c,v 1.15 2004/12/22 16:32:00 dillo Exp $ + $NiH: zip_unchange_data.c,v 1.14 2004/11/30 23:02:47 wiz Exp $ zip_unchange_data.c -- undo helper function Copyright (C) 1999, 2004 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -39,7 +39,7 @@ #include "zipint.h" -PHPZIPAPI void +void _zip_unchange_data(struct zip_entry *ze) { if (ze->source) { diff --git a/ext/zip/lib/zip_win32.h b/ext/zip/lib/zip_win32.h index ea3860d60..ff28d2878 100644 --- a/ext/zip/lib/zip_win32.h +++ b/ext/zip/lib/zip_win32.h @@ -2,16 +2,25 @@ #include #include #include +#include +#include + +#ifndef strcasecmp +# define strcmpi _strcmpi +#endif #ifndef ssize_t # define ssize_t SSIZE_T #endif + #ifndef mode_t # define mode_t int #endif + #ifndef snprintf # define snprintf _snprintf #endif + #ifndef mkstemp # define mkstemp(t) _creat(_mktemp(t), _S_IREAD|_S_IWRITE) #endif diff --git a/ext/zip/lib/zipint.h b/ext/zip/lib/zipint.h index 33632aca4..e7e35e4dd 100644 --- a/ext/zip/lib/zipint.h +++ b/ext/zip/lib/zipint.h @@ -2,13 +2,11 @@ #define _HAD_ZIPINT_H /* - $NiH: zipint.h,v 1.48 2006/04/24 14:04:19 dillo Exp $ - zipint.h -- internal declarations. - Copyright (C) 1999, 2003, 2004, 2005, 2006 Dieter Baron and Thomas Klausner + Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner This file is part of libzip, a library to manipulate ZIP archives. - The authors can be contacted at + The authors can be contacted at Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -22,7 +20,7 @@ 3. The names of the authors may not be used to endorse or promote products derived from this software without specific prior written permission. - + THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -39,20 +37,41 @@ #include #include "zip.h" -/* #defines that rename all zip_ functions and structs */ -#include "zipint_alias.h" -BEGIN_EXTERN_C() +#ifdef PHP_WIN32 +#include +#include +#define _zip_rename(s, t) \ + (!MoveFileExA((s), (t), \ + MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING)) +#else +#define _zip_rename rename +#endif + +#ifndef strcasecmp +# define strcmpi strcasecmp +#endif + #ifndef HAVE_FSEEKO #define fseeko(s, o, w) (fseek((s), (long int)(o), (w))) #endif +#ifndef HAVE_FTELLO +#define ftello(s) ((long)ftell((s))) +#endif + + #define CENTRAL_MAGIC "PK\1\2" #define LOCAL_MAGIC "PK\3\4" #define EOCD_MAGIC "PK\5\6" #define DATADES_MAGIC "PK\7\8" +#define TORRENT_SIG "TORRENTZIPPED-" +#define TORRENT_SIG_LEN 14 +#define TORRENT_CRC_LEN 8 +#define TORRENT_MEM_LEVEL 8 #define CDENTRYSIZE 46u #define LENTRYSIZE 30 +#undef MAXCOMLEN /* defined as 19 on BSD for max command name */ #define MAXCOMLEN 65536 #define EOCDLEN 22 #define CDBUFSIZE (MAXCOMLEN+EOCDLEN) @@ -74,8 +93,8 @@ enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED, /* directory entry: general purpose bit flags */ #define ZIP_GPBF_ENCRYPTED 0x0001 /* is encrypted */ +#define ZIP_GPBF_DATA_DESCRIPTOR 0x0008 /* crc/size after file data */ #define ZIP_GPBF_STRONG_ENCRYPTION 0x0040 /* uses strong encryption */ -#define ZIP_GPBF_USE_DATA_DESCRIPTOR 0x0008 /* uses crc and size from data header */ /* error information */ @@ -92,6 +111,9 @@ struct zip { FILE *zp; /* file */ struct zip_error error; /* error information */ + unsigned int flags; /* archive global flags */ + unsigned int ch_flags; /* changed archive global flags */ + struct zip_cdir *cdir; /* central directory */ char *ch_comment; /* changed archive comment */ int ch_comment_len; /* length of changed zip archive @@ -112,13 +134,13 @@ struct zip_file { int flags; /* -1: eof, >0: error */ int method; /* compression method */ - long fpos; /* position within zip file (fread/fwrite) */ + off_t fpos; /* position within zip file (fread/fwrite) */ unsigned long bytes_left; /* number of bytes left to read */ unsigned long cbytes_left; /* number of bytes of compressed data left */ - + unsigned long crc; /* CRC so far */ unsigned long crc_orig; /* CRC recorded in archive */ - + char *buffer; z_stream *zstr; }; @@ -189,43 +211,49 @@ extern const int _zip_err_type[]; -PHPZIPAPI void _zip_cdir_free(struct zip_cdir *); -PHPZIPAPI struct zip_cdir *_zip_cdir_new(int, struct zip_error *); -PHPZIPAPI int _zip_cdir_write(struct zip_cdir *, FILE *, struct zip_error *); +int _zip_cdir_compute_crc(struct zip *, uLong *); +void _zip_cdir_free(struct zip_cdir *); +struct zip_cdir *_zip_cdir_new(int, struct zip_error *); +int _zip_cdir_write(struct zip_cdir *, FILE *, struct zip_error *); -PHPZIPAPI void _zip_dirent_finalize(struct zip_dirent *); -PHPZIPAPI void _zip_dirent_init(struct zip_dirent *); -PHPZIPAPI int _zip_dirent_read(struct zip_dirent *, FILE *, +void _zip_dirent_finalize(struct zip_dirent *); +void _zip_dirent_init(struct zip_dirent *); +int _zip_dirent_read(struct zip_dirent *, FILE *, unsigned char **, unsigned int, int, struct zip_error *); -PHPZIPAPI int _zip_dirent_write(struct zip_dirent *, FILE *, int, struct zip_error *); - -PHPZIPAPI void _zip_entry_free(struct zip_entry *); -PHPZIPAPI void _zip_entry_init(struct zip *, int); -PHPZIPAPI struct zip_entry *_zip_entry_new(struct zip *); - -PHPZIPAPI void _zip_error_clear(struct zip_error *); -PHPZIPAPI void _zip_error_copy(struct zip_error *, struct zip_error *); -PHPZIPAPI void _zip_error_fini(struct zip_error *); -PHPZIPAPI void _zip_error_get(struct zip_error *, int *, int *); -PHPZIPAPI void _zip_error_init(struct zip_error *); -PHPZIPAPI void _zip_error_set(struct zip_error *, int, int); -PHPZIPAPI const char *_zip_error_strerror(struct zip_error *); - -PHPZIPAPI int _zip_file_fillbuf(void *, size_t, struct zip_file *); -PHPZIPAPI unsigned int _zip_file_get_offset(struct zip *, int); - -PHPZIPAPI void _zip_free(struct zip *); -PHPZIPAPI const char *_zip_get_name(struct zip *, int, int, struct zip_error *); -PHPZIPAPI int _zip_local_header_read(struct zip *, int); -PHPZIPAPI void *_zip_memdup(const void *, size_t, struct zip_error *); -PHPZIPAPI int _zip_name_locate(struct zip *, const char *, int, struct zip_error *); -PHPZIPAPI struct zip *_zip_new(struct zip_error *); -PHPZIPAPI unsigned short _zip_read2(unsigned char **); -PHPZIPAPI unsigned int _zip_read4(unsigned char **); -PHPZIPAPI int _zip_replace(struct zip *, int, const char *, struct zip_source *); -PHPZIPAPI int _zip_set_name(struct zip *, int, const char *); -PHPZIPAPI int _zip_unchange(struct zip *, int, int); -PHPZIPAPI void _zip_unchange_data(struct zip_entry *); - -END_EXTERN_C(); +void _zip_dirent_torrent_normalize(struct zip_dirent *); +int _zip_dirent_write(struct zip_dirent *, FILE *, int, struct zip_error *); + +void _zip_entry_free(struct zip_entry *); +void _zip_entry_init(struct zip *, int); +struct zip_entry *_zip_entry_new(struct zip *); + +void _zip_error_clear(struct zip_error *); +void _zip_error_copy(struct zip_error *, struct zip_error *); +void _zip_error_fini(struct zip_error *); +void _zip_error_get(struct zip_error *, int *, int *); +void _zip_error_init(struct zip_error *); +void _zip_error_set(struct zip_error *, int, int); +const char *_zip_error_strerror(struct zip_error *); + +int _zip_file_fillbuf(void *, size_t, struct zip_file *); +unsigned int _zip_file_get_offset(struct zip *, int); + +int _zip_filerange_crc(FILE *, off_t, off_t, uLong *, struct zip_error *); + +struct zip_source *_zip_source_file_or_p(struct zip *, const char *, FILE *, + off_t, off_t); + +void _zip_free(struct zip *); +const char *_zip_get_name(struct zip *, int, int, struct zip_error *); +int _zip_local_header_read(struct zip *, int); +void *_zip_memdup(const void *, size_t, struct zip_error *); +int _zip_name_locate(struct zip *, const char *, int, struct zip_error *); +struct zip *_zip_new(struct zip_error *); +unsigned short _zip_read2(unsigned char **); +unsigned int _zip_read4(unsigned char **); +int _zip_replace(struct zip *, int, const char *, struct zip_source *); +int _zip_set_name(struct zip *, int, const char *); +int _zip_unchange(struct zip *, int, int); +void _zip_unchange_data(struct zip_entry *); + #endif /* zipint.h */ diff --git a/ext/zip/lib/zipint_alias.h b/ext/zip/lib/zipint_alias.h deleted file mode 100644 index e8541b36e..000000000 --- a/ext/zip/lib/zipint_alias.h +++ /dev/null @@ -1,49 +0,0 @@ - -/* state of change of a file in zip archive */ -#define zip_state php_ziplib__zip_state -#define zip_error php_ziplib__zip_error -#define zip_dirent php_ziplib__zip_dirent -#define zip_cdir php_ziplib__zip_cdir -#define zip_source php_ziplib__zip_source -#define zip_entry php_ziplib__zip_entry - -#define _zip_err_str php_ziplib___zip_err_str -#define _zip_nerr_str php_ziplib___zip_nerr_str -#define _zip_err_type php_ziplib___zip_err_type - -#define _zip_cdir_free php_ziplib___zip_cdir_free -#define _zip_cdir_new php_ziplib___zip_cdir_new -#define _zip_cdir_write php_ziplib___zip_cdir_write - -#define _zip_dirent_finalize php_ziplib___zip_dirent_finalize -#define _zip_dirent_init php_ziplib___zip_dirent_init -#define _zip_dirent_read php_ziplib___zip_dirent_read -#define _zip_dirent_write php_ziplib___zip_dirent_write - -#define _zip_entry_free php_ziplib___zip_entry_free -#define _zip_entry_init php_ziplib___zip_entry_init -#define _zip_entry_new php_ziplib___zip_entry_new - -#define _zip_error_clear php_ziplib___zip_error_clear -#define _zip_error_copy php_ziplib___zip_error_copy -#define _zip_error_fini php_ziplib___zip_error_fini -#define _zip_error_get php_ziplib___zip_error_get -#define _zip_error_init php_ziplib___zip_error_init -#define _zip_error_set php_ziplib___zip_error_set -#define _zip_error_strerror php_ziplib___zip_error_strerror - -#define _zip_file_fillbuf php_ziplib___zip_file_fillbuf -#define _zip_file_get_offset php_ziplib___zip_file_get_offset - -#define _zip_free php_ziplib___zip_free -#define _zip_get_name php_ziplib___zip_get_name -#define _zip_local_header_read php_ziplib___zip_local_header_read -#define _zip_memdup php_ziplib___zip_memdup -#define _zip_name_locate php_ziplib___zip_name_locate -#define _zip_new php_ziplib___zip_new -#define _zip_read2 php_ziplib___zip_read2 -#define _zip_read4 php_ziplib___zip_read4 -#define _zip_replace php_ziplib___zip_replace -#define _zip_set_name php_ziplib___zip_set_name -#define _zip_unchange php_ziplib___zip_unchange -#define _zip_unchange_data php_ziplib___zip_unchange_data diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index b066a211c..de2a3d090 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -12,11 +12,11 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Author: Piere-Alain Joye | +----------------------------------------------------------------------+ */ -/* $Id: php_zip.c,v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp $ */ +/* $Id: php_zip.c,v 1.1.2.49 2009/02/05 19:53:22 pajoye Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -31,6 +31,10 @@ #include "lib/zip.h" #include "lib/zipint.h" +#ifdef PHP_WIN32 +#include "tsrm_virtual_cwd.h" +#endif + /* zip_open is a macro for renaming libzip zipopen, so we need to use PHP_NAMED_FUNCTION */ static PHP_NAMED_FUNCTION(zif_zip_open); static PHP_NAMED_FUNCTION(zif_zip_read); @@ -79,81 +83,429 @@ static int le_zip_entry; RETURN_FALSE; \ } \ RETURN_TRUE; +/* }}} */ + +#if (PHP_MAJOR_VERSION < 6) +# define add_ascii_assoc_string add_assoc_string +# define add_ascii_assoc_long add_assoc_long +#endif + +static int php_zip_realpath_r(char *path, int start, int len, int *ll, time_t *t, int use_realpath, int is_dir, int *link_is_dir TSRMLS_DC) /* {{{ */ +{ + int i, j; + char *tmp; + + while (1) { + if (len <= start) { + return start; + } + + i = len; + while (i > start && !IS_SLASH(path[i-1])) { + i--; + } + + if (i == len || + (i == len - 1 && path[i] == '.')) { + /* remove double slashes and '.' */ + len = i - 1; + is_dir = 1; + continue; + } else if (i == len - 2 && path[i] == '.' && path[i+1] == '.') { + /* remove '..' and previous directory */ + if (i - 1 <= start) { + return start ? start : len; + } + j = php_zip_realpath_r(path, start, i-1, ll, t, use_realpath, 1, NULL TSRMLS_CC); + if (j > start) { + j--; + while (j > start && !IS_SLASH(path[j])) { + j--; + } + if (!start) { + /* leading '..' must not be removed in case of relative path */ + if (j == 0 && path[0] == '.' && path[1] == '.' && + IS_SLASH(path[2])) { + path[3] = '.'; + path[4] = '.'; + path[5] = DEFAULT_SLASH; + j = 5; + } else if (j > 0 && + path[j+1] == '.' && path[j+2] == '.' && + IS_SLASH(path[j+3])) { + j += 4; + path[j++] = '.'; + path[j++] = '.'; + path[j] = DEFAULT_SLASH; + } + } + } else if (!start && !j) { + /* leading '..' must not be removed in case of relative path */ + path[0] = '.'; + path[1] = '.'; + path[2] = DEFAULT_SLASH; + j = 2; + } + return j; + } + + path[len] = 0; + +#ifdef PHP_WIN32 + tmp = tsrm_do_alloca(len+1); + memcpy(tmp, path, len+1); +#elif defined(NETWARE) + + tmp = tsrm_do_alloca(len+1); + memcpy(tmp, path, len+1); +#else + tmp = tsrm_do_alloca(len+1); + memcpy(tmp, path, len+1); + + { +#endif + if (i - 1 <= start) { + j = start; + } else { + /* some leading directories may be unaccessable */ + j = php_zip_realpath_r(path, start, i-1, ll, t, use_realpath, 1, NULL TSRMLS_CC); + if (j > start) { + path[j++] = DEFAULT_SLASH; + } + } +#ifdef PHP_WIN32 + if (j < 0 || j + len - i >= MAXPATHLEN-1) { + tsrm_free_alloca(tmp); + + return -1; + } + { + /* use the original file or directory name as it wasn't found */ + memcpy(path+j, tmp+i, len-i+1); + j += (len-i); + } +#else + if (j < 0 || j + len - i >= MAXPATHLEN-1) { + tsrm_free_alloca(tmp); + return -1; + } + memcpy(path+j, tmp+i, len-i+1); + j += (len-i); + } +#endif + + tsrm_free_alloca(tmp); + return j; + } +} +/* }}} */ + +#define CWD_STATE_FREE(s) \ + free((s)->cwd); + + +#define CWD_STATE_COPY(d, s) \ + (d)->cwd_length = (s)->cwd_length; \ + (d)->cwd = (char *) malloc((s)->cwd_length+1); \ + memcpy((d)->cwd, (s)->cwd, (s)->cwd_length+1); + +#ifdef PHP_WIN32 +extern virtual_cwd_globals cwd_globals; +#endif + +/* Resolve path relatively to state and put the real path into state */ +/* returns 0 for ok, 1 for error */ +int php_zip_virtual_file_ex(cwd_state *state, const char *path, int use_realpath) /* {{{ */ +{ + int path_length = strlen(path); + char resolved_path[MAXPATHLEN]; + int start = 1; + int ll = 0; + time_t t; + int ret; + int add_slash; + TSRMLS_FETCH(); + + if (path_length == 0 || path_length >= MAXPATHLEN-1) { + return 1; + } + + /* cwd_length can be 0 when getcwd() fails. + * This can happen under solaris when a dir does not have read permissions + * but *does* have execute permissions */ + if (!IS_ABSOLUTE_PATH(path, path_length)) { + if (state->cwd_length == 0) { + /* resolve relative path */ + start = 0; + memcpy(resolved_path , path, path_length + 1); + } else { + int state_cwd_length = state->cwd_length; + +#ifdef PHP_WIN32 + if (IS_SLASH(path[0])) { + if (state->cwd[1] == ':') { + /* Copy only the drive name */ + state_cwd_length = 2; + } else if (IS_UNC_PATH(state->cwd, state->cwd_length)) { + /* Copy only the share name */ + state_cwd_length = 2; + while (IS_SLASH(state->cwd[state_cwd_length])) { + state_cwd_length++; + } + while (state->cwd[state_cwd_length] && + !IS_SLASH(state->cwd[state_cwd_length])) { + state_cwd_length++; + } + while (IS_SLASH(state->cwd[state_cwd_length])) { + state_cwd_length++; + } + while (state->cwd[state_cwd_length] && + !IS_SLASH(state->cwd[state_cwd_length])) { + state_cwd_length++; + } + } + } +#endif + if (path_length + state_cwd_length + 1 >= MAXPATHLEN-1) { + return 1; + } + memcpy(resolved_path, state->cwd, state_cwd_length); + resolved_path[state_cwd_length] = DEFAULT_SLASH; + memcpy(resolved_path + state_cwd_length + 1, path, path_length + 1); + path_length += state_cwd_length + 1; + } + } else { +#ifdef PHP_WIN32 + if (path_length > 2 && path[1] == ':' && !IS_SLASH(path[2])) { + resolved_path[0] = path[0]; + resolved_path[1] = ':'; + resolved_path[2] = DEFAULT_SLASH; + memcpy(resolved_path + 3, path + 2, path_length - 1); + path_length++; + } else +#endif + memcpy(resolved_path, path, path_length + 1); + } + +#ifdef PHP_WIN32 + if (memchr(resolved_path, '*', path_length) || + memchr(resolved_path, '?', path_length)) { + return 1; + } +#endif + +#ifdef PHP_WIN32 + if (IS_UNC_PATH(resolved_path, path_length)) { + /* skip UNC name */ + resolved_path[0] = DEFAULT_SLASH; + resolved_path[1] = DEFAULT_SLASH; + start = 2; + while (!IS_SLASH(resolved_path[start])) { + if (resolved_path[start] == 0) { + goto verify; + } + resolved_path[start] = toupper(resolved_path[start]); + start++; + } + resolved_path[start++] = DEFAULT_SLASH; + while (!IS_SLASH(resolved_path[start])) { + if (resolved_path[start] == 0) { + goto verify; + } + resolved_path[start] = toupper(resolved_path[start]); + start++; + } + resolved_path[start++] = DEFAULT_SLASH; + } else if (IS_ABSOLUTE_PATH(resolved_path, path_length)) { + /* skip DRIVE name */ + resolved_path[0] = toupper(resolved_path[0]); + resolved_path[2] = DEFAULT_SLASH; + start = 3; + } +#elif defined(NETWARE) + if (IS_ABSOLUTE_PATH(resolved_path, path_length)) { + /* skip VOLUME name */ + start = 0; + while (start != ':') { + if (resolved_path[start] == 0) return -1; + start++; + } + start++; + if (!IS_SLASH(resolved_path[start])) return -1; + resolved_path[start++] = DEFAULT_SLASH; + } +#endif + + add_slash = (use_realpath != CWD_REALPATH) && path_length > 0 && IS_SLASH(resolved_path[path_length-1]); + /* No cache used */ + t = 0; + path_length = php_zip_realpath_r(resolved_path, start, path_length, &ll, &t, use_realpath, 0, NULL TSRMLS_CC); + + if (path_length < 0) { + errno = ENOENT; + return 1; + } + + if (!start && !path_length) { + resolved_path[path_length++] = '.'; + } + if (add_slash && path_length && !IS_SLASH(resolved_path[path_length-1])) { + if (path_length >= MAXPATHLEN-1) { + return -1; + } + resolved_path[path_length++] = DEFAULT_SLASH; + } + resolved_path[path_length] = 0; + +#ifdef PHP_WIN32 +verify: +#endif + state->cwd_length = path_length; + state->cwd = (char *) realloc(state->cwd, state->cwd_length+1); + memcpy(state->cwd, resolved_path, state->cwd_length+1); + ret = 0; + return (ret); +} +/* }}} */ + +/* Flatten a path by creating a relative path (to .) */ +static char * php_zip_make_relative_path(char *path, int path_len) /* {{{ */ +{ + char *path_begin = path; + size_t i; + + if (IS_SLASH(path[0])) { + return path + 1; + } + + if (path_len < 1 || path == NULL) { + return NULL; + } + + i = path_len; + + while (1) { + while (i > 0 && !IS_SLASH(path[i])) { + i--; + } + + if (!i) { + return path; + } + + if (i >= 2 && (path[i -1] == '.' || path[i -1] == ':')) { + /* i is the position of . or :, add 1 for / */ + path_begin = path + i + 1; + break; + } + i--; + } + return path_begin; +} /* }}} */ /* {{{ php_zip_extract_file */ -/* TODO: Simplify it */ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int file_len TSRMLS_DC) { php_stream_statbuf ssb; struct zip_file *zf; struct zip_stat sb; char b[8192]; - int n, len, ret; - php_stream *stream; - char *fullpath; char *file_dirname_fullpath; char file_dirname[MAXPATHLEN]; size_t dir_len; - char *file_basename; size_t file_basename_len; int is_dir_only = 0; + char *path_cleaned; + size_t path_cleaned_len; + cwd_state new_state; - if (file_len >= MAXPATHLEN || zip_stat(za, file, 0, &sb) != 0) { + new_state.cwd = (char*)malloc(1); + new_state.cwd[0] = '\0'; + new_state.cwd_length = 0; + + /* Clean/normlize the path and then transform any path (absolute or relative) + to a path relative to cwd (../../mydir/foo.txt > mydir/foo.txt) + */ + if (php_zip_virtual_file_ex(&new_state, file, CWD_EXPAND) == 1) { return 0; } + path_cleaned = php_zip_make_relative_path(new_state.cwd, new_state.cwd_length); + path_cleaned_len = strlen(path_cleaned); - if (file_len > 1 && file[file_len - 1] == '/') { + if (path_cleaned_len >= MAXPATHLEN || zip_stat(za, file, 0, &sb) != 0) { + return 0; + } + + /* it is a directory only, see #40228 */ + if (path_cleaned_len > 1 && IS_SLASH(path_cleaned[path_cleaned_len - 1])) { len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, file); is_dir_only = 1; } else { - memcpy(file_dirname, file, file_len); - dir_len = php_dirname(file_dirname, file_len); + memcpy(file_dirname, path_cleaned, path_cleaned_len); + dir_len = php_dirname(file_dirname, path_cleaned_len); - if (dir_len > 0) { - len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, file_dirname); - } else { + if (dir_len <= 0 || (dir_len == 1 && file_dirname[0] == '.')) { len = spprintf(&file_dirname_fullpath, 0, "%s", dest); + } else { + len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, file_dirname); } - php_basename(file, file_len, NULL, 0, &file_basename, (size_t *)&file_basename_len TSRMLS_CC); + php_basename(path_cleaned, path_cleaned_len, NULL, 0, &file_basename, (unsigned int *)&file_basename_len TSRMLS_CC); if (OPENBASEDIR_CHECKPATH(file_dirname_fullpath)) { efree(file_dirname_fullpath); efree(file_basename); + free(new_state.cwd); return 0; } } /* let see if the path already exists */ if (php_stream_stat_path(file_dirname_fullpath, &ssb) < 0) { - ret = php_stream_mkdir(file_dirname_fullpath, 0777, PHP_STREAM_MKDIR_RECURSIVE, NULL); + +#if defined(PHP_WIN32) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1) + char *e; + e = file_dirname_fullpath; + while (*e) { + if (*e == '/') { + *e = DEFAULT_SLASH; + } + e++; + } +#endif + + ret = php_stream_mkdir(file_dirname_fullpath, 0777, PHP_STREAM_MKDIR_RECURSIVE|REPORT_ERRORS, NULL); if (!ret) { efree(file_dirname_fullpath); + if (!is_dir_only) { efree(file_basename); + free(new_state.cwd); + } return 0; } } /* it is a standalone directory, job done */ - if (file[file_len - 1] == '/') { + if (is_dir_only) { efree(file_dirname_fullpath); - if (!is_dir_only) { - efree(file_basename); - } + free(new_state.cwd); return 1; } - len = spprintf(&fullpath, 0, "%s/%s/%s", dest, file_dirname, file_basename); + len = spprintf(&fullpath, 0, "%s/%s", file_dirname_fullpath, file_basename); if (!len) { efree(file_dirname_fullpath); efree(file_basename); + free(new_state.cwd); return 0; + } else if (len > MAXPATHLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Full extraction path exceed MAXPATHLEN (%i)", MAXPATHLEN); } /* check again the full path, not sure if it @@ -164,6 +516,7 @@ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int fil efree(fullpath); efree(file_dirname_fullpath); efree(file_basename); + free(new_state.cwd); return 0; } @@ -172,10 +525,15 @@ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int fil efree(fullpath); efree(file_dirname_fullpath); efree(file_basename); + free(new_state.cwd); return 0; } +#if (PHP_MAJOR_VERSION < 6) stream = php_stream_open_wrapper(fullpath, "w+b", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL); +#else + stream = php_stream_open_wrapper(fullpath, "w+b", REPORT_ERRORS, NULL); +#endif n = 0; if (stream) { while ((n=zip_fread(zf, b, sizeof(b))) > 0) php_stream_write(stream, b, n); @@ -186,6 +544,7 @@ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int fil efree(fullpath); efree(file_basename); efree(file_dirname_fullpath); + free(new_state.cwd); if (n<0) { return 0; @@ -195,6 +554,111 @@ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int fil } /* }}} */ +static int php_zip_add_file(struct zip *za, const char *filename, int filename_len, + char *entry_name, int entry_name_len, long offset_start, long offset_len TSRMLS_DC) /* {{{ */ +{ + struct zip_source *zs; + int cur_idx; + char resolved_path[MAXPATHLEN]; + + + if (OPENBASEDIR_CHECKPATH(filename)) { + return -1; + } + + if (!expand_filepath(filename, resolved_path TSRMLS_CC)) { + return -1; + } + + zs = zip_source_file(za, resolved_path, offset_start, offset_len); + if (!zs) { + return -1; + } + + cur_idx = zip_name_locate(za, (const char *)entry_name, 0); + /* TODO: fix _zip_replace */ + if (cur_idx<0) { + /* reset the error */ + if (za->error.str) { + _zip_error_fini(&za->error); + } + _zip_error_init(&za->error); + } else { + if (zip_delete(za, cur_idx) == -1) { + zip_source_free(zs); + return -1; + } + } + + if (zip_add(za, entry_name, zs) == -1) { + return -1; + } else { + return 1; + } +} +/* }}} */ + +static int php_zip_parse_options(zval *options, long *remove_all_path, + char **remove_path, int *remove_path_len, char **add_path, int *add_path_len TSRMLS_DC) /* {{{ */ +{ + zval **option; + if (zend_hash_find(HASH_OF(options), "remove_all_path", sizeof("remove_all_path"), (void **)&option) == SUCCESS) { + long opt; + if (Z_TYPE_PP(option) != IS_LONG) { + zval tmp = **option; + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + opt = Z_LVAL(tmp); + } else { + opt = Z_LVAL_PP(option); + } + *remove_all_path = opt; + } + + /* If I add more options, it would make sense to create a nice static struct and loop over it. */ + if (zend_hash_find(HASH_OF(options), "remove_path", sizeof("remove_path"), (void **)&option) == SUCCESS) { + if (Z_TYPE_PP(option) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "remove_path option expected to be a string"); + return -1; + } + + if (Z_STRLEN_PP(option) < 1) { + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string given as remove_path option"); + return -1; + } + + if (Z_STRLEN_PP(option) >= MAXPATHLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "remove_path string is too long (max: %i, %i given)", + MAXPATHLEN - 1, Z_STRLEN_PP(option)); + return -1; + } + *remove_path_len = Z_STRLEN_PP(option); + *remove_path = Z_STRVAL_PP(option); + } + + if (zend_hash_find(HASH_OF(options), "add_path", sizeof("add_path"), (void **)&option) == SUCCESS) { + if (Z_TYPE_PP(option) != IS_STRING) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "add_path option expected to be a string"); + return -1; + } + + if (Z_STRLEN_PP(option) < 1) { + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string given as the add_path option"); + return -1; + } + + if (Z_STRLEN_PP(option) >= MAXPATHLEN) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "add_path string too long (max: %i, %i given)", + MAXPATHLEN - 1, Z_STRLEN_PP(option)); + return -1; + } + *add_path_len = Z_STRLEN_PP(option); + *add_path = Z_STRVAL_PP(option); + } + return 1; +} +/* }}} */ + /* {{{ REGISTER_ZIP_CLASS_CONST_LONG */ #define REGISTER_ZIP_CLASS_CONST_LONG(const_name, value) \ zend_declare_class_constant_long(zip_class_entry, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC); @@ -216,13 +680,13 @@ static int php_zip_extract_file(struct zip * za, char *dest, char *file, int fil #define RETURN_SB(sb) \ { \ array_init(return_value); \ - add_assoc_string(return_value, "name", (char *)(sb)->name, 1); \ - add_assoc_long(return_value, "index", (long) (sb)->index); \ - add_assoc_long(return_value, "crc", (long) (sb)->crc); \ - add_assoc_long(return_value, "size", (long) (sb)->size); \ - add_assoc_long(return_value, "mtime", (long) (sb)->mtime); \ - add_assoc_long(return_value, "comp_size", (long) (sb)->comp_size); \ - add_assoc_long(return_value, "comp_method", (long) (sb)->comp_method); \ + add_ascii_assoc_string(return_value, "name", (char *)(sb)->name, 1); \ + add_ascii_assoc_long(return_value, "index", (long) (sb)->index); \ + add_ascii_assoc_long(return_value, "crc", (long) (sb)->crc); \ + add_ascii_assoc_long(return_value, "size", (long) (sb)->size); \ + add_ascii_assoc_long(return_value, "mtime", (long) (sb)->mtime); \ + add_ascii_assoc_long(return_value, "comp_size", (long) (sb)->comp_size); \ + add_ascii_assoc_long(return_value, "comp_method", (long) (sb)->comp_method); \ } /* }}} */ @@ -290,6 +754,7 @@ static zend_function_entry zip_functions[] = { /* }}} */ /* {{{ ZE2 OO definitions */ +#ifdef PHP_ZIP_USE_OO static zend_class_entry *zip_class_entry; static zend_object_handlers zip_object_handlers; @@ -306,8 +771,10 @@ typedef struct _zip_prop_handler { int type; } zip_prop_handler; +#endif /* }}} */ +#ifdef PHP_ZIP_USE_OO static void php_zip_register_prop_handler(HashTable *prop_handler, char *name, zip_read_int_t read_int_func, zip_read_const_char_t read_char_func, zip_read_const_char_from_ze_t read_char_from_obj_func, int rettype TSRMLS_DC) /* {{{ */ { zip_prop_handler hnd; @@ -351,7 +818,7 @@ static int php_zip_property_reader(ze_zip_object *obj, zip_prop_handler *hnd, zv switch (hnd->type) { case IS_STRING: if (retchar) { - ZVAL_STRINGL(*retval, (char *) retchar, len, 1); + ZVAL_STRING(*retval, (char *) retchar, 1); } else { ZVAL_EMPTY_STRING(*retval); } @@ -434,7 +901,7 @@ static zval* php_zip_read_property(zval *object, zval *member, int type TSRMLS_D ret = php_zip_property_reader(obj, hnd, &retval, 1 TSRMLS_CC); if (ret == SUCCESS) { /* ensure we're creating a temporary variable */ - retval->refcount = 0; + Z_SET_REFCOUNT_P(retval, 0); } else { retval = EG(uninitialized_zval_ptr); } @@ -478,8 +945,8 @@ static int php_zip_has_property(zval *object, zval *member, int type TSRMLS_DC) if (type == 2) { retval = 1; } else if (php_zip_property_reader(obj, hnd, &tmp, 1 TSRMLS_CC) == SUCCESS) { - tmp->refcount = 1; - tmp->is_ref = 0; + Z_SET_REFCOUNT_P(tmp, 1); + Z_UNSET_ISREF_P(tmp); if (type == 1) { retval = zend_is_true(tmp); } else if (type == 0) { @@ -580,7 +1047,14 @@ static zend_object_value php_zip_object_new(zend_class_entry *class_type TSRMLS_ intern->buffers_cnt = 0; intern->prop_handler = &zip_prop_handlers; +#if ((PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2)) zend_object_std_init(&intern->zo, class_type TSRMLS_CC); +#else + ALLOC_HASHTABLE(intern->zo.properties); + zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0); + intern->zo.ce = class_type; +#endif + zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); @@ -594,6 +1068,7 @@ static zend_object_value php_zip_object_new(zend_class_entry *class_type TSRMLS_ return retval; } /* }}} */ +#endif /* {{{ Resource dtors */ @@ -636,7 +1111,7 @@ static void php_zip_free_entry(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* }}}*/ /* reset macro */ -#undef zip + /* {{{ function prototypes */ static PHP_MINIT_FUNCTION(zip); static PHP_MSHUTDOWN_FUNCTION(zip); @@ -654,7 +1129,7 @@ zend_module_entry zip_module_entry = { NULL, NULL, PHP_MINFO(zip), - "2.0.0", + PHP_ZIP_VERSION_STRING, STANDARD_MODULE_PROPERTIES }; /* }}} */ @@ -663,7 +1138,6 @@ zend_module_entry zip_module_entry = { ZEND_GET_MODULE(zip) #endif /* set macro */ -#define zip php_ziplib__zip /* {{{ proto resource zip_open(string filename) Create new zip using source uri for output */ @@ -694,7 +1168,7 @@ static PHP_NAMED_FUNCTION(zif_zip_open) rsrc_int = (zip_rsrc *)emalloc(sizeof(zip_rsrc)); - rsrc_int->za = zip_open(filename, 0, &err); + rsrc_int->za = zip_open(resolved_path, 0, &err); if (rsrc_int->za == NULL) { efree(rsrc_int); RETURN_LONG((long)err); @@ -749,7 +1223,7 @@ static PHP_NAMED_FUNCTION(zif_zip_read) if (ret != 0) { efree(zr_rsrc); - RETURN_LONG((long)ret); + RETURN_FALSE; } zr_rsrc->zf = zip_fopen_index(rsrc_int->za, rsrc_int->index_current, 0); @@ -944,6 +1418,7 @@ static PHP_NAMED_FUNCTION(zif_zip_entry_compressionmethod) } /* }}} */ +#ifdef PHP_ZIP_USE_OO /* {{{ proto mixed ZipArchive::open(string source [, int flags]) Create new zip using source uri for output, return TRUE on success or the error code */ static ZIPARCHIVE_METHOD(open) @@ -991,6 +1466,7 @@ static ZIPARCHIVE_METHOD(open) efree(ze_obj->filename); ze_obj->filename = NULL; } + intern = zip_open(resolved_path, flags, &err); if (!intern || err) { RETURN_LONG((long)err); @@ -1031,6 +1507,28 @@ static ZIPARCHIVE_METHOD(close) } /* }}} */ +/* {{{ proto string ZipArchive::getStatusString() + * Returns the status error message, system and/or zip messages */ +static ZIPARCHIVE_METHOD(getStatusString) +{ + struct zip *intern; + zval *this = getThis(); + int zep, syp, len; + char error_string[128]; + + if (!this) { + RETURN_FALSE; + } + + ZIP_FROM_OBJECT(intern, this); + + zip_error_get(intern, &zep, &syp); + + len = zip_error_to_str(error_string, 128, zep, syp); + RETVAL_STRINGL(error_string, len, 1); +} +/* }}} */ + /* {{{ proto bool ZipArchive::createEmptyDir(string dirname) Returns the index of the entry named filename in the archive */ static ZIPARCHIVE_METHOD(addEmptyDir) @@ -1071,17 +1569,10 @@ static ZIPARCHIVE_METHOD(addEmptyDir) if (idx >= 0) { RETVAL_FALSE; } else { - /* reset the error */ - if (intern->error.str) { - _zip_error_fini(&intern->error); - } - _zip_error_init(&intern->error); - if (zip_add_dir(intern, (const char *)s) == -1) { RETVAL_FALSE; - } else { - RETVAL_TRUE; } + RETVAL_TRUE; } if (s != dirname) { @@ -1100,10 +1591,7 @@ static ZIPARCHIVE_METHOD(addFile) int filename_len; char *entry_name = NULL; int entry_name_len = 0; - struct zip_source *zs; long offset_start = 0, offset_len = 0; - int cur_idx; - char resolved_path[MAXPATHLEN]; if (!this) { RETURN_FALSE; @@ -1126,35 +1614,8 @@ static ZIPARCHIVE_METHOD(addFile) entry_name_len = filename_len; } - if (OPENBASEDIR_CHECKPATH(filename)) { - RETURN_FALSE; - } - - if (!expand_filepath(filename, resolved_path TSRMLS_CC)) { - RETURN_FALSE; - } - - zs = zip_source_file(intern, resolved_path, 0, 0); - if (!zs) { - RETURN_FALSE; - } - - cur_idx = zip_name_locate(intern, (const char *)entry_name, 0); - /* TODO: fix _zip_replace */ - if (cur_idx<0) { - /* reset the error */ - if (intern->error.str) { - _zip_error_fini(&intern->error); - } - _zip_error_init(&intern->error); - - } else { - if (zip_delete(intern, cur_idx) == -1) { - RETURN_FALSE; - } - } - - if (zip_add(intern, entry_name, zs) == -1) { + if (php_zip_add_file(intern, filename, filename_len, + entry_name, entry_name_len, 0, 0 TSRMLS_CC) < 0) { RETURN_FALSE; } else { RETURN_TRUE; @@ -1206,14 +1667,7 @@ static ZIPARCHIVE_METHOD(addFromString) cur_idx = zip_name_locate(intern, (const char *)name, 0); /* TODO: fix _zip_replace */ - if (cur_idx<0) { - /* reset the error */ - if (intern->error.str) { - _zip_error_fini(&intern->error); - } - _zip_error_init(&intern->error); - - } else { + if (cur_idx >= 0) { if (zip_delete(intern, cur_idx) == -1) { RETURN_FALSE; } @@ -1310,15 +1764,10 @@ static ZIPARCHIVE_METHOD(locateName) idx = (long)zip_name_locate(intern, (const char *)name, flags); - if (idx<0) { - /* reset the error */ - if (intern->error.str) { - _zip_error_fini(&intern->error); - } - _zip_error_init(&intern->error); - RETURN_FALSE; - } else { + if (idx >= 0) { RETURN_LONG(idx); + } else { + RETURN_FALSE; } } /* }}} */ @@ -1807,7 +2256,7 @@ static ZIPARCHIVE_METHOD(extractTo) } ZIP_FROM_OBJECT(intern, this); - if (zval_files) { + if (zval_files && (Z_TYPE_P(zval_files) != IS_NULL)) { switch (Z_TYPE_P(zval_files)) { case IS_STRING: if (!php_zip_extract_file(intern, pathto, Z_STRVAL_P(zval_files), Z_STRLEN_P(zval_files) TSRMLS_CC)) { @@ -1979,6 +2428,7 @@ static ZIPARCHIVE_METHOD(getStream) static zend_function_entry zip_class_functions[] = { ZIPARCHIVE_ME(open, NULL, ZEND_ACC_PUBLIC) ZIPARCHIVE_ME(close, NULL, ZEND_ACC_PUBLIC) + ZIPARCHIVE_ME(getStatusString, NULL, ZEND_ACC_PUBLIC) ZIPARCHIVE_ME(addEmptyDir, NULL, ZEND_ACC_PUBLIC) ZIPARCHIVE_ME(addFromString, NULL, ZEND_ACC_PUBLIC) ZIPARCHIVE_ME(addFile, NULL, ZEND_ACC_PUBLIC) @@ -2007,11 +2457,10 @@ static zend_function_entry zip_class_functions[] = { {NULL, NULL, NULL} }; /* }}} */ +#endif /* {{{ PHP_MINIT_FUNCTION */ -#undef zip static PHP_MINIT_FUNCTION(zip) -#define zip php_ziplib__zip { zend_class_entry ce; @@ -2092,9 +2541,7 @@ static PHP_MINIT_FUNCTION(zip) /* {{{ PHP_MSHUTDOWN_FUNCTION */ -#undef zip static PHP_MSHUTDOWN_FUNCTION(zip) -#define zip php_ziplib__zip { zend_hash_destroy(&zip_prop_handlers); php_unregister_url_stream_wrapper("zip" TSRMLS_CC); @@ -2105,15 +2552,14 @@ static PHP_MSHUTDOWN_FUNCTION(zip) /* {{{ PHP_MINFO_FUNCTION */ -#undef zip 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,v 1.1.2.43 2008/01/18 00:51:38 pajoye Exp $"); + php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v 1.1.2.49 2009/02/05 19:53:22 pajoye Exp $"); php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION_STRING); - php_info_print_table_row(2, "Libzip version", "0.8.0-compatible"); + php_info_print_table_row(2, "Libzip version", "0.9.0"); php_info_print_table_end(); } diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h index 6712b5291..6891d031f 100644 --- a/ext/zip/php_zip.h +++ b/ext/zip/php_zip.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_zip.h,v 1.10.2.5 2008/01/18 00:51:38 pajoye Exp $ */ +/* $Id: php_zip.h,v 1.10.2.9 2009/02/05 19:53:22 pajoye Exp $ */ #ifndef PHP_ZIP_H #define PHP_ZIP_H @@ -24,14 +24,23 @@ extern zend_module_entry zip_module_entry; #define phpext_zip_ptr &zip_module_entry -#ifdef ZTS #include "TSRM.h" -#endif #include "lib/zip.h" #define PHP_ZIP_VERSION_STRING "1.8.11" +#if ((PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 2) || PHP_MAJOR_VERSION >= 6) +# define PHP_ZIP_USE_OO 1 +#endif + +#ifndef Z_SET_REFCOUNT_P +# if PHP_MAJOR_VERSION < 6 && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 3) +# define Z_SET_REFCOUNT_P(pz, rc) pz->refcount = rc +# define Z_UNSET_ISREF_P(pz) pz->is_ref = 0 +# endif +#endif + /* {{{ OPENBASEDIR_CHECKPATH(filename) */ #if (PHP_MAJOR_VERSION < 6) #define OPENBASEDIR_CHECKPATH(filename) \ @@ -55,6 +64,7 @@ typedef struct _ze_zip_read_rsrc { struct zip_stat sb; } zip_read_rsrc; +#ifdef PHP_ZIP_USE_OO #define ZIPARCHIVE_ME(name, arg_info, flags) ZEND_FENTRY(name, c_ziparchive_ ##name, arg_info, flags) #define ZIPARCHIVE_METHOD(name) ZEND_NAMED_FUNCTION(c_ziparchive_##name) @@ -73,6 +83,7 @@ php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, char *path, char php_stream *php_stream_zip_open(char *filename, char *path, char *mode STREAMS_DC TSRMLS_DC); extern php_stream_wrapper php_stream_zip_wrapper; +#endif #endif /* PHP_ZIP_H */ diff --git a/ext/zip/tests/bug11216.phpt b/ext/zip/tests/bug11216.phpt index 04b3f218c..5586eebf3 100644 --- a/ext/zip/tests/bug11216.phpt +++ b/ext/zip/tests/bug11216.phpt @@ -2,7 +2,7 @@ Bug #11216 (::addEmptyDir() crashes when the directory already exists) --SKIPIF-- --FILE-- @@ -15,14 +15,14 @@ var_dump($archive->addEmptyDir('test')); $archive->close(); unlink('__test.zip'); ?> ---EXPECT-- +--EXPECTF-- bool(true) ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 1 - [filename] => + [filename] => %s [comment] => ) bool(false) diff --git a/ext/zip/tests/bug14962.phpt b/ext/zip/tests/bug14962.phpt new file mode 100644 index 000000000..851d28eea --- /dev/null +++ b/ext/zip/tests/bug14962.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #14962 (::extractTo second argument is not really optional) +--SKIPIF-- + +--FILE-- +open($dir . '/__14962.zip', ZIPARCHIVE::CREATE); +$za->addFromString($file, '1234'); +$za->close(); + +if (!is_file($dir . "/__14962.zip")) { + die('failed to create the archive'); +} +$za = new ZipArchive; +$za->open($dir . '/__14962.zip'); +$za->extractTo($dir, NULL); +$za->close(); + +if (is_file($fullpath)) { + unlink($fullpath); + echo "Ok"; +} +unlink($dir . '/' . '__14962.zip'); +?> +--EXPECT-- +Ok diff --git a/ext/zip/tests/bug38943.inc b/ext/zip/tests/bug38943.inc new file mode 100644 index 000000000..a6f45e829 --- /dev/null +++ b/ext/zip/tests/bug38943.inc @@ -0,0 +1,16 @@ +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 486c16950..af470efca 100644 --- a/ext/zip/tests/bug38943.phpt +++ b/ext/zip/tests/bug38943.phpt @@ -1,26 +1,14 @@ --TEST-- -#38943, properties in extended class cannot be set +#38943, properties in extended class cannot be set (< 5.3) --SKIPIF-- --FILE-- testarray[] = 1; - var_dump($this->testarray); - } -} - -$z = new myZip; -$z->testp = "foobar"; -var_dump($z); +include dirname(__FILE__) . '/bug38943.inc'; ?> --EXPECTF-- array(1) { diff --git a/ext/zip/tests/bug38943_2.phpt b/ext/zip/tests/bug38943_2.phpt new file mode 100644 index 000000000..d60cb53c9 --- /dev/null +++ b/ext/zip/tests/bug38943_2.phpt @@ -0,0 +1,38 @@ +--TEST-- +#38943, properties in extended class cannot be set (5.3) +--SKIPIF-- + +--FILE-- + +--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/bug38944.phpt b/ext/zip/tests/bug38944.phpt index ee12fad2b..7cff60c98 100644 --- a/ext/zip/tests/bug38944.phpt +++ b/ext/zip/tests/bug38944.phpt @@ -23,7 +23,7 @@ echo "Done\n"; int(0) int(0) int(0) -string(0) "" +string(%d) "%s" string(0) "" object(ZipArchive)#%d (5) { ["status"]=> @@ -33,7 +33,7 @@ object(ZipArchive)#%d (5) { ["numFiles"]=> int(0) ["filename"]=> - string(0) "" + string(%d) "%s" ["comment"]=> string(0) "" } diff --git a/ext/zip/tests/bug7658.phpt b/ext/zip/tests/bug7658.phpt index 743761097..ddadac395 100644 --- a/ext/zip/tests/bug7658.phpt +++ b/ext/zip/tests/bug7658.phpt @@ -2,11 +2,28 @@ Bug #7658 (modify archive with general bit flag 3 set) --SKIPIF-- --FILE-- open($file)) { echo 'failed'; } -dump_entries_name($zip); $zip->deleteName('content.xml'); $zip->addFile($dirname . "bug7658.xml","content.xml"); $zip->close(); echo "\n"; $zip->open($file); -dump_entries_name($zip); -@unlink($file); -?> ---EXPECT-- -0 mimetype -1 Configurations2/statusbar/ -2 Configurations2/accelerator/current.xml -3 Configurations2/floater/ -4 Configurations2/popupmenu/ -5 Configurations2/progressbar/ -6 Configurations2/menubar/ -7 Configurations2/toolbar/ -8 Configurations2/images/Bitmaps/ -9 content.xml -10 styles.xml -11 meta.xml -12 Thumbnails/thumbnail.png -13 settings.xml -14 META-INF/manifest.xml -0 mimetype -1 Configurations2/statusbar/ -2 Configurations2/accelerator/current.xml -3 Configurations2/floater/ -4 Configurations2/popupmenu/ -5 Configurations2/progressbar/ -6 Configurations2/menubar/ -7 Configurations2/toolbar/ -8 Configurations2/images/Bitmaps/ -9 styles.xml -10 meta.xml -11 Thumbnails/thumbnail.png -12 settings.xml -13 META-INF/manifest.xml -14 content.xml +for($i=0; $i < $zip->numFiles; $i++) { + $sb = $zip->statIndex($i); + $found[] = $sb['name']; +} +$ar = array_diff($found, $expect); + +var_dump($ar); +unset($zip); +unlink($file); +?> +--EXPECTF-- +array(0) { +} diff --git a/ext/zip/tests/oo_delete.phpt b/ext/zip/tests/oo_delete.phpt index 902fad244..c73a069a6 100644 --- a/ext/zip/tests/oo_delete.phpt +++ b/ext/zip/tests/oo_delete.phpt @@ -2,7 +2,7 @@ Delete entries --SKIPIF-- --FILE-- @@ -63,7 +63,12 @@ $sb = $zip->statIndex(1); var_dump($sb); $sb = $zip->statIndex(2); var_dump($sb); -@unlink($file); +$zip->close(); +unset($zip); + +if (file_exists($file)) { + unlink($file); +} ?> --EXPECTF-- ok diff --git a/ext/zip/tests/oo_properties.phpt b/ext/zip/tests/oo_properties.phpt index f7d126696..fefab2610 100644 --- a/ext/zip/tests/oo_properties.phpt +++ b/ext/zip/tests/oo_properties.phpt @@ -2,7 +2,7 @@ ziparchive::properties isset()/empty() checks --SKIPIF-- --FILE-- @@ -51,8 +51,8 @@ zip->status (0): zip->numFiles (5): empty(): 0 isset(): 1 -zip->filename (0): - empty(): 1 +zip->filename (%d): + empty(): 0 isset(): 1 zip->comment (19): empty(): 0 diff --git a/ext/zip/zip_stream.c b/ext/zip/zip_stream.c index 747097537..8a495d3bc 100644 --- a/ext/zip/zip_stream.c +++ b/ext/zip/zip_stream.c @@ -1,4 +1,4 @@ -/* $Id: zip_stream.c,v 1.1.2.5 2007/03/14 11:08:57 pajoye Exp $ */ +/* $Id: zip_stream.c,v 1.1.2.7 2008/07/23 11:25:50 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" #endif diff --git a/ext/zlib/php_zlib.h b/ext/zlib/php_zlib.h index 89e6ee213..bc944fcd7 100644 --- a/ext/zlib/php_zlib.h +++ b/ext/zlib/php_zlib.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_zlib.h,v 1.42.2.1.2.3 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: php_zlib.h,v 1.42.2.1.2.4 2008/12/31 11:17:47 sebastian Exp $ */ #ifndef PHP_ZLIB_H #define PHP_ZLIB_H diff --git a/ext/zlib/tests/data.inc b/ext/zlib/tests/data.inc new file mode 100644 index 000000000..441199ff0 --- /dev/null +++ b/ext/zlib/tests/data.inc @@ -0,0 +1,88 @@ + + \ No newline at end of file diff --git a/ext/zlib/tests/gzclose_basic.phpt b/ext/zlib/tests/gzclose_basic.phpt new file mode 100644 index 000000000..d61855bf9 --- /dev/null +++ b/ext/zlib/tests/gzclose_basic.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test function gzclose() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +bool(true) + +Warning: gzread(): %d is not a valid stream resource in %s on line %d +bool(true) + +Warning: gzread(): %d is not a valid stream resource in %s on line %d +===DONE=== diff --git a/ext/zlib/tests/gzclose_error.phpt b/ext/zlib/tests/gzclose_error.phpt new file mode 100644 index 000000000..1122b35f0 --- /dev/null +++ b/ext/zlib/tests/gzclose_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test function gzclose() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzclose() in %s on line %d +NULL + +Warning: Wrong parameter count for gzclose() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzcompress_basic1.phpt b/ext/zlib/tests/gzcompress_basic1.phpt new file mode 100644 index 000000000..dddeb1d55 --- /dev/null +++ b/ext/zlib/tests/gzcompress_basic1.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test gzcompress() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing gzcompress() : basic functionality *** +-- Compression level -1 -- +string(32) "764809aef15bb34cb73ad49ecb600d99" +int(0) +-- Compression level 0 -- +string(32) "d0136b3fb5424142c0eb26dfec8f56fe" +int(0) +-- Compression level 1 -- +string(32) "c2e070f4320d1f674965eaab95b53d9c" +int(0) +-- Compression level 2 -- +string(32) "400a53d19ca337727f8cd362f5cd3ee0" +int(0) +-- Compression level 3 -- +string(32) "a441a2f5169bb303cd45b860a5a9dbf9" +int(0) +-- Compression level 4 -- +string(32) "d5b7451e9de2864beccc9de1fc55eb87" +int(0) +-- Compression level 5 -- +string(32) "32ba4a01120449ec25508cabfad41f56" +int(0) +-- Compression level 6 -- +string(32) "764809aef15bb34cb73ad49ecb600d99" +int(0) +-- Compression level 7 -- +string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" +int(0) +-- Compression level 8 -- +string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" +int(0) +-- Compression level 9 -- +string(32) "e083e7e8d05471fed3c2182b9cd0d9eb" +int(0) +-- Compression level -1 -- +string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 0 -- +string(76) "7801011b00e4ff4120736d616c6c20737472696e6720746f20636f6d70726573730a87a509cb" +int(0) +-- Compression level 1 -- +string(70) "7801735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 2 -- +string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 3 -- +string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 4 -- +string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 5 -- +string(70) "785e735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 6 -- +string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 7 -- +string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 8 -- +string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) +-- Compression level 9 -- +string(70) "78da735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +int(0) + +-- Testing with no specified compression level -- +string(70) "789c735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee6020087a509cb" +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzcompress_error1.phpt b/ext/zlib/tests/gzcompress_error1.phpt new file mode 100644 index 000000000..7fa60b900 --- /dev/null +++ b/ext/zlib/tests/gzcompress_error1.phpt @@ -0,0 +1,78 @@ +--TEST-- +Test gzcompress() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing gzcompress() : error conditions *** + +-- Testing gzcompress() function with Zero arguments -- + +Warning: gzcompress() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing gzcompress() function with more than expected no. of arguments -- + +Warning: gzcompress() expects at most 2 parameters, 3 given in %s on line %d +NULL + +-- Testing with incorrect compression level -- + +Warning: gzcompress(): compression level (99) must be within -1..9 in %s on line %d +bool(false) + +-- Testing with incorrect parameters -- + +Warning: gzcompress() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: gzcompress() expects parameter 2 to be long, object given in %s on line %d +NULL +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzcompress_variation1.phpt b/ext/zlib/tests/gzcompress_variation1.phpt new file mode 100644 index 000000000..ef96e4945 --- /dev/null +++ b/ext/zlib/tests/gzcompress_variation1.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test gzcompress() function : variation +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing gzcompress() : variation *** + +-- Testing multiple compression -- +string(32) "764809aef15bb34cb73ad49ecb600d99" +string(32) "eba942bc2061f23ea8688cc5101872a4" +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzdeflate_basic1.phpt b/ext/zlib/tests/gzdeflate_basic1.phpt new file mode 100644 index 000000000..823f32035 --- /dev/null +++ b/ext/zlib/tests/gzdeflate_basic1.phpt @@ -0,0 +1,125 @@ +--TEST-- +Test gzdeflate() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing gzdeflate() : basic functionality *** +-- Compression level -1 -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +int(0) +-- Compression level 0 -- +string(32) "a71e54d2499aff9e48643cb1c260b60c" +int(0) +-- Compression level 1 -- +string(32) "05e80f4dc0d422e1f333cbed555d381f" +int(0) +-- Compression level 2 -- +string(32) "0fb33656e4ed0750f977df83246fce7a" +int(0) +-- Compression level 3 -- +string(32) "bc6e9c1dccc3e951e006315ee669ee08" +int(0) +-- Compression level 4 -- +string(32) "a61727d7a28c634470eb6e97a4a81b24" +int(0) +-- Compression level 5 -- +string(32) "a2a1a14b7542c82e8943200d093d5f27" +int(0) +-- Compression level 6 -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +int(0) +-- Compression level 7 -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +int(0) +-- Compression level 8 -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +int(0) +-- Compression level 9 -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +int(0) +-- Compression level -1 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 0 -- +string(64) "011b00e4ff4120736d616c6c20737472696e6720746f20636f6d70726573730a" +int(0) +-- Compression level 1 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 2 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 3 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 4 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 5 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 6 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 7 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 8 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) +-- Compression level 9 -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +int(0) + +-- Testing with no specified compression level -- +string(58) "735428ce4dccc951282e29cacc4b5728c95748cecf2d284a2d2ee60200" +===Done=== diff --git a/ext/zlib/tests/gzdeflate_error1.phpt b/ext/zlib/tests/gzdeflate_error1.phpt new file mode 100644 index 000000000..78491af9f --- /dev/null +++ b/ext/zlib/tests/gzdeflate_error1.phpt @@ -0,0 +1,76 @@ +--TEST-- +Test gzdeflate() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing gzdeflate() : error conditions *** + +-- Testing gzdeflate() function with Zero arguments -- + +Warning: gzdeflate() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing gzdeflate() function with more than expected no. of arguments -- + +Warning: gzdeflate() expects at most 2 parameters, 3 given in %s on line %d +NULL + +-- Testing with incorrect compression level -- + +Warning: gzdeflate(): compression level (99) must be within -1..9 in %s on line %d +bool(false) + +-- Testing with incorrect parameters -- + +Warning: gzdeflate() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: gzdeflate() expects parameter 2 to be long, object given in %s on line %d +NULL +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzdeflate_variation1.phpt b/ext/zlib/tests/gzdeflate_variation1.phpt new file mode 100644 index 000000000..75eb16e03 --- /dev/null +++ b/ext/zlib/tests/gzdeflate_variation1.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test gzdeflate() function : variation +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing gzdeflate() : variation *** + +-- Testing multiple compression -- +string(32) "078554fe65e06f6ff01eab51cfc7ae9b" +string(32) "86b9f895ef1377da5269ec3cb2729f71" +===Done=== diff --git a/ext/zlib/tests/gzencode_basic1.phpt b/ext/zlib/tests/gzencode_basic1.phpt new file mode 100644 index 000000000..9b3dcc8a3 --- /dev/null +++ b/ext/zlib/tests/gzencode_basic1.phpt @@ -0,0 +1,102 @@ +--TEST-- +Test gzencode() function : basic functionality +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing gzencode() : basic functionality *** +-- Compression level -1 -- +string(32) "d9ede02415ce91d21e5a94274e2b9c42" +-- Compression level 0 -- +string(32) "67aaf60426bb2cbd86d7fe530cb12306" +-- Compression level 1 -- +string(32) "bce9c439cf767c1988ff4881b287d1ce" +-- Compression level 2 -- +string(32) "7ddbfed63a76c42808722b66f1c133fc" +-- Compression level 3 -- +string(32) "ca2b85d194dfa2a4e8a162b646c99265" +-- Compression level 4 -- +string(32) "cfe28033eaf260bc33ddc04b53d3ba39" +-- Compression level 5 -- +string(32) "ae357fada2b515422f8bea0aa3bcc48f" +-- Compression level 6 -- +string(32) "d9ede02415ce91d21e5a94274e2b9c42" +-- Compression level 7 -- +string(32) "d9ede02415ce91d21e5a94274e2b9c42" +-- Compression level 8 -- +string(32) "d9ede02415ce91d21e5a94274e2b9c42" +-- Compression level 9 -- +string(32) "d9ede02415ce91d21e5a94274e2b9c42" +-- Compression level -1 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 0 -- +string(32) "36220d650930849b67e8e0622f9bf270" +-- Compression level 1 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 2 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 3 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 4 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 5 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 6 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 7 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 8 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +-- Compression level 9 -- +string(32) "f77bd31e1e4dd11d12828fb661a08010" +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzencode_error1.phpt b/ext/zlib/tests/gzencode_error1.phpt new file mode 100644 index 000000000..ed8c97747 --- /dev/null +++ b/ext/zlib/tests/gzencode_error1.phpt @@ -0,0 +1,98 @@ +--TEST-- +Test gzencode() function : error conditions +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECTF-- +*** Testing gzencode() : error conditions *** + +-- Testing gzencode() function with Zero arguments -- + +Warning: gzencode() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing gzencode() function with more than expected no. of arguments -- + +Warning: gzencode() expects at most 3 parameters, 4 given in %s on line %d +NULL + +-- Testing with incorrect compression level -- + +Warning: gzencode(): compression level(99) must be within -1..9 in %s on line %d +bool(false) + +-- Testing with incorrect encoding_mode -- + +Warning: gzencode(): encoding mode must be FORCE_GZIP or FORCE_DEFLATE in %s on line %d +bool(false) + +-- Testing with incorrect parameters -- + +Warning: gzencode() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: gzencode() expects parameter 2 to be long, object given in %s on line %d +NULL + +Warning: gzencode(): encoding mode must be FORCE_GZIP or FORCE_DEFLATE in %s on line %d +bool(false) + +Warning: gzencode() expects parameter 3 to be long, object given in %s on line %d +NULL + +Warning: gzencode() expects parameter 2 to be long, string given in %s on line %d +NULL +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzencode_variation1.phpt b/ext/zlib/tests/gzencode_variation1.phpt new file mode 100644 index 000000000..47e2097f5 --- /dev/null +++ b/ext/zlib/tests/gzencode_variation1.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test gzencode() function : variation +--SKIPIF-- + +--FILE-- + +===Done=== +--EXPECT-- +*** Testing gzencode() : variation *** + +-- Testing multiple compression -- +string(3658) "1f8b0800000000000003010e07f1f81f8b08000000000000036d574d6fe4c80dbdeb57d4ad2f3dfe01eb83e1ec22980e309b4562c067b64449159754dafab0b6e7d7e73d96da1e4c72184c4b2ab2c8f7c847fa25baabba98dc1a8b2b7c38bb324b713ee37f757f56cdc5c7f5b17b9d152f923b157c5ae335e0b75fedd0e2d781c6b98ea3a6ee05affe1dfc3a6527f8f09c52dcb38ba38bb5249934d6ecfe1e53a9ab76ff4c342cf2a64ed2028349fc9a8b139755685352acb82b9fbb67f8bade5cdcb698e1fcec94b7ceba3cb897e806cfc8114350dd1ebbdfa35b62d2478b0056d23ed809b9b95d696d91ce2aa97c911e3fa539c43f84c887554a4d125c9e63ff96711cc08c0866263cb37a0bbe2122ae8f6baecb2284abfb4ddf916db8354cddeef37c1afe5fa02fc7afb3db34f5b3acbdf2eb905490d8f38d7468d253a323d5ebb903760d7944d3b2024e834a99ddce77669bdd823cfbb8e899d4ad4c799677452e6029e80023a03b2374005590641f7d3877df2ad09f3c0e82a54d6a5644fd63049a37ed4bc362016fd9f51264f1e5c630727421ae930b7ed416e93e47b7c71a400390361ffbecb7561bb98f69b5da289e91becc27f08b3b724cb8704f9144d366431d0cb870c56b205deaa2e17636063761a911039fb7e4bf9f06c4f0aecd2ec80e8b41831ca7515e31286166458ea3ef71f2ce7cde2ae269c96d60525724a9c9170b713ed5750758f3cd2a361fc8b288fc92358ce884692e8ea0fe59bd969a0da2eed5831b715749eaae7178f3ebd30fb88c92105f367cce2c882955dc6bf8eca0d5d57540b3092894743ba0fd5b2dad021836191f1afc0bba14dde1642cb0b1aa6879c38907dcefa0720082b801bec61417469219175267dfa047df35b0bd1332001c28cdfafd3bcabe91e74368cdd8d8478e494c190e7ee90c67f2bde288e68ab6b15e883c995be4f8feb6c6dda4278e4f38578ddbdc7be36788daf0c3cb1d1819c73822f7000a0d1813fa94153b572315e51343b536bc64977dff163cebfd8418773261f524017e251fccc60ae29a5770ae097594d52e9c1229d87ce967a36401c46b69945afb249d101c9d420ffa9a123e232c20e76467d5d169202a2dd4c582949e013e745df7958d4b0cc4fd4377a737cd4feea7974070000f314d423e0634cb9a618fdf5dc64fd422181fd59c9230c9f6f9d18dc8fc23e9cccbc7188733b04aa57de83ebea0be3633cff5fa1ff83269be7f44f5a8d84550cc703255fd345dd402034d0b3e11a73ec6e3d4a77f4f685b614329f1b3132ae7af33d02e1e55e291fa6574b758d1f0200e7423dbc852211818043a7c9ce80aa9d59fce0401959f5ea2cf71fde90824f8c9192dbe9d329db143794675ddcf257dd7755273b67340414e3ccad12e3f661f8aad9cf9957dc1275d10a51d3934fa81e68dc6768fb8ee23e373936c8e13feab8b0f50d227f7af76f561fb0950f3d099bbc316c3892a42fb36806d8660e800fa4f43fd4b962d2097d71933a54b77ff948677848eb17bb3a88b621682cfb3bbb49cf42fed6b3944124ad8358ca688aa44dd5f2144c7c9ab16f25b9aca9654ef357ec9ad55c40d324d6cc3d9e3920b863c231d31a95d937fb5520f9c816c79b7dcecc593fb9593cc05a51ebb1eeddd5b49eb437769738d0f64adc579d372b8b7f7c0208487ee3915ebf5766e148ebd77cf4e01f3ec285047011e55838968b6494d517fe29224777b24dd3ddf933101695b102e87db805eef291b74dcfd91628fb2a53f93dbd2968ef2e598746c9204f89fba1f0246fc671610a0591806e46a1346f77c40d910a47c5e20ffb23f003c04b648327a4ed98032c1965bd35bb0044f5344248f56fdb99aa61d6451d68e33489a83bffbe6573541b2da5f64681ea12090f778b2075374778810f73965fa3626a9d41f4df2f83f7c34658cec921b5a9bde49dd5007ec882b02adc514f81aa85898b5cc98e1b137733c0a8789b7f5648d2d231b80bf74978f25d61ce08a8abd11801fd8f995e066676307192ff7641f1cc6e0dee68565b8b22ac3889cd067bf732754a6b270af1044c6a8776811a4f6d8bd0477a9f516064201b920b92d7cd4dc7eee13e6b3eb3528a82f9abb3f388ebe6a8f871393461b73816ec54c99d604174bc5a6801de13908f86aea6a7d0fea107d682bcf1ec348b83872e6b8a316ecd02eb8f8dc86a609bf59a2dd03f1dfa4079436d55e24617be1a2854d008b2b2b1705e2078a7f3946318df1c24f6bf70d4b456eca286ec2b585b28262cc048a098c3e2d5f325a92bb36f691afdc14c822da1b116c9c1c07bb362eb0a04b78834c812134230ebf2044ac2e3c0e3ad00f848dc5010f3bf917ec2fc700b7bf26dacea8440620e04f90f4d97d6dd77cfde8a05c7d3930f1e5811fb8ec5c70964dcc8187ec90e32fdd6b64eec7586413b7d55bed65c4cce39a9b6c15e70e9da94e53fc904e6286f01f5b5562c94211befbc23507e01b2a3865e2f45b5d7b591f290087a5605b82495b4e393f31aa5b37211ec40241a746d903c5eebf117a4d3ddb0d00007b64cbc70e070000" +===Done=== \ No newline at end of file diff --git a/ext/zlib/tests/gzencode_variation2.phpt b/ext/zlib/tests/gzencode_variation2.phpt new file mode 100644 index 000000000..901cd53c1 --- /dev/null +++ b/ext/zlib/tests/gzencode_variation2.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test gzencode() function : variation - verify header contents with all encoding modes +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzencode() : variation *** + +-- Testing with each encoding_mode -- +string(90) "1f8b0800000000000003735428ce4dccc951282e29cacc4b5728c95748cd4bce4f49e50200d7739de519000000" +string(90) "1f8b0800000000000003735428ce4dccc951282e29cacc4b5728c95748cd4bce4f49e50200d7739de519000000" +string(86) "1f8b0800000000000003789c735428ce4dccc951282e29cacc4b5728c95748cd4bce4f49e50200735808cd" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzeof_basic.phpt b/ext/zlib/tests/gzeof_basic.phpt new file mode 100644 index 000000000..f5d2617a9 --- /dev/null +++ b/ext/zlib/tests/gzeof_basic.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test function feof() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +-- test 1 -- +bool(false) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +bool(true) + +-- test 2 -- +reading 50 characters. eof should be false +bool(false) +reading 250 characters. eof should be true +bool(true) +reading 20 characters. eof should be true still +bool(true) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzeof_error.phpt b/ext/zlib/tests/gzeof_error.phpt new file mode 100644 index 000000000..68f53a7c2 --- /dev/null +++ b/ext/zlib/tests/gzeof_error.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test function gzeof() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzeof() in %s on line %d +NULL + +Warning: Wrong parameter count for gzeof() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzeof_variation1.phpt b/ext/zlib/tests/gzeof_variation1.phpt new file mode 100644 index 000000000..6d1e0401d --- /dev/null +++ b/ext/zlib/tests/gzeof_variation1.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function gzeof while writing. +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +bool(false) +bool(false) + +Warning: gzeof(): %d is not a valid stream resource in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_basic.phpt b/ext/zlib/tests/gzfile_basic.phpt new file mode 100644 index 000000000..1fceea5b9 --- /dev/null +++ b/ext/zlib/tests/gzfile_basic.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test function gzfile() reading a gzip relative file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +array(3) { + [0]=> + string(12) "hello world +" + [1]=> + string(22) "is a very common test +" + [2]=> + string(17) "for all languages" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_basic2.phpt b/ext/zlib/tests/gzfile_basic2.phpt new file mode 100644 index 000000000..9f31eb0f8 --- /dev/null +++ b/ext/zlib/tests/gzfile_basic2.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test function gzfile() reading a plain relative file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +array(3) { + [0]=> + string(12) "hello world +" + [1]=> + string(22) "is a very common test +" + [2]=> + string(17) "for all languages" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_error.phpt b/ext/zlib/tests/gzfile_error.phpt new file mode 100644 index 000000000..6089f3ebf --- /dev/null +++ b/ext/zlib/tests/gzfile_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test function gzfile() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: gzfile() expects at most 2 parameters, 3 given in %s on line %d +NULL + +Warning: gzfile() expects at least 1 parameter, 0 given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation1.phpt b/ext/zlib/tests/gzfile_variation1.phpt new file mode 100644 index 000000000..b573030f9 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation1.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with array values. +--SKIPIF-- + +--FILE-- + 'one', 2 => 'two'); + +$variation = array( + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: gzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 1 to be string, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation10.phpt b/ext/zlib/tests/gzfile_variation10.phpt new file mode 100644 index 000000000..2a6d8915d --- /dev/null +++ b/ext/zlib/tests/gzfile_variation10.phpt @@ -0,0 +1,119 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with emptyUnsetUndefNull values. +--SKIPIF-- + +--FILE-- + @$unset_var, + 'undefined var' => @$undefined_var, + 'empty string DQ' => "", + 'empty string SQ' => '', + 'uppercase NULL' => NULL, + 'lowercase null' => null, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation11.phpt b/ext/zlib/tests/gzfile_variation11.phpt new file mode 100644 index 000000000..02faa4501 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation11.phpt @@ -0,0 +1,129 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with float values. +--SKIPIF-- + +--FILE-- + 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation12.phpt b/ext/zlib/tests/gzfile_variation12.phpt new file mode 100644 index 000000000..a8efc7616 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation12.phpt @@ -0,0 +1,108 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with int values. +--SKIPIF-- + +--FILE-- + 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation13.phpt b/ext/zlib/tests/gzfile_variation13.phpt new file mode 100644 index 000000000..8014d7d9d --- /dev/null +++ b/ext/zlib/tests/gzfile_variation13.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with object values. +--SKIPIF-- + +--FILE-- + new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- +Error: 2 - gzfile() expects parameter 2 to be long, object given, %s(%d) +NULL +Error: 2 - gzfile() expects parameter 2 to be long, object given, %s(%d) +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation14.phpt b/ext/zlib/tests/gzfile_variation14.phpt new file mode 100644 index 000000000..8eb183c1c --- /dev/null +++ b/ext/zlib/tests/gzfile_variation14.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with string values. +--SKIPIF-- + +--FILE-- + "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc + ); + + +foreach ( $variation_array as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, string given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation15.phpt b/ext/zlib/tests/gzfile_variation15.phpt new file mode 100644 index 000000000..2a21a36d5 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation15.phpt @@ -0,0 +1,108 @@ +--TEST-- +Test gzfile() function : variation: use include path (relative directories in path) +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +array(1) { + [0]=> + string(22) "This is a file in dir2" +} + +array(1) { + [0]=> + string(22) "This is a file in dir1" +} + +array(1) { + [0]=> + string(22) "This is a file in dir1" +} + + +Warning: gzfile(afile.txt.gz): failed to open stream: No such file or directory in %s on line %d +bool(false) + +array(1) { + [0]=> + string(28) "This is a file in script dir" +} + +===DONE=== + diff --git a/ext/zlib/tests/gzfile_variation2.phpt b/ext/zlib/tests/gzfile_variation2.phpt new file mode 100644 index 000000000..2f75c7f81 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation2.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with boolean values. +--SKIPIF-- + +--FILE-- + true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation3.phpt b/ext/zlib/tests/gzfile_variation3.phpt new file mode 100644 index 000000000..8a6f2cec2 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation3.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with emptyUnsetUndefNull values. +--SKIPIF-- + +--FILE-- + @$unset_var, + 'undefined var' => @$undefined_var, + 'empty string DQ' => "", + 'empty string SQ' => '', + 'uppercase NULL' => NULL, + 'lowercase null' => null, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: gzfile(): Filename cannot be empty in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation4.phpt b/ext/zlib/tests/gzfile_variation4.phpt new file mode 100644 index 000000000..b3c8ac483 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation4.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with float values. +--SKIPIF-- + +--FILE-- + 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +Warning: gzfile(10.5): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(-10.5): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(123456789000): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(-123456789000): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(0.5): failed to open stream: No such file or directory in %s on line %d +bool(false) +===DONE=== diff --git a/ext/zlib/tests/gzfile_variation5.phpt b/ext/zlib/tests/gzfile_variation5.phpt new file mode 100644 index 000000000..5e210b653 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation5.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with int values. +--SKIPIF-- + +--FILE-- + 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +Warning: gzfile(0): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(1): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(12345): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(-2345): failed to open stream: No such file or directory in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation6.phpt b/ext/zlib/tests/gzfile_variation6.phpt new file mode 100644 index 000000000..174524b3d --- /dev/null +++ b/ext/zlib/tests/gzfile_variation6.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with object values. +--SKIPIF-- + +--FILE-- + new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +--EXPECTF-- +Error: 2 - gzfile(Class A object): failed to open stream: No such file or directory, %s(%d) +bool(false) +Error: 2 - gzfile() expects parameter 1 to be string, object given, %s(%d) +NULL \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation7.phpt b/ext/zlib/tests/gzfile_variation7.phpt new file mode 100644 index 000000000..b441dd670 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation7.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test function gzfile() by substituting agument 1 with string values. +--SKIPIF-- + +--FILE-- + "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc + ); + + +foreach ( $variation_array as $var ) { + var_dump(gzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: gzfile(string): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(string): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(sTrInG): failed to open stream: No such file or directory in %s on line %d +bool(false) + +Warning: gzfile(hello world): failed to open stream: No such file or directory in %s on line %d +bool(false) +===DONE=== diff --git a/ext/zlib/tests/gzfile_variation8.phpt b/ext/zlib/tests/gzfile_variation8.phpt new file mode 100644 index 000000000..32d969326 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation8.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with array values. +--SKIPIF-- + +--FILE-- + 'one', 2 => 'two'); + +$variation = array( + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: gzfile() expects parameter 2 to be long, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzfile_variation9.phpt b/ext/zlib/tests/gzfile_variation9.phpt new file mode 100644 index 000000000..c2c24ae26 --- /dev/null +++ b/ext/zlib/tests/gzfile_variation9.phpt @@ -0,0 +1,107 @@ +--TEST-- +Test function gzfile() by substituting agument 2 with boolean values. +--SKIPIF-- + +--FILE-- + true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + ); + + +foreach ( $variation as $var ) { + var_dump(gzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzgetc_basic.phpt b/ext/zlib/tests/gzgetc_basic.phpt new file mode 100644 index 000000000..ca2e38c0e --- /dev/null +++ b/ext/zlib/tests/gzgetc_basic.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test function gzgetc() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me + +characters counted=176 +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzgetc_error.phpt b/ext/zlib/tests/gzgetc_error.phpt new file mode 100644 index 000000000..14e6528a3 --- /dev/null +++ b/ext/zlib/tests/gzgetc_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test function gzgetc() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzgetc() in %s on line %d +NULL + +Warning: Wrong parameter count for gzgetc() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzgets_basic.phpt b/ext/zlib/tests/gzgets_basic.phpt new file mode 100644 index 000000000..3ebc75900 --- /dev/null +++ b/ext/zlib/tests/gzgets_basic.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test function gzgets() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +string(9) "When you'" +string(13) "re taught thr" +string(6) "ough f" +string(8) "eelings +" +string(26) "Destiny flying high above +" +string(38) "all I know is that you can realize it +" +string(18) "Destiny who cares +" +string(19) "as it turns around +" +string(39) "and I know that it descends down on me +" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzgets_error.phpt b/ext/zlib/tests/gzgets_error.phpt new file mode 100644 index 000000000..88099ff51 --- /dev/null +++ b/ext/zlib/tests/gzgets_error.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test function gzgets() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzgets() in %s on line %d +NULL + +Warning: Wrong parameter count for gzgets() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzinflate_error1.phpt b/ext/zlib/tests/gzinflate_error1.phpt new file mode 100644 index 000000000..6dc811364 --- /dev/null +++ b/ext/zlib/tests/gzinflate_error1.phpt @@ -0,0 +1,75 @@ +--TEST-- +Test gzinflate() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzinflate() : error conditions *** + +-- Testing gzcompress() function with Zero arguments -- + +Warning: gzinflate() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing gzcompress() function with more than expected no. of arguments -- + +Warning: gzinflate() expects at most 2 parameters, 3 given in %s on line %d +NULL + +-- Testing with a buffer that is too small -- + +Warning: gzinflate(): data error in %s on line %d +bool(false) + +-- Testing with incorrect parameters -- + +Warning: gzinflate() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: gzinflate() expects parameter 2 to be long, object given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzopen_basic.phpt b/ext/zlib/tests/gzopen_basic.phpt new file mode 100644 index 000000000..e3697731d --- /dev/null +++ b/ext/zlib/tests/gzopen_basic.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test gzopen() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : basic functionality *** +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +===DONE=== diff --git a/ext/zlib/tests/gzopen_basic2.phpt b/ext/zlib/tests/gzopen_basic2.phpt new file mode 100644 index 000000000..5cc02cd18 --- /dev/null +++ b/ext/zlib/tests/gzopen_basic2.phpt @@ -0,0 +1,52 @@ +--TEST-- +Test gzopen() function : basic functionality for writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : basic functionality *** +testing mode -- w -- +This was the information that was written +testing mode -- w+ -- + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d +bool(false) +===DONE=== diff --git a/ext/zlib/tests/gzopen_error.phpt b/ext/zlib/tests/gzopen_error.phpt new file mode 100644 index 000000000..a71791fb2 --- /dev/null +++ b/ext/zlib/tests/gzopen_error.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test gzopen() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : error conditions *** + +-- Testing gzopen() function with more than expected no. of arguments -- + +Warning: gzopen() expects at most 3 parameters, 4 given in %s on line %d +NULL + +-- Testing gzopen() function with less than expected no. of arguments -- + +Warning: gzopen() expects at least 2 parameters, 1 given in %s on line %d +NULL +===DONE=== diff --git a/ext/zlib/tests/gzopen_include_path.inc b/ext/zlib/tests/gzopen_include_path.inc new file mode 100644 index 000000000..7d6723a81 --- /dev/null +++ b/ext/zlib/tests/gzopen_include_path.inc @@ -0,0 +1,92 @@ + \ No newline at end of file diff --git a/ext/zlib/tests/gzopen_variation1.phpt b/ext/zlib/tests/gzopen_variation1.phpt new file mode 100644 index 000000000..ea4836f24 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation1.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test gzopen() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for filename + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gzopen($value, $mode, $use_include_path) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing gzopen() : usage variation *** + +--int 0-- +Error: 2 - gzopen(0): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 1-- +Error: 2 - gzopen(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - gzopen(12345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - gzopen(-2345): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - gzopen(10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - gzopen(-10.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - gzopen(123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - gzopen(-123456789000): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--float .5-- +Error: 2 - gzopen(0.5): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--empty array-- +Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - gzopen() expects parameter 1 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - gzopen(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - gzopen(1): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - gzopen(Class A object): failed to open stream: No such file or directory, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - gzopen() expects parameter 1 to be string, object given, %s(%d) +NULL + +--undefined var-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--unset var-- +Error: 2 - gzopen(): Filename cannot be empty, %s(%d) +bool(false) + +--resource-- +Error: 2 - gzopen() expects parameter 1 to be string, resource given, %s(%d) +NULL +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation2.phpt b/ext/zlib/tests/gzopen_variation2.phpt new file mode 100644 index 000000000..458293514 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation2.phpt @@ -0,0 +1,227 @@ +--TEST-- +Test gzopen() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // int data + 'int 0' => 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for mode + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + var_dump( gzopen($filename, $value, $use_include_path) ); +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing gzopen() : usage variation *** + +--int 0-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--int 1-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--int 12345-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--int -12345-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--float 10.5-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--float -10.5-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--float 12.3456789000e10-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--float -12.3456789000e10-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--float .5-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--empty array-- +Error: 2 - gzopen() expects parameter 2 to be string, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - gzopen() expects parameter 2 to be string, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - gzopen() expects parameter 2 to be string, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - gzopen() expects parameter 2 to be string, array given, %s(%d) +NULL + +--uppercase NULL-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--lowercase null-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--lowercase true-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--lowercase false-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--uppercase TRUE-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--uppercase FALSE-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--empty string DQ-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--empty string SQ-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--instance of classWithToString-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--instance of classWithoutToString-- +Error: 2 - gzopen() expects parameter 2 to be string, object given, %s(%d) +NULL + +--undefined var-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--unset var-- +Error: 2 - gzopen(%s/004.txt.gz): failed to open stream: %s, %s(%d) +bool(false) + +--resource-- +Error: 2 - gzopen() expects parameter 2 to be string, resource given, %s(%d) +NULL +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation3.phpt b/ext/zlib/tests/gzopen_variation3.phpt new file mode 100644 index 000000000..1f6eb9bc2 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation3.phpt @@ -0,0 +1,218 @@ +--TEST-- +Test gzopen() function : usage variation +--SKIPIF-- + +--FILE-- + 1, 'two' => 2); + +//array of values to iterate over +$inputs = array( + + // float data + 'float 10.5' => 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + + // array data + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + + // null data + 'uppercase NULL' => NULL, + 'lowercase null' => null, + + // boolean data + 'lowercase true' => true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + + // empty data + 'empty string DQ' => "", + 'empty string SQ' => '', + + // string data + 'string DQ' => "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc, + + // object data + 'instance of classWithToString' => new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + + // undefined data + 'undefined var' => @$undefined_var, + + // unset data + 'unset var' => @$unset_var, + + // resource variable + 'resource' => $fp +); + +// loop through each element of the array for use_include_path + +foreach($inputs as $key =>$value) { + echo "\n--$key--\n"; + $res = gzopen($filename, $mode, $value); + var_dump($res); + if ($res !== false && $res != NULL) { + gzclose($res); + } +}; + +fclose($fp); + +?> +===DONE=== +--EXPECTF-- +*** Testing gzopen() : usage variation *** + +--float 10.5-- +resource(%d) of type (stream) + +--float -10.5-- +resource(%d) of type (stream) + +--float 12.3456789000e10-- +resource(%d) of type (stream) + +--float -12.3456789000e10-- +resource(%d) of type (stream) + +--float .5-- +resource(%d) of type (stream) + +--empty array-- +Error: 2 - gzopen() expects parameter 3 to be long, array given, %s(%d) +NULL + +--int indexed array-- +Error: 2 - gzopen() expects parameter 3 to be long, array given, %s(%d) +NULL + +--associative array-- +Error: 2 - gzopen() expects parameter 3 to be long, array given, %s(%d) +NULL + +--nested arrays-- +Error: 2 - gzopen() expects parameter 3 to be long, array given, %s(%d) +NULL + +--uppercase NULL-- +resource(%d) of type (stream) + +--lowercase null-- +resource(%d) of type (stream) + +--lowercase true-- +resource(%d) of type (stream) + +--lowercase false-- +resource(%d) of type (stream) + +--uppercase TRUE-- +resource(%d) of type (stream) + +--uppercase FALSE-- +resource(%d) of type (stream) + +--empty string DQ-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--empty string SQ-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--string DQ-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--string SQ-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--mixed case string-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--heredoc-- +Error: 2 - gzopen() expects parameter 3 to be long, string given, %s(%d) +NULL + +--instance of classWithToString-- +Error: 2 - gzopen() expects parameter 3 to be long, object given, %s(%d) +NULL + +--instance of classWithoutToString-- +Error: 2 - gzopen() expects parameter 3 to be long, object given, %s(%d) +NULL + +--undefined var-- +resource(%d) of type (stream) + +--unset var-- +resource(%d) of type (stream) + +--resource-- +Error: 2 - gzopen() expects parameter 3 to be long, resource given, %s(%d) +NULL +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation4.phpt b/ext/zlib/tests/gzopen_variation4.phpt new file mode 100644 index 000000000..17f64d9c1 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation4.phpt @@ -0,0 +1,173 @@ +--TEST-- +Test gzopen() function : variation: use include path (relative directories in path) +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : usage variation *** + +--- testing include path --- + +** testing with mode=r ** +This is a file in dir2 +This is a file in dir1 +This is a file in dir1 + +Warning: gzopen(afile.txt.gz): failed to open stream: No such file or directory in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + +This is a file in script dir + +** testing with mode=r+ ** + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + + +** testing with mode=rt ** +This is a file in dir2 +This is a file in dir1 +This is a file in dir1 + +Warning: gzopen(afile.txt.gz): failed to open stream: No such file or directory in %s on line %d + +Warning: gzpassthru(): supplied argument is not a valid stream resource in %s on line %d + +Warning: gzclose(): supplied argument is not a valid stream resource in %s on line %d + +This is a file in script dir +===DONE=== + diff --git a/ext/zlib/tests/gzopen_variation5.phpt b/ext/zlib/tests/gzopen_variation5.phpt new file mode 100644 index 000000000..ec1bfa3c4 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation5.phpt @@ -0,0 +1,71 @@ +--TEST-- +Test gzopen() function : variation: use include path and stream context create a file, relative path +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing gzopen() : variation *** +Not created in working dir +created in dir1 +Not created in working dir +created in dir1 +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation6.phpt b/ext/zlib/tests/gzopen_variation6.phpt new file mode 100644 index 000000000..9fe3f24b4 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation6.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test gzopen() function : variation: relative/absolute file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : variation *** +This is an absolute file +This is a relative file +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation7.phpt b/ext/zlib/tests/gzopen_variation7.phpt new file mode 100644 index 000000000..92642b099 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation7.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function gzopen() by calling it twice on the same file and not closing one of them at the end of the script +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +string(30) "When you're taught through fee" +string(10) "When you'r" +string(15) "lings +Destiny f" +string(50) "e taught through feelings +Destiny flying high abov" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzopen_variation8.phpt b/ext/zlib/tests/gzopen_variation8.phpt new file mode 100644 index 000000000..bb0126227 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation8.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test gzopen() function : variation: opening a plain file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing gzopen() : variation *** +Here is some plain +text to be read +and displayed. +===DONE=== diff --git a/ext/zlib/tests/gzopen_variation9.phpt b/ext/zlib/tests/gzopen_variation9.phpt new file mode 100644 index 000000000..7a44b6eb0 --- /dev/null +++ b/ext/zlib/tests/gzopen_variation9.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test gzopen() function : variation: try opening with possibly invalid modes +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzopen() : variation *** +mode=r+ + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d +gzopen=bool(false) + +mode=rf +gzopen=resource(%d) of type (stream) + +mode=w+ + +Warning: gzopen(): cannot open a zlib stream for reading and writing at the same time! in %s on line %d +gzopen=bool(false) + +mode=e + +Warning: gzopen(%s/004.txt.gz): failed to open stream: %s in %s on line %d +gzopen=bool(false) + +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzpassthru_basic.phpt b/ext/zlib/tests/gzpassthru_basic.phpt new file mode 100644 index 000000000..931c2b22c --- /dev/null +++ b/ext/zlib/tests/gzpassthru_basic.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test function gzpassthru() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +int(0) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzpassthru_error.phpt b/ext/zlib/tests/gzpassthru_error.phpt new file mode 100644 index 000000000..fda584f6d --- /dev/null +++ b/ext/zlib/tests/gzpassthru_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test function gzpassthru() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzpassthru() in %s on line %d +NULL + +Warning: Wrong parameter count for gzpassthru() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzputs_basic.phpt b/ext/zlib/tests/gzputs_basic.phpt new file mode 100644 index 000000000..7566e74e7 --- /dev/null +++ b/ext/zlib/tests/gzputs_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function gzputs() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(34) +int(10) +Here is the string to be written. Here is th +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzread_basic.phpt b/ext/zlib/tests/gzread_basic.phpt new file mode 100644 index 000000000..ecb62a825 --- /dev/null +++ b/ext/zlib/tests/gzread_basic.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test function gzread() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +string(10) "When you'r" +string(14) "e taught throu" +string(7) "gh feel" +string(99) "ings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns " +string(46) "around +and I know that it descends down on me +" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzread_error.phpt b/ext/zlib/tests/gzread_error.phpt new file mode 100644 index 000000000..eab0f7dd7 --- /dev/null +++ b/ext/zlib/tests/gzread_error.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test function gzread() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzread() in %s on line %d +NULL + +Warning: Wrong parameter count for gzread() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzread_error2.phpt b/ext/zlib/tests/gzread_error2.phpt new file mode 100644 index 000000000..fae635641 --- /dev/null +++ b/ext/zlib/tests/gzread_error2.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test function gzread() by calling it invalid lengths +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +string(10) "When you'r" + +Warning: gzread(): Length parameter must be greater than 0 in %s on line %d +bool(false) +string(5) "e tau" + +Warning: gzread(): Length parameter must be greater than 0 in %s on line %d +bool(false) +string(8) "ght thro" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzread_variation1.phpt b/ext/zlib/tests/gzread_variation1.phpt new file mode 100644 index 000000000..1f50d7712 --- /dev/null +++ b/ext/zlib/tests/gzread_variation1.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function gzread() by calling it while file open for writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +string(0) "" +string(0) "" +string(0) "" +Here is the string to be written. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzrewind_basic.phpt b/ext/zlib/tests/gzrewind_basic.phpt new file mode 100644 index 000000000..959f0fcde --- /dev/null +++ b/ext/zlib/tests/gzrewind_basic.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test function gzrewind() by calling it with its expected arguments when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +test rewind before doing anything +bool(true) +int(0) + +first 30 characters=When you're taught through fee +int(30) +int(0) +first 10 characters=When you'r +first 20 characters=When you're taught t +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzrewind_basic2.phpt b/ext/zlib/tests/gzrewind_basic2.phpt new file mode 100644 index 000000000..f51751c61 --- /dev/null +++ b/ext/zlib/tests/gzrewind_basic2.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function gzrewind() by calling it with its expected arguments when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +read to the end of the file, then rewind +bool(true) +int(176) +bool(false) +int(0) +first 20 characters=When you're taught t +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzrewind_error.phpt b/ext/zlib/tests/gzrewind_error.phpt new file mode 100644 index 000000000..c6f2456b2 --- /dev/null +++ b/ext/zlib/tests/gzrewind_error.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test function gzrewind() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +Warning: Wrong parameter count for gzrewind() in %s on line %d +NULL + +Warning: Wrong parameter count for gzrewind() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzrewind_variation1.phpt b/ext/zlib/tests/gzrewind_variation1.phpt new file mode 100644 index 000000000..82018627f --- /dev/null +++ b/ext/zlib/tests/gzrewind_variation1.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test function gzrewind() by calling it with its expected arguments when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +bool(false) +The first string.The second string. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_basic.phpt b/ext/zlib/tests/gzseek_basic.phpt new file mode 100644 index 000000000..d641bad42 --- /dev/null +++ b/ext/zlib/tests/gzseek_basic.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test function gzseek() by calling it with its expected arguments when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +move to the 50th byte +int(0) +tell=50 +string(10) " high abov" + +move forward to the 100th byte +int(0) +tell=100 +string(10) "Destiny wh" + +move backward to the 20th byte +int(0) +tell=20 +string(10) "hrough fee" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_basic2.phpt b/ext/zlib/tests/gzseek_basic2.phpt new file mode 100644 index 000000000..a815b8ff4 --- /dev/null +++ b/ext/zlib/tests/gzseek_basic2.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test function gzseek() by calling it with its expected arguments when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +tell=23 +tell=43 +tell=67 + +reading the output file +This is the first line. +string(40) "0000000000000000000000000000000000000000" +This is the second line. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_error.phpt b/ext/zlib/tests/gzseek_error.phpt new file mode 100644 index 000000000..a7ca275e4 --- /dev/null +++ b/ext/zlib/tests/gzseek_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test function gzseek() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzseek() in %s on line %d +NULL + +Warning: Wrong parameter count for gzseek() in %s on line %d +NULL + +Warning: Wrong parameter count for gzseek() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation1.phpt b/ext/zlib/tests/gzseek_variation1.phpt new file mode 100644 index 000000000..301b57d15 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation1.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test function gzseek() by seeking forward in write mode +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +This is the first line. +string(40) "0000000000000000000000000000000000000000" +This is the second line. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation2.phpt b/ext/zlib/tests/gzseek_variation2.phpt new file mode 100644 index 000000000..e70d6dd84 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation2.phpt @@ -0,0 +1,49 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_SET when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +move to the 50th byte +int(0) +tell=50 +string(10) " high abov" + +move forward to the 100th byte +int(0) +tell=100 +string(10) "Destiny wh" + +move backward to the 20th byte +int(0) +tell=20 +string(10) "hrough fee" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation3.phpt b/ext/zlib/tests/gzseek_variation3.phpt new file mode 100644 index 000000000..dee7c1302 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation3.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_CUR when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +move to the 50th byte +int(0) +tell=50 +string(10) " high abov" + +move forward to the 94th byte +int(0) +tell=94 +string(10) "ze it +Dest" + +move backward to the 77th byte +int(0) +tell=77 +string(10) "hat you ca" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation4.phpt b/ext/zlib/tests/gzseek_variation4.phpt new file mode 100644 index 000000000..fc641f6c8 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation4.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_SET when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +tell=23 +tell=43 +tell=67 + +reading the output file +This is the first line. +string(40) "0000000000000000000000000000000000000000" +This is the second line. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation5.phpt b/ext/zlib/tests/gzseek_variation5.phpt new file mode 100644 index 000000000..0167e204c --- /dev/null +++ b/ext/zlib/tests/gzseek_variation5.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_CUR when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +tell=23 +tell=43 +tell=67 + +reading the output file +This is the first line. +string(40) "0000000000000000000000000000000000000000" +This is the second line. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation6.phpt b/ext/zlib/tests/gzseek_variation6.phpt new file mode 100644 index 000000000..0c4630953 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation6.phpt @@ -0,0 +1,39 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_END when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +move 40 bytes +tell=int(40) +move to the end + +Warning: gzseek(): SEEK_END is not supported in %s on line %d +int(-1) +tell=int(40) +eof=bool(false) +string(10) "iny flying" +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzseek_variation7.phpt b/ext/zlib/tests/gzseek_variation7.phpt new file mode 100644 index 000000000..aab083465 --- /dev/null +++ b/ext/zlib/tests/gzseek_variation7.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test function gzseek() by calling it with SEEK_END when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +tell=int(23) +move to the end of the file + +Warning: gzseek(): SEEK_END is not supported in %s on line %d +int(-1) +tell=int(23) +tell=int(47) + +reading the output file +This is the first line.This is the second line. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gztell_basic.phpt b/ext/zlib/tests/gztell_basic.phpt new file mode 100644 index 000000000..b6baf427d --- /dev/null +++ b/ext/zlib/tests/gztell_basic.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function gztell() by calling it with its expected arguments when reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(0) +int(7) +int(29) +int(83) +int(100) +int(127) +int(142) +int(176) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gztell_basic2.phpt b/ext/zlib/tests/gztell_basic2.phpt new file mode 100644 index 000000000..a8574eeaa --- /dev/null +++ b/ext/zlib/tests/gztell_basic2.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test function gztell() by calling it with its expected arguments when writing +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(0) +bytes written=7 +tell=7 +bytes written=22 +tell=29 +bytes written=54 +tell=83 +bytes written=17 +tell=100 +bytes written=27 +tell=127 +bytes written=15 +tell=142 +bytes written=1000 +tell=1142 +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gztell_error.phpt b/ext/zlib/tests/gztell_error.phpt new file mode 100644 index 000000000..63f3b9cef --- /dev/null +++ b/ext/zlib/tests/gztell_error.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test function gztell() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gztell() in %s on line %d +NULL + +Warning: Wrong parameter count for gztell() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzuncompress_basic1.phpt b/ext/zlib/tests/gzuncompress_basic1.phpt new file mode 100644 index 000000000..fa7f1759e --- /dev/null +++ b/ext/zlib/tests/gzuncompress_basic1.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test gzuncompress() function : basic functionality +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +*** Testing gzuncompress() : basic functionality *** + +-- Basic decompress -- +int(0) + +-- Calling gzuncompress() with max length of 3547 -- +Result length is 3547 +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzuncompress_error1.phpt b/ext/zlib/tests/gzuncompress_error1.phpt new file mode 100644 index 000000000..66e5b2ac4 --- /dev/null +++ b/ext/zlib/tests/gzuncompress_error1.phpt @@ -0,0 +1,84 @@ +--TEST-- +Test gzuncompress() function : error conditions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +*** Testing gzuncompress() : error conditions *** + +-- Testing gzuncompress() function with Zero arguments -- + +Warning: gzuncompress() expects at least 1 parameter, 0 given in %s on line %d +NULL + +-- Testing gzuncompress() function with more than expected no. of arguments -- + +Warning: gzuncompress() expects at most 2 parameters, 3 given in %s on line %d +NULL + +-- Testing with a buffer that is too small -- + +Warning: gzuncompress(): buffer error in %s on line %d +bool(false) + +-- Testing with incorrect arguments -- + +Warning: gzuncompress(): data error in %s on line %d +bool(false) + +Warning: gzuncompress() expects parameter 1 to be string, object given in %s on line %d +NULL + +Warning: gzuncompress() expects parameter 2 to be long, string given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzwrite_basic.phpt b/ext/zlib/tests/gzwrite_basic.phpt new file mode 100644 index 000000000..0d7521625 --- /dev/null +++ b/ext/zlib/tests/gzwrite_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test function gzwrite() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(34) +int(10) +Here is the string to be written. Here is th +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzwrite_error.phpt b/ext/zlib/tests/gzwrite_error.phpt new file mode 100644 index 000000000..b77c64869 --- /dev/null +++ b/ext/zlib/tests/gzwrite_error.phpt @@ -0,0 +1,35 @@ +--TEST-- +Test function gzwrite() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: Wrong parameter count for gzwrite() in %s on line %d +NULL + +Warning: Wrong parameter count for gzwrite() in %s on line %d +NULL + +Warning: Wrong parameter count for gzwrite() in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzwrite_error2.phpt b/ext/zlib/tests/gzwrite_error2.phpt new file mode 100644 index 000000000..691275055 --- /dev/null +++ b/ext/zlib/tests/gzwrite_error2.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test function gzwrite() by calling it invalid lengths +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(0) +int(0) + +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/gzwrite_variation1.phpt b/ext/zlib/tests/gzwrite_variation1.phpt new file mode 100644 index 000000000..bd3778e36 --- /dev/null +++ b/ext/zlib/tests/gzwrite_variation1.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test function gzwrite() by calling it when file is opened for reading +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +int(0) +string(10) "When you'r" +int(0) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_basic.phpt b/ext/zlib/tests/readgzfile_basic.phpt new file mode 100644 index 000000000..2d180c1a5 --- /dev/null +++ b/ext/zlib/tests/readgzfile_basic.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function readgzfile() reading a gzip relative file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +hello world +is a very common test +for all languages +int(52) +===DONE=== diff --git a/ext/zlib/tests/readgzfile_basic2.phpt b/ext/zlib/tests/readgzfile_basic2.phpt new file mode 100644 index 000000000..99d216a55 --- /dev/null +++ b/ext/zlib/tests/readgzfile_basic2.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function readgzfile() reading a plain relative file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +hello world +is a very common test +for all languages +int(52) +===DONE=== diff --git a/ext/zlib/tests/readgzfile_error.phpt b/ext/zlib/tests/readgzfile_error.phpt new file mode 100644 index 000000000..4ec76d017 --- /dev/null +++ b/ext/zlib/tests/readgzfile_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test function readgzfile() by calling it more than or less than its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: readgzfile() expects at most 2 parameters, 3 given in %s on line %d +NULL + +Warning: readgzfile() expects at least 1 parameter, 0 given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation1.phpt b/ext/zlib/tests/readgzfile_variation1.phpt new file mode 100644 index 000000000..e31824ce1 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation1.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with array values. +--SKIPIF-- + +--FILE-- + 'one', 2 => 'two'); + +$variation = array( + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 1 to be string, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation10.phpt b/ext/zlib/tests/readgzfile_variation10.phpt new file mode 100644 index 000000000..29249a1f2 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation10.phpt @@ -0,0 +1,67 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with emptyUnsetUndefNull values. +--SKIPIF-- + +--FILE-- + @$unset_var, + 'undefined var' => @$undefined_var, + 'empty string DQ' => "", + 'empty string SQ' => '', + 'uppercase NULL' => NULL, + 'lowercase null' => null, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation11.phpt b/ext/zlib/tests/readgzfile_variation11.phpt new file mode 100644 index 000000000..4023211ff --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation11.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with float values. +--SKIPIF-- + +--FILE-- + 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation12.phpt b/ext/zlib/tests/readgzfile_variation12.phpt new file mode 100644 index 000000000..8c291a4f4 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation12.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with int values. +--SKIPIF-- + +--FILE-- + 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation13.phpt b/ext/zlib/tests/readgzfile_variation13.phpt new file mode 100644 index 000000000..117860eb4 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation13.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with object values. +--SKIPIF-- + +--FILE-- + new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- +Error: 2 - readgzfile() expects parameter 2 to be long, object given, %s(%d) +NULL +Error: 2 - readgzfile() expects parameter 2 to be long, object given, %s(%d) +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation14.phpt b/ext/zlib/tests/readgzfile_variation14.phpt new file mode 100644 index 000000000..165bf59b8 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation14.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with string values. +--SKIPIF-- + +--FILE-- + "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc + ); + + +foreach ( $variation_array as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, string given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation15.phpt b/ext/zlib/tests/readgzfile_variation15.phpt new file mode 100644 index 000000000..43935b10a --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation15.phpt @@ -0,0 +1,93 @@ +--TEST-- +Test readgzfile() function : variation: use include path (relative directories in path) +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +file content:This is a file in dir2 +file content:This is a file in dir1 +file content:This is a file in dir1 +file content: +file content:This is a file in script dir +===DONE=== diff --git a/ext/zlib/tests/readgzfile_variation2.phpt b/ext/zlib/tests/readgzfile_variation2.phpt new file mode 100644 index 000000000..367cc401b --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation2.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with boolean values. +--SKIPIF-- + +--FILE-- + true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation3.phpt b/ext/zlib/tests/readgzfile_variation3.phpt new file mode 100644 index 000000000..6645d67b7 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation3.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with emptyUnsetUndefNull values. +--SKIPIF-- + +--FILE-- + @$unset_var, + 'undefined var' => @$undefined_var, + 'empty string DQ' => "", + 'empty string SQ' => '', + 'uppercase NULL' => NULL, + 'lowercase null' => null, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) + +Warning: readgzfile(): Filename cannot be empty in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation4.phpt b/ext/zlib/tests/readgzfile_variation4.phpt new file mode 100644 index 000000000..cbc561c71 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation4.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with float values. +--SKIPIF-- + +--FILE-- + 10.5, + 'float -10.5' => -10.5, + 'float 12.3456789000e10' => 12.3456789000e10, + 'float -12.3456789000e10' => -12.3456789000e10, + 'float .5' => .5, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/zlib/tests/readgzfile_variation5.phpt b/ext/zlib/tests/readgzfile_variation5.phpt new file mode 100644 index 000000000..dde0dabdd --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation5.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with int values. +--SKIPIF-- + +--FILE-- + 0, + 'int 1' => 1, + 'int 12345' => 12345, + 'int -12345' => -2345, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation6.phpt b/ext/zlib/tests/readgzfile_variation6.phpt new file mode 100644 index 000000000..1beeca764 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation6.phpt @@ -0,0 +1,48 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with object values. +--SKIPIF-- + +--FILE-- + new classWithToString(), + 'instance of classWithoutToString' => new classWithoutToString(), + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +--EXPECTF-- +bool(false) +Error: 2 - readgzfile() expects parameter 1 to be string, object given, %s(%d) +NULL \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation7.phpt b/ext/zlib/tests/readgzfile_variation7.phpt new file mode 100644 index 000000000..df244d395 --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation7.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test function readgzfile() by substituting agument 1 with string values. +--SKIPIF-- + +--FILE-- + "string", + 'string SQ' => 'string', + 'mixed case string' => "sTrInG", + 'heredoc' => $heredoc + ); + + +foreach ( $variation_array as $var ) { + var_dump(readgzfile( $var , $use_include_path ) ); +} +?> +===DONE=== +--EXPECTF-- +bool(false) +bool(false) +bool(false) +bool(false) +===DONE=== diff --git a/ext/zlib/tests/readgzfile_variation8.phpt b/ext/zlib/tests/readgzfile_variation8.phpt new file mode 100644 index 000000000..2e155288f --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation8.phpt @@ -0,0 +1,43 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with array values. +--SKIPIF-- + +--FILE-- + 'one', 2 => 'two'); + +$variation = array( + 'empty array' => array(), + 'int indexed array' => $index_array, + 'associative array' => $assoc_array, + 'nested arrays' => array('foo', $index_array, $assoc_array), + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECTF-- + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: readgzfile() expects parameter 2 to be long, array given in %s on line %d +NULL +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/readgzfile_variation9.phpt b/ext/zlib/tests/readgzfile_variation9.phpt new file mode 100644 index 000000000..5cdb5b5da --- /dev/null +++ b/ext/zlib/tests/readgzfile_variation9.phpt @@ -0,0 +1,55 @@ +--TEST-- +Test function readgzfile() by substituting agument 2 with boolean values. +--SKIPIF-- + +--FILE-- + true, + 'lowercase false' =>false, + 'uppercase TRUE' =>TRUE, + 'uppercase FALSE' =>FALSE, + ); + + +foreach ( $variation as $var ) { + var_dump(readgzfile( $filename, $var ) ); +} +?> +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +int(176) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/reading_include_path.inc b/ext/zlib/tests/reading_include_path.inc new file mode 100644 index 000000000..ee71bb9c4 --- /dev/null +++ b/ext/zlib/tests/reading_include_path.inc @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_copy_basic.phpt b/ext/zlib/tests/zlib_scheme_copy_basic.phpt new file mode 100644 index 000000000..028c029e6 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_copy_basic.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test compress.zlib:// scheme with the copy function: compressed to compressed +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +OK: Copy identical +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_copy_variation1.phpt b/ext/zlib/tests/zlib_scheme_copy_variation1.phpt new file mode 100644 index 000000000..3c997ef7e --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_copy_variation1.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test compress.zlib:// scheme with the copy function: compressed to uncompressed +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +OK: Copy identical +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_copy_variation2.phpt b/ext/zlib/tests/zlib_scheme_copy_variation2.phpt new file mode 100644 index 000000000..0b56ec430 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_copy_variation2.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test compress.zlib:// scheme with the copy function: uncompressed to compressed +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +OK: Copy identical +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_dir_basic.phpt b/ext/zlib/tests/zlib_scheme_dir_basic.phpt new file mode 100644 index 000000000..02fe4fd35 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_dir_basic.phpt @@ -0,0 +1,26 @@ +--TEST-- +Test compress.zlib:// scheme with the directory functions +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +bool(false) +bool(false) + +Warning: opendir(compress.zlib://%s/dir.gz): failed to open dir: not implemented in %s on line %d +bool(false) +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_file_basic.phpt b/ext/zlib/tests/zlib_scheme_file_basic.phpt new file mode 100644 index 000000000..b8b60e40e --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_file_basic.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test compress.zlib:// scheme with the file +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +array(6) { + [0]=> + string(36) "When you're taught through feelings +" + [1]=> + string(26) "Destiny flying high above +" + [2]=> + string(38) "all I know is that you can realize it +" + [3]=> + string(18) "Destiny who cares +" + [4]=> + string(19) "as it turns around +" + [5]=> + string(39) "and I know that it descends down on me +" +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_file_get_contents_basic.phpt b/ext/zlib/tests/zlib_scheme_file_get_contents_basic.phpt new file mode 100644 index 000000000..c679c46be --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_file_get_contents_basic.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test compress.zlib:// scheme with the file_get_contents +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_file_put_contents_basic.phpt b/ext/zlib/tests/zlib_scheme_file_put_contents_basic.phpt new file mode 100644 index 000000000..8ea41df5a --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_file_put_contents_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test compress.zlib:// scheme with the file_get_contents +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +Here is some plain +text to be read +and displayed. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_file_read_file_basic.phpt b/ext/zlib/tests/zlib_scheme_file_read_file_basic.phpt new file mode 100644 index 000000000..ef44292c3 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_file_read_file_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test compress.zlib:// scheme with the file_get_contents +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_fopen_basic.phpt b/ext/zlib/tests/zlib_scheme_fopen_basic.phpt new file mode 100644 index 000000000..d6d4514f7 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_fopen_basic.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test compress.zlib:// scheme with the fopen +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_fopen_variation1.phpt b/ext/zlib/tests/zlib_scheme_fopen_variation1.phpt new file mode 100644 index 000000000..8c26492ef --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_fopen_variation1.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test compress.zlib:// scheme with the fopen on a file scheme +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +file=compress.zlib://file://%s/004.txt.gz + +When you're taught through feelings +Destiny flying high above +all I know is that you can realize it +Destiny who cares +as it turns around +and I know that it descends down on me +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_rename_basic.phpt b/ext/zlib/tests/zlib_scheme_rename_basic.phpt new file mode 100644 index 000000000..9de55aa3e --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_rename_basic.phpt @@ -0,0 +1,21 @@ +--TEST-- +Test compress.zlib:// scheme with the unlink function +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: rename(): ZLIB wrapper does not support renaming in %s on line %d +bool(true) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_stat_basic.phpt b/ext/zlib/tests/zlib_scheme_stat_basic.phpt new file mode 100644 index 000000000..10cd9a4b0 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_stat_basic.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test compress.zlib:// scheme with the unlink function +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: stat(): stat failed for compress.zlib://%s/004.txt.gz in %s on line %d + +Warning: lstat(): Lstat failed for compress.zlib://%s/004.txt.gz in %s on line %d +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_stat_basic2.phpt b/ext/zlib/tests/zlib_scheme_stat_basic2.phpt new file mode 100644 index 000000000..e78bcd76c --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_stat_basic2.phpt @@ -0,0 +1,46 @@ +--TEST-- +Test compress.zlib:// scheme with the unlink function +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +file_exists=bool(false) +is_file=bool(false) +is_dir=bool(false) +is_readable=bool(false) + +filesize= +Warning: filesize(): stat failed for compress.zlib://%s004.txt.gz in %s on line %d +bool(false) +filetype= +Warning: filetype(): Lstat failed for compress.zlib://%s004.txt.gz in %s on line %d +bool(false) +fileatime= +Warning: fileatime(): stat failed for compress.zlib://%s004.txt.gz in %s on line %d +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_scheme_unlink_basic.phpt b/ext/zlib/tests/zlib_scheme_unlink_basic.phpt new file mode 100644 index 000000000..b05e45bc6 --- /dev/null +++ b/ext/zlib/tests/zlib_scheme_unlink_basic.phpt @@ -0,0 +1,21 @@ +--TEST-- +Test compress.zlib:// scheme with the unlink function +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: unlink(): ZLIB does not allow unlinking in %s on line %d +bool(true) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt b/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt new file mode 100644 index 000000000..74ccc0dab --- /dev/null +++ b/ext/zlib/tests/zlib_wrapper_fflush_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test function fflush() on a zlib stream wrapper +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +bool(true) +bool(true) +Here is the string to be written.Here is the string to be written. +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_wrapper_flock_basic.phpt b/ext/zlib/tests/zlib_wrapper_flock_basic.phpt new file mode 100644 index 000000000..9cefce4cb --- /dev/null +++ b/ext/zlib/tests/zlib_wrapper_flock_basic.phpt @@ -0,0 +1,19 @@ +--TEST-- +Test function stream_get_meta_data on a zlib stream +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_wrapper_fstat_basic.phpt b/ext/zlib/tests/zlib_wrapper_fstat_basic.phpt new file mode 100644 index 000000000..41f957e80 --- /dev/null +++ b/ext/zlib/tests/zlib_wrapper_fstat_basic.phpt @@ -0,0 +1,19 @@ +--TEST-- +Test function fstat() on zlib wrapper +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +bool(false) +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt b/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt new file mode 100644 index 000000000..53b140ac5 --- /dev/null +++ b/ext/zlib/tests/zlib_wrapper_ftruncate_basic.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test function ftruncate() on zlib wrapper by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- + +Warning: ftruncate(): Can't truncate this stream! in %s on line %d + +Warning: ftruncate(): Can't truncate this stream! in %s on line %d +===DONE=== \ No newline at end of file diff --git a/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt b/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt new file mode 100644 index 000000000..2f76b46d9 --- /dev/null +++ b/ext/zlib/tests/zlib_wrapper_meta_data_basic.phpt @@ -0,0 +1,65 @@ +--TEST-- +Test function stream_get_meta_data on a zlib stream +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECTF-- +no wrapper +array(7) { + ["stream_type"]=> + string(4) "ZLIB" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) +} + +with wrapper +array(9) { + ["wrapper_type"]=> + string(4) "ZLIB" + ["stream_type"]=> + string(4) "ZLIB" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(%d) "compress.zlib://%s/004.txt.gz" + ["timed_out"]=> + bool(false) + ["blocked"]=> + bool(true) + ["eof"]=> + bool(false) +} +===DONE=== \ No newline at end of file diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 6b6c45453..3649acd50 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zlib.c,v 1.183.2.6.2.6 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: zlib.c,v 1.183.2.6.2.8 2008/12/31 11:17:47 sebastian Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -156,6 +156,19 @@ zend_module_entry php_zlib_module_entry = { ZEND_GET_MODULE(php_zlib) #endif +/* {{{ Memory management wrappers */ + +static voidpf php_zlib_alloc(voidpf opaque, uInt items, uInt size) +{ + return (voidpf)safe_emalloc(items, size, 0); +} + +static void php_zlib_free(voidpf opaque, voidpf address) +{ + efree((void*)address); +} +/* }}} */ + /* {{{ OnUpdate_zlib_output_compression */ static PHP_INI_MH(OnUpdate_zlib_output_compression) { @@ -491,8 +504,8 @@ static PHP_FUNCTION(gzdeflate) } stream.data_type = Z_ASCII; - stream.zalloc = (alloc_func) Z_NULL; - stream.zfree = (free_func) Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; stream.opaque = (voidpf) Z_NULL; stream.next_in = (Bytef *) data; @@ -566,8 +579,8 @@ static PHP_FUNCTION(gzinflate) that should be enaugh for all real life cases */ - stream.zalloc = (alloc_func) Z_NULL; - stream.zfree = (free_func) Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; do { length = plength ? plength : (unsigned long)data_len * (1 << factor++); @@ -681,8 +694,8 @@ static int php_deflate_string(const char *str, uint str_length, char **newstr, u int err; if (do_start) { - ZLIBG(stream).zalloc = Z_NULL; - ZLIBG(stream).zfree = Z_NULL; + ZLIBG(stream).zalloc = php_zlib_alloc; + ZLIBG(stream).zfree = php_zlib_free; ZLIBG(stream).opaque = Z_NULL; switch (ZLIBG(compression_coding)) { @@ -771,8 +784,8 @@ static PHP_FUNCTION(gzencode) RETURN_FALSE; } - stream.zalloc = Z_NULL; - stream.zfree = Z_NULL; + stream.zalloc = php_zlib_alloc; + stream.zfree = php_zlib_free; stream.opaque = Z_NULL; stream.next_in = (Bytef *) data; diff --git a/ext/zlib/zlib_filter.c b/ext/zlib/zlib_filter.c index e168c407f..55943cd00 100644 --- a/ext/zlib/zlib_filter.c +++ b/ext/zlib/zlib_filter.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zlib_filter.c,v 1.6.2.2.2.11 2008/02/12 23:29:18 cellog Exp $ */ +/* $Id: zlib_filter.c,v 1.6.2.2.2.13 2008/12/31 11:17:47 sebastian Exp $ */ #include "php.h" #include "php_zlib.h" @@ -31,6 +31,7 @@ typedef struct _php_zlib_filter_data { size_t inbuf_len; char *outbuf; size_t outbuf_len; + zend_bool finished; } php_zlib_filter_data; /* }}} */ @@ -81,6 +82,12 @@ static php_stream_filter_status_t php_zlib_inflate_filter( bucket = php_stream_bucket_make_writeable(buckets_in->head TSRMLS_CC); while (bin < bucket->buflen) { + + if (data->finished) { + consumed += bucket->buflen; + break; + } + desired = bucket->buflen - bin; if (desired > data->inbuf_len) { desired = data->inbuf_len; @@ -89,7 +96,10 @@ static php_stream_filter_status_t php_zlib_inflate_filter( data->strm.avail_in = desired; status = inflate(&(data->strm), flags & PSFS_FLAG_FLUSH_CLOSE ? Z_FINISH : Z_SYNC_FLUSH); - if (status != Z_OK && status != Z_STREAM_END) { + if (status == Z_STREAM_END) { + inflateEnd(&(data->strm)); + data->finished = '\1'; + } else if (status != Z_OK) { /* Something bad happened */ php_stream_bucket_delref(bucket TSRMLS_CC); return PSFS_ERR_FATAL; @@ -118,7 +128,7 @@ static php_stream_filter_status_t php_zlib_inflate_filter( php_stream_bucket_delref(bucket TSRMLS_CC); } - if (flags & PSFS_FLAG_FLUSH_CLOSE) { + if (!data->finished && flags & PSFS_FLAG_FLUSH_CLOSE) { /* Spit it out! */ status = Z_OK; while (status == Z_OK) { @@ -146,7 +156,9 @@ static void php_zlib_inflate_dtor(php_stream_filter *thisfilter TSRMLS_DC) { if (thisfilter && thisfilter->abstract) { php_zlib_filter_data *data = thisfilter->abstract; - inflateEnd(&(data->strm)); + if (!data->finished) { + inflateEnd(&(data->strm)); + } pefree(data->inbuf, data->persistent); pefree(data->outbuf, data->persistent); pefree(data, data->persistent); @@ -330,6 +342,7 @@ static php_stream_filter *php_zlib_filter_create(const char *filtername, zval *f } /* RFC 1951 Inflate */ + data->finished = '\0'; status = inflateInit2(&(data->strm), windowBits); fops = &php_zlib_inflate_ops; } else if (strcasecmp(filtername, "zlib.deflate") == 0) { diff --git a/ext/zlib/zlib_fopen_wrapper.c b/ext/zlib/zlib_fopen_wrapper.c index 926a179df..286a523d6 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-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zlib_fopen_wrapper.c,v 1.46.2.1.2.5 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: zlib_fopen_wrapper.c,v 1.46.2.1.2.7 2009/01/20 15:43:05 felipe Exp $ */ #define _GNU_SOURCE @@ -60,6 +60,10 @@ static int php_gziop_seek(php_stream *stream, off_t offset, int whence, off_t *n assert(self != NULL); + if (whence == SEEK_END) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "SEEK_END is not supported"); + return -1; + } *newoffs = gzseek(self->gz_file, offset, whence); return (*newoffs < 0) ? -1 : 0; -- cgit v1.2.3